From fcb9cd4661829f054704fcd6f949a4f69e403f01 Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Thu, 19 Sep 2024 09:47:50 +1000 Subject: [PATCH 01/37] 1.21 Port - Begin suffering, I mean porting to 1.21 --- build.gradle | 78 +++-- common/build.gradle | 2 +- .../sweenus/simplyswords/SimplySwords.java | 7 +- .../renderer/BattleStandardDarkRenderer.java | 2 +- .../renderer/BattleStandardRenderer.java | 2 +- .../model/BattleStandardDarkModel.java | 8 +- .../renderer/model/BattleStandardModel.java | 8 +- .../compat/EldritchEndCompat.java | 8 +- .../simplyswords/compat/GobberCompat.java | 2 +- .../EldritchEndCompatMaterial.java | 12 +- .../EldritchEndCompatMethods.java | 21 +- .../EldritchEndCompatRegistry.java | 4 +- .../compat/eldritch_end/VoidhungerEffect.java | 3 +- .../effect/AstralShiftEffect.java | 3 +- .../effect/BattleFatigueEffect.java | 3 +- .../simplyswords/effect/EchoEffect.java | 5 +- .../effect/ElementalVortexEffect.java | 9 +- .../effect/FatalFlickerEffect.java | 5 +- .../simplyswords/effect/FireVortexEffect.java | 5 +- .../simplyswords/effect/FlameSeedEffect.java | 7 +- .../simplyswords/effect/FreezeEffect.java | 3 +- .../simplyswords/effect/FrenzyEffect.java | 5 +- .../effect/FrostVortexEffect.java | 5 +- .../effect/HighOrbitingEffect.java | 3 +- .../simplyswords/effect/ImmolationEffect.java | 9 +- .../simplyswords/effect/MagislamEffect.java | 9 +- .../simplyswords/effect/MagistormEffect.java | 5 +- .../simplyswords/effect/OnslaughtEffect.java | 9 +- .../simplyswords/effect/OrbitingEffect.java | 3 +- .../simplyswords/effect/PainEffect.java | 5 +- .../simplyswords/effect/ResilienceEffect.java | 3 +- .../effect/RibboncleaveEffect.java | 5 +- .../effect/RibbonwrathEffect.java | 3 +- .../effect/SmoulderingEffect.java | 3 +- .../simplyswords/effect/SporeSwarmEffect.java | 7 +- .../simplyswords/effect/StormEffect.java | 3 +- .../effect/VoidAssaultEffect.java | 5 +- .../simplyswords/effect/VoidcloakEffect.java | 3 +- .../simplyswords/effect/WardEffect.java | 3 +- .../effect/WideOrbitingEffect.java | 3 +- .../simplyswords/effect/WildfireEffect.java | 3 +- .../entity/BattleStandardDarkEntity.java | 6 +- .../entity/BattleStandardEntity.java | 20 +- .../entity/SimplySwordsBeeEntity.java | 9 +- .../simplyswords/item/GobberEndSwordItem.java | 2 +- .../item/GobberNetherSwordItem.java | 2 +- .../item/SimplySwordsNetheriteSwordItem.java | 2 +- .../item/SimplySwordsSwordItem.java | 2 +- .../simplyswords/mixin/LivingEntityMixin.java | 6 +- .../mixin/ServerPlayerEntityMixin.java | 20 +- .../simplyswords/registry/EffectRegistry.java | 5 +- .../simplyswords/registry/EntityRegistry.java | 2 +- .../simplyswords/registry/SoundRegistry.java | 330 +++++++++--------- .../simplyswords/util/AbilityMethods.java | 2 +- .../sweenus/simplyswords/util/FileCopier.java | 2 +- .../simplyswords/util/HelperMethods.java | 5 +- .../simplyswords/util/RunicMethods.java | 14 +- .../simplyswords/util/SoundHelper.java | 2 +- fabric/build.gradle | 16 +- forge/build.gradle | 31 +- forge/gradle.properties | 2 +- gradle.properties | 25 +- gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 41 ++- gradlew.bat | 35 +- settings.gradle | 1 + 67 files changed, 474 insertions(+), 402 deletions(-) diff --git a/build.gradle b/build.gradle index 3d92512e..eacc7a52 100644 --- a/build.gradle +++ b/build.gradle @@ -1,36 +1,27 @@ plugins { - id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.2-SNAPSHOT" apply false + id 'dev.architectury.loom' version '1.7.412' apply false + id 'architectury-plugin' version '3.4-SNAPSHOT' + id 'com.github.johnrengelman.shadow' version '8.1.1' apply false } architectury { - minecraft = rootProject.minecraft_version + minecraft = project.minecraft_version } -subprojects { - apply plugin: "dev.architectury.loom" - - loom { - silentMojangMappingsLicense() - } - - dependencies { - minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" - // The following line declares the mojmap mappings, you may use other mappings as well - //mappings loom.officialMojangMappings() - // The following line declares the yarn mappings you may select this one as well. - mappings "net.fabricmc:yarn:${rootProject.yarn_mappings}:v2" - } +allprojects { + group = rootProject.maven_group + version = rootProject.mod_version } -allprojects { - apply plugin: "java" - apply plugin: "architectury-plugin" - apply plugin: "maven-publish" +subprojects { + apply plugin: 'dev.architectury.loom' + apply plugin: 'architectury-plugin' + apply plugin: 'maven-publish' - archivesBaseName = rootProject.archives_base_name - version = rootProject.mod_version - group = rootProject.maven_group + base { + // Set up a suffixed format for the mod jar names, e.g. `example-fabric`. + archivesName = "$rootProject.archives_name-$project.name" + } repositories { // Add repositories to retrieve artifacts from in here. @@ -40,12 +31,43 @@ allprojects { // for more information about repositories. } - tasks.withType(JavaCompile) { - options.encoding = "UTF-8" - options.release = 17 + dependencies { + minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" + mappings loom.layered { + it.mappings("net.fabricmc:yarn:$rootProject.yarn_mappings:v2") + it.mappings("dev.architectury:yarn-mappings-patch-neoforge:$rootProject.yarn_mappings_patch_neoforge_version") + } } java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } -} + + tasks.withType(JavaCompile).configureEach { + it.options.release = 21 + } + + // Configure Maven publishing. + publishing { + publications { + mavenJava(MavenPublication) { + artifactId = base.archivesName.get() + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } + } +} \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle index 94c7d227..ddd5c7ba 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -35,7 +35,7 @@ dependencies { // Do NOT use other classes from fabric loader modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" // Remove the next line if you don't want to depend on the API - modApi "dev.architectury:architectury:${rootProject.architectury_version}" + modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" modApi("me.shedaniel.cloth:cloth-config:${rootProject.cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index f2d5bd1a..ee07e809 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -26,7 +26,6 @@ import net.sweenus.simplyswords.client.renderer.BattleStandardRenderer; import net.sweenus.simplyswords.client.renderer.model.BattleStandardDarkModel; import net.sweenus.simplyswords.client.renderer.model.BattleStandardModel; -import net.sweenus.simplyswords.compat.EldritchEndCompat; import net.sweenus.simplyswords.compat.eldritch_end.EldritchEndCompatRegistry; import net.sweenus.simplyswords.config.*; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; @@ -119,7 +118,7 @@ public static void init() { EntityAttributeRegistry.register(EntityRegistry.SIMPLYBEEENTITY, SimplySwordsBeeEntity::createSimplyBeeAttributes); ModLootTableModifiers.init(); if (passVersionCheck("eldritch_end", minimumEldritchEndVersion)) { - EldritchEndCompat.registerModItems(); + //EldritchEndCompat.registerModItems(); 1.21 EldritchEndCompatRegistry.EFFECT.register(); } try { @@ -147,8 +146,8 @@ public static boolean passVersionCheck(String modId, String requiredVersion) { @Environment(EnvType.CLIENT) public static class Client { - public static final EntityModelLayer BATTLESTANDARD_MODEL = new EntityModelLayer(new Identifier("battlestandard", "cube"), "main"); - public static final EntityModelLayer BATTLESTANDARD_DARK_MODEL = new EntityModelLayer(new Identifier("battlestandarddark", "cube"), "main"); + public static final EntityModelLayer BATTLESTANDARD_MODEL = new EntityModelLayer(Identifier.of("battlestandard", "cube"), "main"); + public static final EntityModelLayer BATTLESTANDARD_DARK_MODEL = new EntityModelLayer(Identifier.of("battlestandarddark", "cube"), "main"); @Environment(EnvType.CLIENT) public static void initializeClient() { diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardDarkRenderer.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardDarkRenderer.java index 8b3c9618..9bc30f70 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardDarkRenderer.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardDarkRenderer.java @@ -13,7 +13,7 @@ public class BattleStandardDarkRenderer extends MobEntityRenderer { - private static final Identifier TEXTURE = new Identifier("simplyswords","textures/entity/battlestandard/battlestandarddark_texture.png"); + private static final Identifier TEXTURE = Identifier.of("simplyswords","textures/entity/battlestandard/battlestandarddark_texture.png"); public BattleStandardDarkRenderer(EntityRendererFactory.Context context) { super(context, new BattleStandardDarkModel(context.getPart(SimplySwords.Client.BATTLESTANDARD_DARK_MODEL)), 0.1f); diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardRenderer.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardRenderer.java index 21a1b213..164511ab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardRenderer.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/BattleStandardRenderer.java @@ -13,7 +13,7 @@ public class BattleStandardRenderer extends MobEntityRenderer { - private static final Identifier TEXTURE = new Identifier("simplyswords","textures/entity/battlestandard/battlestandard_texture.png"); + private static final Identifier TEXTURE = Identifier.of("simplyswords","textures/entity/battlestandard/battlestandard_texture.png"); public BattleStandardRenderer(EntityRendererFactory.Context context) { super(context, new BattleStandardModel(context.getPart(SimplySwords.Client.BATTLESTANDARD_MODEL)), 0.1f); diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java index 9cc8de94..4c6cb917 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java @@ -29,14 +29,14 @@ public static TexturedModelData getTexturedModelData() { ModelPartData bb_main = modelPartData.addChild("bb_main", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -29.75F, -0.25F, 9.0F, 17.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 24.0F, 0.0F)); return TexturedModelData.of(modelData, 64, 64); } + @Override - public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) { - supports.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); - bb_main.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); + public void setAngles(BattleStandardDarkEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { + } @Override - public void setAngles(BattleStandardDarkEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { + public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) { } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java index 60e41fba..2d642ae8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java @@ -29,14 +29,14 @@ public static TexturedModelData getTexturedModelData() { ModelPartData bb_main = modelPartData.addChild("bb_main", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -29.75F, -0.25F, 9.0F, 17.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 24.0F, 0.0F)); return TexturedModelData.of(modelData, 64, 64); } + @Override - public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) { - supports.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); - bb_main.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); + public void setAngles(BattleStandardEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { + } @Override - public void setAngles(BattleStandardEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) { + public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) { } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java index 846ec637..1b64af87 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java @@ -1,14 +1,9 @@ package net.sweenus.simplyswords.compat; import dev.architectury.registry.registries.DeferredRegister; -import dev.architectury.registry.registries.RegistrySupplier; import net.minecraft.item.Item; -import net.minecraft.util.Rarity; -import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.compat.eldritch_end.EldritchEndCompatMaterial; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.item.custom.DreadtideSwordItem; import net.sweenus.simplyswords.registry.ItemsRegistry; public class EldritchEndCompat { @@ -18,7 +13,7 @@ public class EldritchEndCompat { static float dreadtide_attackspeed = Config.getFloat("dreadtide_attackSpeed", "WeaponAttributes", ConfigDefaultValues.dreadtide_attackSpeed); public static final DeferredRegister ITEM = ItemsRegistry.ITEM; - +/* public static final RegistrySupplier DREADTIDE = ITEM.register( "dreadtide", () -> new DreadtideSwordItem(EldritchEndCompatMaterial.ABERRATION, (int) (dreadtide_damage_modifier), @@ -28,5 +23,6 @@ public class EldritchEndCompat { public static void registerModItems() { SimplySwords.LOGGER.info("Registering Eldritch End compat Items for " + SimplySwords.MOD_ID); } + */ } diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java index de45af3a..10b914d1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java @@ -269,7 +269,7 @@ public class GobberCompat { private static Item registerItem(String name, Item item) { - return Registry.register(Registries.ITEM, new Identifier(SimplySwords.MOD_ID, name), item); + return Registry.register(Registries.ITEM, Identifier.of(SimplySwords.MOD_ID, name), item); } diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMaterial.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMaterial.java index 631766c6..90afd5dd 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMaterial.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMaterial.java @@ -1,18 +1,18 @@ package net.sweenus.simplyswords.compat.eldritch_end; import com.google.common.base.Suppliers; -import net.fabricmc.yarn.constants.MiningLevels; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ToolMaterial; import net.minecraft.recipe.Ingredient; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.registry.tag.TagKey; import java.util.function.Supplier; public enum EldritchEndCompatMaterial implements ToolMaterial { + ; - ABERRATION(MiningLevels.NETHERITE, 3270, 15.0f, 5.0f, 30, Registries.ITEM.get(new Identifier("eldritch_end:aberration_heart"))); + //ABERRATION(MiningLevels.NETHERITE, 3270, 15.0f, 5.0f, 30, Registries.ITEM.get(Identifier.of("eldritch_end:aberration_heart"))); 1.21 private final int miningLevel; private final int itemDurability; @@ -46,8 +46,8 @@ public float getAttackDamage() { } @Override - public int getMiningLevel() { - return this.miningLevel; + public TagKey getInverseTag() { + return null; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java index 81975135..ed1c0711 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java @@ -1,30 +1,21 @@ package net.sweenus.simplyswords.compat.eldritch_end; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.compat.EldritchEndCompat; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.registry.EffectRegistry; -import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.util.HelperMethods; public class EldritchEndCompatMethods { public static void generateVoidcloakStacks(LivingEntity livingEntity) { + /* if (livingEntity instanceof PlayerEntity player) { ItemStack stack = player.getMainHandStack(); - if (player.age % 180 == 0 && Registries.ATTRIBUTE.get(new Identifier("eldritch_end:corruption")) != null) { - double corruption = livingEntity.getAttributeValue(Registries.ATTRIBUTE.get(new Identifier("eldritch_end:corruption"))); + if (player.age % 180 == 0 && Registries.ATTRIBUTE.get(Identifier.of("eldritch_end:corruption")) != null) { + double corruption = livingEntity.getAttributeValue(Registries.ATTRIBUTE.get(Identifier.of("eldritch_end:corruption"))); int maxStacks = ((int) corruption / 20); if (!stack.isEmpty() && (stack.isOf(EldritchEndCompat.DREADTIDE.get()))) { - HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.VOIDCLOAK.get(), 280, 1, maxStacks-1); + HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.VOIDCLOAK, 280, 1, maxStacks-1); livingEntity.getWorld().playSound(null, livingEntity.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), livingEntity.getSoundCategory(), 0.1f, 1.4f); } @@ -41,9 +32,9 @@ public static void generateVoidhungerStacks(LivingEntity livingEntity, ItemStack int voidcallerCorruptionDuration = (int) Config.getFloat("voidcallerCorruptionDuration", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionDuration); int voidcallerCorruptionMax = (int) Config.getFloat("voidcallerCorruptionMax", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionMax); if (!stack.isEmpty() && (stack.isOf(EldritchEndCompat.DREADTIDE.get()))) { - HelperMethods.incrementStatusEffect(livingEntity, EldritchEndCompatRegistry.VOIDHUNGER.get(), voidcallerCorruptionDuration, voidcallerCorruptionPerTick, voidcallerCorruptionMax); + HelperMethods.incrementStatusEffect(livingEntity, EldritchEndCompatRegistry.VOIDHUNGER, voidcallerCorruptionDuration, voidcallerCorruptionPerTick, voidcallerCorruptionMax); } + */ } - } diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java index 3d1b35eb..a7cb013c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java @@ -16,10 +16,10 @@ public class EldritchEndCompatRegistry { public static final RegistrySupplier VOIDHUNGER = EFFECT.register("voidhunger", () -> new VoidhungerEffect(StatusEffectCategory.HARMFUL, 1124687) - .addAttributeModifier(Registries.ATTRIBUTE.get(new Identifier("eldritch_end:corruption")), + .addAttributeModifier(Registries.ATTRIBUTE.get(Identifier.of("eldritch_end:corruption")), "03360b9d-c99b-4525-826a-ff5da528ebc2", 1.0, - EntityAttributeModifier.Operation.ADDITION)); + EntityAttributeModifier.Operation.ADD_VALUE)); } diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/VoidhungerEffect.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/VoidhungerEffect.java index 0e9e8136..13c1f2d1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/VoidhungerEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/VoidhungerEffect.java @@ -10,8 +10,9 @@ public VoidhungerEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { super.applyUpdateEffect(livingEntity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java index cdcea18d..52a25a46 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java @@ -24,7 +24,7 @@ public AstralShiftEffect(StatusEffectCategory statusEffectCategory, int color) { super (statusEffectCategory, color); } @Override - public void applyUpdateEffect(LivingEntity entity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { if (!entity.getWorld().isClient()) { ServerWorld world = (ServerWorld) entity.getWorld(); @@ -71,6 +71,7 @@ public void applyUpdateEffect(LivingEntity entity, int amplifier) { } super.applyUpdateEffect(entity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/BattleFatigueEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/BattleFatigueEffect.java index 2decd760..8d633236 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/BattleFatigueEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/BattleFatigueEffect.java @@ -10,10 +10,11 @@ public BattleFatigueEffect(StatusEffectCategory statusEffectCategory, int color) } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java index b927ce1a..3093f65e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java @@ -13,16 +13,17 @@ public EchoEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { int damage = Config.getInt("echoDamage", "StatusEffects", ConfigDefaultValues.echoDamage); if (livingEntity.age % 15 == 0) { livingEntity.timeUntilRegen = 0; livingEntity.damage(livingEntity.getDamageSources().magic(), damage+amplifier); - livingEntity.removeStatusEffect(EffectRegistry.ECHO.get()); + livingEntity.removeStatusEffect(EffectRegistry.ECHO); } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java index d78986c6..6274fbb3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java @@ -32,14 +32,14 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); float abilityDamageFire = 0; float abilityDamageFrost = 0; SoundHelper.loopSound(livingEntity, SoundRegistry.AMBIENCE_WIND_LOOP.getId(), 20); - if (livingEntity.getStatusEffect(EffectRegistry.ELEMENTAL_VORTEX.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.ELEMENTAL_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -72,13 +72,14 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override - public void onRemoved(LivingEntity entity, AttributeContainer attributes, int amplifier) { + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { SoundHelper.stopLoopingSound(entity, SoundRegistry.AMBIENCE_WIND_LOOP.getId()); - super.onRemoved(entity, attributes, amplifier); + super.onRemoved(attributes); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java index b34f480e..3da6d359 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java @@ -56,13 +56,13 @@ public static void performDash(LivingEntity user, World world, int radius) { } @Override - public void applyUpdateEffect(LivingEntity user, int amplifier) { + public boolean applyUpdateEffect(LivingEntity user, int amplifier) { super.applyUpdateEffect(user, amplifier); if (!user.getWorld().isClient()) { - int ability_timer = Objects.requireNonNull(user.getStatusEffect(EffectRegistry.FATAL_FLICKER.get())).getDuration(); + int ability_timer = Objects.requireNonNull(user.getStatusEffect(EffectRegistry.FATAL_FLICKER)).getDuration(); World world = user.getWorld(); int radius = (int) Config.getFloat("fatalFlickerRadius", "UniqueEffects", ConfigDefaultValues.fatalFlickerRadius); @@ -96,6 +96,7 @@ public void applyUpdateEffect(LivingEntity user, int amplifier) { } } } + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java index b760265d..c1f1d1af 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java @@ -27,11 +27,11 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); float abilityDamage = 0; - if (livingEntity.getStatusEffect(EffectRegistry.FIRE_VORTEX.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.FIRE_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -56,6 +56,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java index e9436bad..7feab45b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java @@ -34,7 +34,7 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { int duration = 0; if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); @@ -43,7 +43,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { float pitch = 1.3f; int frequency = 20; SoundEvent soundEvent = SoundEvents.ENTITY_GENERIC_BURN; - if (livingEntity.getStatusEffect(EffectRegistry.FLAMESEED.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.FLAMESEED) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); duration = statusEffect.getDuration(); @@ -73,7 +73,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { for (Entity entity : serverWorld.getOtherEntities(livingEntity, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, sourceEntity)) { le.damage(damageSource, (abilityDamage)); - if (!le.hasStatusEffect(EffectRegistry.FLAMESEED.get()) && additionalData > 0) { + if (!le.hasStatusEffect(EffectRegistry.FLAMESEED) && additionalData > 0) { additionalData -= 1; SimplySwordsStatusEffectInstance flamSeedEffect = new SimplySwordsStatusEffectInstance( EffectRegistry.FLAMESEED.get(), 101, 0, false, @@ -106,6 +106,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java index 568d3367..1726864e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java @@ -10,7 +10,7 @@ public FreezeEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { double x = pLivingEntity.getX(); double y = pLivingEntity.getY(); @@ -22,6 +22,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java index b3d810a8..fd5ba37c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java @@ -13,12 +13,13 @@ public FrenzyEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (!(livingEntity.getMainHandStack().getItem() instanceof WickpiercerSwordItem) && !(livingEntity.getOffHandStack().getItem() instanceof WickpiercerSwordItem)) - livingEntity.removeStatusEffect(EffectRegistry.FRENZY.get()); + livingEntity.removeStatusEffect(EffectRegistry.FRENZY); } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java index 6bfb8dcb..c134fcc1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java @@ -27,11 +27,11 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); float abilityDamage = 0; - if (livingEntity.getStatusEffect(EffectRegistry.FROST_VORTEX.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.FROST_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -56,6 +56,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/HighOrbitingEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/HighOrbitingEffect.java index c535a4bc..86ef4821 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/HighOrbitingEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/HighOrbitingEffect.java @@ -22,7 +22,7 @@ public HighOrbitingEffect(StatusEffectCategory statusEffectCategory, int color) private double currentAngle = 0.0; @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); Vec3d center = livingEntity.getPos().add(0, (livingEntity.getHeight() + yOffset), 0); // Center around the entity's waist @@ -51,6 +51,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } private void spawnParticles(ServerWorld serverWorld, double x, double y, double z) { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java index 67b8471e..eceeb463 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java @@ -24,7 +24,7 @@ public ImmolationEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { if (pLivingEntity instanceof PlayerEntity player) { if (pLivingEntity.age % 15 == 0) { @@ -49,7 +49,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (rpnbt != null) { if (!player.getMainHandStack().getNbt().getString("runic_power").equals("immolation") && !player.getMainHandStack().getNbt().getString("nether_power").equals("radiance")) { - player.removeStatusEffect(EffectRegistry.IMMOLATION.get()); + player.removeStatusEffect(EffectRegistry.IMMOLATION); } } } @@ -59,12 +59,12 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (rpnbt != null) { if (!player.getOffHandStack().getNbt().getString("runic_power").equals("immolation") && !player.getOffHandStack().getNbt().getString("nether_power").equals("radiance")) { - player.removeStatusEffect(EffectRegistry.IMMOLATION.get()); + player.removeStatusEffect(EffectRegistry.IMMOLATION); } } } } - else {player.removeStatusEffect(EffectRegistry.IMMOLATION.get());} + else {player.removeStatusEffect(EffectRegistry.IMMOLATION);} //Damage @@ -86,6 +86,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java index 6e6dd68c..e08ee29e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java @@ -26,11 +26,11 @@ public MagislamEffect(StatusEffectCategory statusEffectCategory, int color) { @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (livingEntity instanceof PlayerEntity player) { - int ability_timer = Objects.requireNonNull(player.getStatusEffect(EffectRegistry.MAGISLAM.get())).getDuration(); + int ability_timer = Objects.requireNonNull(player.getStatusEffect(EffectRegistry.MAGISLAM)).getDuration(); int radius = (int) Config.getFloat("magislamRadius", "UniqueEffects", ConfigDefaultValues.magislamRadius); double leapVelocity = 1.5; double height = 0.9; @@ -61,13 +61,14 @@ else if (ability_timer <= 50) { HelperMethods.spawnOrbitParticles((ServerWorld) player.getWorld(), player.getPos(), ParticleTypes.EXPLOSION, 1, 3); player.getWorld().playSoundFromEntity(null, player, SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.PLAYERS, 0.9f, 1.1f); - player.removeStatusEffect(EffectRegistry.MAGISLAM.get()); - player.removeStatusEffect(EffectRegistry.RESILIENCE.get()); + player.removeStatusEffect(EffectRegistry.MAGISLAM); + player.removeStatusEffect(EffectRegistry.RESILIENCE); } } } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java index 5ff27a3a..962fd323 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java @@ -30,7 +30,7 @@ public MagistormEffect(StatusEffectCategory statusEffectCategory, int color) { width = 4; } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld world = (ServerWorld) livingEntity.getWorld(); double x = livingEntity.getX(); @@ -65,13 +65,14 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { SoundCategory.PLAYERS, 0.1f, 1.0f + (player.getRandom().nextFloat())); if (new Random().nextInt(100) < 5) - HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.MAGISTORM.get(), (int) duration, 1, 10); + HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.MAGISTORM, (int) duration, 1, 10); } } } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java index 860d3413..25ee301f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java @@ -14,7 +14,7 @@ public OnslaughtEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { if (pLivingEntity instanceof PlayerEntity) { @@ -31,14 +31,14 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { } //If Onslaught is expiring, remove all haste and grant weakness. Also expire Onslaught early. - if (pLivingEntity.hasStatusEffect(EffectRegistry.ONSLAUGHT.get())) { - StatusEffectInstance statusEffect = pLivingEntity.getStatusEffect(EffectRegistry.ONSLAUGHT.get()); + if (pLivingEntity.hasStatusEffect(EffectRegistry.ONSLAUGHT)) { + StatusEffectInstance statusEffect = pLivingEntity.getStatusEffect(EffectRegistry.ONSLAUGHT); assert statusEffect != null; if (statusEffect.getDuration() < 10 && pLivingEntity.hasStatusEffect(StatusEffects.HASTE)) { pLivingEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 80, 0), pLivingEntity); pLivingEntity.removeStatusEffect(StatusEffects.HASTE); - pLivingEntity.removeStatusEffect(EffectRegistry.ONSLAUGHT.get()); + pLivingEntity.removeStatusEffect(EffectRegistry.ONSLAUGHT); } } } @@ -46,6 +46,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java index a4c214ef..c03c8ce3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java @@ -17,7 +17,7 @@ public OrbitingEffect(StatusEffectCategory statusEffectCategory, int color) { private double currentAngle = 0.0; @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); Vec3d center = livingEntity.getPos().add(0, livingEntity.getHeight() / 2.0, 0); // Center around the entity's waist @@ -50,6 +50,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } // Protected method to set the particle type diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java index 3f682306..f77043da 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java @@ -23,11 +23,11 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { int startingTickFrequency = 15; - if (livingEntity.getStatusEffect(EffectRegistry.PAIN.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.PAIN) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -44,6 +44,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ResilienceEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ResilienceEffect.java index 8315479e..701a984f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ResilienceEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ResilienceEffect.java @@ -9,10 +9,11 @@ public ResilienceEffect(StatusEffectCategory statusEffectCategory, int color) { super (statusEffectCategory, color); } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java index f44afdf3..e5d7da16 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java @@ -13,12 +13,13 @@ public RibboncleaveEffect(StatusEffectCategory statusEffectCategory, int color) } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (!(livingEntity.getMainHandStack().getItem() instanceof RibboncleaverSwordItem)) - livingEntity.removeStatusEffect(EffectRegistry.RIBBONCLEAVE.get()); + livingEntity.removeStatusEffect(EffectRegistry.RIBBONCLEAVE); } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/RibbonwrathEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/RibbonwrathEffect.java index ad9e278f..9e403e6b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/RibbonwrathEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/RibbonwrathEffect.java @@ -11,10 +11,11 @@ public RibbonwrathEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/SmoulderingEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/SmoulderingEffect.java index 4e43a2c3..cbff8248 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/SmoulderingEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/SmoulderingEffect.java @@ -10,11 +10,12 @@ public SmoulderingEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { } super.applyUpdateEffect(livingEntity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java index 82152688..44c6a5c3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java @@ -21,7 +21,7 @@ public SporeSwarmEffect(StatusEffectCategory statusEffectCategory, int color) { setParticleType3(ParticleTypes.WARPED_SPORE); } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld world = (ServerWorld) livingEntity.getWorld(); double x = livingEntity.getX(); @@ -40,12 +40,12 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if ((livingEntity.getMainHandStack().getItem() instanceof BrambleSwordItem) && (livingEntity.getOffHandStack().getItem() instanceof BrambleSwordItem)) maxAmp = 74; SimplySwordsStatusEffectInstance effect = HelperMethods.incrementSimplySwordsStatusEffect( - ee, EffectRegistry.PAIN.get(), 60, 1, maxAmp); + ee, EffectRegistry.PAIN, 60, 1, maxAmp); effect.setSourceEntity(livingEntity); effect.setAdditionalData(0); ee.addStatusEffect(effect); HelperMethods.spawnWaistHeightParticles(world, ParticleTypes.SMOKE, ee, livingEntity, 10); - HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.SPORE_SWARM.get(), 200, 1, 4); + HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.SPORE_SWARM, 200, 1, 4); } } } @@ -53,6 +53,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { super.applyUpdateEffect(livingEntity, amplifier); + return false; } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java index b2e81fff..bd3bc27c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java @@ -17,7 +17,7 @@ public class StormEffect extends StatusEffect { public StormEffect(StatusEffectCategory statusEffectCategory, int color) {super (statusEffectCategory, color); } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { ServerWorld world = (ServerWorld)pLivingEntity.getWorld(); int hradius = (int) Config.getFloat("stormRadius", "UniqueEffects", ConfigDefaultValues.stormRadius); @@ -46,6 +46,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java index cbbbac37..0e2a1208 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java @@ -24,11 +24,11 @@ public void setAdditionalData(int data) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { int voidcallerStartingTickFrequency = (int) Config.getFloat("voidcallerStartingTickFrequency", "UniqueEffects", ConfigDefaultValues.voidcallerStartingTickFrequency); - if (livingEntity.getStatusEffect(EffectRegistry.VOIDASSAULT.get()) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.VOIDASSAULT) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -42,6 +42,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java index f081b343..96b536b2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java @@ -11,8 +11,9 @@ public VoidcloakEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { super.applyUpdateEffect(livingEntity, amplifier); + return false; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WardEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WardEffect.java index 5b6e5e2b..4053dff0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WardEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WardEffect.java @@ -15,7 +15,7 @@ public WardEffect(StatusEffectCategory statusEffectCategory, int color) { } @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (livingEntity instanceof PlayerEntity) { if (livingEntity.age % 20 == 0) { @@ -24,6 +24,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WideOrbitingEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WideOrbitingEffect.java index 6525ccd4..1c661651 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WideOrbitingEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WideOrbitingEffect.java @@ -21,7 +21,7 @@ public WideOrbitingEffect(StatusEffectCategory statusEffectCategory, int color) private double currentAngle = 0.0; @Override - public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { + public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); Vec3d center = livingEntity.getPos().add(0, (livingEntity.getHeight() / yOffset), 0); // Center around the entity's waist @@ -51,6 +51,7 @@ public void applyUpdateEffect(LivingEntity livingEntity, int amplifier) { } } super.applyUpdateEffect(livingEntity, amplifier); + return true; } private void spawnParticles(ServerWorld serverWorld, double x, double y, double z) { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java index 52ad1061..a6c140e3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java @@ -17,7 +17,7 @@ public class WildfireEffect extends StatusEffect { public WildfireEffect(StatusEffectCategory statusEffectCategory, int color) {super (statusEffectCategory, color); } @Override - public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { + public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { LivingEntity pPlayer = pLivingEntity.getAttacker(); if (pPlayer != null){ @@ -43,6 +43,7 @@ public void applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { super.applyUpdateEffect(pLivingEntity, pAmplifier); + return true; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java index 568e2d62..f47f75db 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java @@ -39,7 +39,8 @@ public class BattleStandardDarkEntity extends PathAwareEntity { public static DefaultAttributeContainer.Builder createBattleStandardDarkAttributes() { return MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 150.0).add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.0f) - .add(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, 100.0f); + .add(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, 100.0f) + .add(EntityAttributes.GENERIC_STEP_HEIGHT, 3.0); } public BattleStandardDarkEntity(EntityType entityType, World world) { @@ -84,7 +85,6 @@ public void baseTick() { if (standardType.equals("enigma")) { radius = 2; - this.setStepHeight(3f); int moveRadius = (int) Config.getFloat("enigmaChaseRadius", "UniqueEffects", ConfigDefaultValues.enigmaChaseRadius); abilityDamage = 1; Box box = HelperMethods.createBox(this, moveRadius); @@ -123,7 +123,7 @@ public void baseTick() { le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 0), this); if (standardType.equals("enigma")) { SimplySwordsStatusEffectInstance effect = HelperMethods.incrementSimplySwordsStatusEffect( - le, EffectRegistry.PAIN.get(), 60, 1, 49); + le, EffectRegistry.PAIN, 60, 1, 49); effect.setSourceEntity(ownerEntity); effect.setAdditionalData(0); le.addStatusEffect(effect); diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java index 3ee3edef..fa9ddff0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java @@ -8,6 +8,8 @@ import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.mob.MobEntity; @@ -112,10 +114,12 @@ public void baseTick() { } //Nullification negative effects case "nullification" -> { - for (StatusEffectInstance statusEffect : le.getStatusEffects()) { - if (statusEffect != null && statusEffect.getEffectType().isBeneficial()) { - le.removeStatusEffect(statusEffect.getEffectType()); - break; + for (StatusEffectInstance statusEffectInstance : le.getStatusEffects()) { + StatusEffect statusEffect = statusEffectInstance.getEffectType().value(); + if (statusEffect != null && statusEffect.isBeneficial()) { + le.removeStatusEffect(statusEffectInstance.getEffectType()); + break; + } } } } @@ -126,7 +130,7 @@ public void baseTick() { if (negativeEffect != null) { try { le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(new Identifier(negativeEffect)), + Registries.STATUS_EFFECT.get(Identifier.of(negativeEffect)), 20, negativeEffectAmplifier), this); } catch (Exception e) { errorCatch(negativeEffect); @@ -136,7 +140,7 @@ public void baseTick() { if (negativeEffectSecondary != null) { try { le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(new Identifier(negativeEffectSecondary)), + Registries.STATUS_EFFECT.get(Identifier.of(negativeEffectSecondary)), 20, negativeEffectAmplifier), this); } catch (Exception e) { errorCatch(negativeEffectSecondary); @@ -202,7 +206,7 @@ public void baseTick() { if (positiveEffect != null) { try { le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(new Identifier(positiveEffect)), + Registries.STATUS_EFFECT.get(Identifier.of(positiveEffect)), 85, positiveEffectAmplifier), this); } catch (Exception e) { errorCatch(positiveEffect); @@ -212,7 +216,7 @@ public void baseTick() { if (positiveEffectSecondary != null) { try { le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(new Identifier(positiveEffectSecondary)), + Registries.STATUS_EFFECT.get(Identifier.of(positiveEffectSecondary)), 85, positiveEffectAmplifier), this); } catch (Exception e) { errorCatch(positiveEffectSecondary); diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/SimplySwordsBeeEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/SimplySwordsBeeEntity.java index 3acb49da..e36320c1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/SimplySwordsBeeEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/SimplySwordsBeeEntity.java @@ -8,7 +8,6 @@ import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.passive.BeeEntity; -import net.minecraft.world.EntityView; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -52,10 +51,10 @@ public UUID getOwnerUuid() { } //I think this is just Entity.getWorld()? What even are mappings - @Override - public EntityView method_48926() { - return this.getWorld(); - } + //@Override + //public EntityView method_48926() { + //return this.getWorld(); + //} 1.21 public void setOwner(LivingEntity livingEntity) { this.ownerUuid = livingEntity.getUuid(); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index 08381d12..c5badcb0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -30,7 +30,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { List potentialIngredients = new ArrayList<>(List.of()); Arrays.stream(repairIngredient).toList().forEach(repIngredient -> potentialIngredients.add( - Registries.ITEM.get(new Identifier(repIngredient)))); + Registries.ITEM.get(Identifier.of(repIngredient)))); return potentialIngredients.contains(ingredient.getItem()); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java index a446bd1c..53f31115 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java @@ -27,7 +27,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { List potentialIngredients = new ArrayList<>(List.of()); Arrays.stream(repairIngredient).toList().forEach(repIngredient -> potentialIngredients.add( - Registries.ITEM.get(new Identifier(repIngredient)))); + Registries.ITEM.get(Identifier.of(repIngredient)))); return potentialIngredients.contains(ingredient.getItem()); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java index c437938b..36f6ce4d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java @@ -28,7 +28,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { List potentialIngredients = new ArrayList<>(List.of()); Arrays.stream(repairIngredient).toList().forEach(repIngredient -> potentialIngredients.add( - Registries.ITEM.get(new Identifier(repIngredient)))); + Registries.ITEM.get(Identifier.of(repIngredient)))); return potentialIngredients.contains(ingredient.getItem()); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java index 09889eac..49b57a6d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java @@ -33,7 +33,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { List potentialIngredients = new ArrayList<>(List.of()); Arrays.stream(repairIngredient).toList().forEach(repIngredient -> potentialIngredients.add( - Registries.ITEM.get(new Identifier(repIngredient)))); + Registries.ITEM.get(Identifier.of(repIngredient)))); return potentialIngredients.contains(ingredient.getItem()); diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java index ec92bad8..7b478791 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java @@ -60,8 +60,8 @@ public abstract class LivingEntityMixin { private float simplyswords$modifyDamageAmount(float amount, DamageSource source) { LivingEntity livingEntity = (LivingEntity) (Object) this; if (!livingEntity.getWorld().isClient()) { - StatusEffectInstance voidcloakEffect = livingEntity.getStatusEffect(EffectRegistry.VOIDCLOAK.get()); - StatusEffectInstance ribbonwrathEffect = livingEntity.getStatusEffect(EffectRegistry.RIBBONWRATH.get()); + StatusEffectInstance voidcloakEffect = livingEntity.getStatusEffect(EffectRegistry.VOIDCLOAK); + StatusEffectInstance ribbonwrathEffect = livingEntity.getStatusEffect(EffectRegistry.RIBBONWRATH); if (voidcloakEffect != null) { int amplifier = voidcloakEffect.getAmplifier(); float reductionFactor = 1 - (amplifier + 1) * 0.10f; // +1 because amplifier starts at 0 @@ -82,7 +82,7 @@ public abstract class LivingEntityMixin { if (!livingEntity.getWorld().isClient()) { if (SimplySwords.passVersionCheck("eldritch_end", minimumEldritchEndVersion) - && Registries.STATUS_EFFECT.get(new Identifier("simplyswords:voidhunger")) != null) + && Registries.STATUS_EFFECT.get(Identifier.of("simplyswords:voidhunger")) != null) EldritchEndCompatMethods.generateVoidcloakStacks(livingEntity); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index 89d6bac6..a2aca24c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -49,21 +49,21 @@ public abstract class ServerPlayerEntityMixin { if (player instanceof ServerPlayerEntity serverPlayer) { //Effect Resilience - if (serverPlayer.hasStatusEffect(EffectRegistry.RESILIENCE.get())) { + if (serverPlayer.hasStatusEffect(EffectRegistry.RESILIENCE)) { HelperMethods.decrementStatusEffect(serverPlayer, EffectRegistry.RESILIENCE.get()); cir.setReturnValue(false); - if (!player.hasStatusEffect(EffectRegistry.MAGISLAM.get())) + if (!player.hasStatusEffect(EffectRegistry.MAGISLAM)) serverPlayer.getWorld().playSoundFromEntity(null, serverPlayer, SoundRegistry.MAGIC_SWORD_PARRY_03.get(), SoundCategory.PLAYERS, 0.7f, 0.5f + (serverPlayer.getRandom().nextBetween(1, 5) * 0.1f)); } - if (serverPlayer.hasStatusEffect(EffectRegistry.ASTRAL_SHIFT.get())) { - StatusEffectInstance astralShiftInstance = player.getStatusEffect(EffectRegistry.ASTRAL_SHIFT.get()); + if (serverPlayer.hasStatusEffect(EffectRegistry.ASTRAL_SHIFT)) { + StatusEffectInstance astralShiftInstance = player.getStatusEffect(EffectRegistry.ASTRAL_SHIFT); if (astralShiftInstance != null) { int duration = astralShiftInstance.getDuration(); if (duration > 10) { - HelperMethods.incrementStatusEffect(serverPlayer, EffectRegistry.ASTRAL_SHIFT.get(), duration, (int) Math.max(1, (amount / 10)), 99); + HelperMethods.incrementStatusEffect(serverPlayer, EffectRegistry.ASTRAL_SHIFT, duration, (int) Math.max(1, (amount / 10)), 99); AbilityMethods.astralShiftSounds(serverPlayer); cir.setReturnValue(false); } @@ -105,7 +105,7 @@ public abstract class ServerPlayerEntityMixin { if (serverPlayer.getMainHandStack().isOf(ItemsRegistry.RIBBONCLEAVER.get()) || serverPlayer.getMainHandStack().isOf(ItemsRegistry.ENIGMA.get())) { int frequency = 6; if (serverPlayer.age % 20 == 0 && serverPlayer.getMainHandStack().isOf(ItemsRegistry.RIBBONCLEAVER.get())) - serverPlayer.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONWRATH.get(), + serverPlayer.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONWRATH, 30, 0, true, false, false)); if (player.age % frequency == 0 && player.isSprinting() && player.isOnGround()) { @@ -157,8 +157,8 @@ public abstract class ServerPlayerEntityMixin { ItemStack decayingRelic = ItemsRegistry.DECAYING_RELIC.get().asItem().getDefaultStack(); ItemStack runicTablet = ItemsRegistry.RUNIC_TABLET.get().asItem().getDefaultStack(); Random random = new Random(); - TagKey desiredItemsTag = TagKey.of(Registries.ITEM.getKey(), new Identifier("simplyswords", "conditional_uniques_type_1")); - TagKey endItemsTag = TagKey.of(Registries.ITEM.getKey(), new Identifier("simplyswords", "conditional_uniques_type_2")); + TagKey desiredItemsTag = TagKey.of(Registries.ITEM.getKey(), Identifier.of("simplyswords", "conditional_uniques_type_1")); + TagKey endItemsTag = TagKey.of(Registries.ITEM.getKey(), Identifier.of("simplyswords", "conditional_uniques_type_2")); int chance = random.nextInt(100); for (int i = 0; i < serverPlayer.getInventory().size(); i++) { @@ -250,8 +250,8 @@ else if (serverPlayer.getInventory().getStack(i).isOf(ItemsRegistry.TAMPERED_REM if (!target.handleAttack(player)) { ServerWorld serverWorld = (ServerWorld) player.getWorld(); //Ribboncleaver Cleave buff - if (serverPlayer.hasStatusEffect(EffectRegistry.RIBBONCLEAVE.get())) { - serverPlayer.removeStatusEffect(EffectRegistry.RIBBONCLEAVE.get()); + if (serverPlayer.hasStatusEffect(EffectRegistry.RIBBONCLEAVE)) { + serverPlayer.removeStatusEffect(EffectRegistry.RIBBONCLEAVE); HelperMethods.spawnOrbitParticles(serverWorld, target.getPos().add(0, 0.3, 0), ParticleTypes.POOF, 0.5, 6); HelperMethods.spawnOrbitParticles(serverWorld, target.getPos().add(0, 0.5, 0), diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java index a6097dd8..0415ae7d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java @@ -7,6 +7,7 @@ import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; @@ -40,9 +41,9 @@ public class EffectRegistry { public static final RegistrySupplier FRENZY = EFFECT.register("frenzy", () -> new FrenzyEffect(StatusEffectCategory.BENEFICIAL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ATTACK_SPEED, - "54e1b9b9-6de9-49bb-a716-564b3d375892", + Identifier.of("54e1b9b9-6de9-49bb-a716-564b3d375892"), 0.8, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL)); + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); public static final RegistrySupplier VOIDCLOAK = EFFECT.register("voidcloak", () -> new VoidcloakEffect(StatusEffectCategory.BENEFICIAL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ATTACK_SPEED, diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/EntityRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/EntityRegistry.java index 3c26b02e..74e14acf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/EntityRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/EntityRegistry.java @@ -20,7 +20,7 @@ public class EntityRegistry { public static final RegistrySupplier> SIMPLYBEEENTITY = ENTITIES.register( "simplybeeentity", () -> EntityType.Builder.create(SimplySwordsBeeEntity::new, SpawnGroup.CREATURE) - .build(new Identifier(SimplySwords.MOD_ID, "simplybeeentity").toString()) + .build(Identifier.of(SimplySwords.MOD_ID, "simplybeeentity").toString()) ); diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/SoundRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/SoundRegistry.java index c476d915..848c8688 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/SoundRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/SoundRegistry.java @@ -12,336 +12,336 @@ public class SoundRegistry { public static final DeferredRegister SOUND = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.SOUND_EVENT); public static final RegistrySupplier SWING_SMALL = SOUND.register("swing_small", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_small"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_small"))); public static final RegistrySupplier SWING_SCIFI = SOUND.register("swing_scifi", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_scifi"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_scifi"))); public static final RegistrySupplier SWING_NORMAL = SOUND.register("swing_normal", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_normal"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_normal"))); public static final RegistrySupplier SWING_WOOSH = SOUND.register("swing_woosh", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_woosh"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_woosh"))); public static final RegistrySupplier THROW_MJOLNIR = SOUND.register("throw_mjolnir", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "throw_mjolnir"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "throw_mjolnir"))); public static final RegistrySupplier THROW_MJOLNIR_SHORT = SOUND.register("throw_mjolnir_short", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "throw_mjolnir_short"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "throw_mjolnir_short"))); public static final RegistrySupplier THROW_MJOLNIR_LONG = SOUND.register("throw_mjolnir_long", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "throw_mjolnir_long"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "throw_mjolnir_long"))); public static final RegistrySupplier SWING_OMEN_ONE = SOUND.register("swing_omen_one", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_omen_one"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_omen_one"))); public static final RegistrySupplier SWING_OMEN_TWO = SOUND.register("swing_omen_two", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "swing_omen_two"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "swing_omen_two"))); public static final RegistrySupplier DARK_SWORD_ATTACK_01 = SOUND.register("dark_sword_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_01"))); public static final RegistrySupplier DARK_SWORD_ATTACK_02 = SOUND.register("dark_sword_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_02"))); public static final RegistrySupplier DARK_SWORD_ATTACK_03 = SOUND.register("dark_sword_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_03"))); public static final RegistrySupplier DARK_SWORD_ATTACK_WITH_BLOOD_01 = SOUND.register("dark_sword_attack_with_blood_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_01"))); public static final RegistrySupplier DARK_SWORD_ATTACK_WITH_BLOOD_02 = SOUND.register("dark_sword_attack_with_blood_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_02"))); public static final RegistrySupplier DARK_SWORD_ATTACK_WITH_BLOOD_03 = SOUND.register("dark_sword_attack_with_blood_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_attack_with_blood_03"))); public static final RegistrySupplier DARK_SWORD_BLOCK = SOUND.register("dark_sword_block", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_block"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_block"))); public static final RegistrySupplier DARK_SWORD_BREAKS = SOUND.register("dark_sword_breaks", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_breaks"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_breaks"))); public static final RegistrySupplier DARK_SWORD_ENCHANT = SOUND.register("dark_sword_enchant", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_enchant"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_enchant"))); public static final RegistrySupplier DARK_SWORD_PARRY = SOUND.register("dark_sword_parry", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_parry"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_parry"))); public static final RegistrySupplier DARK_SWORD_SPELL = SOUND.register("dark_sword_spell", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_spell"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_spell"))); public static final RegistrySupplier DARK_SWORD_UNFOLD = SOUND.register("dark_sword_unfold", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_unfold"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_unfold"))); public static final RegistrySupplier DARK_SWORD_WHOOSH_01 = SOUND.register("dark_sword_whoosh_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_whoosh_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_whoosh_01"))); public static final RegistrySupplier DARK_SWORD_WHOOSH_02 = SOUND.register("dark_sword_whoosh_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_whoosh_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_whoosh_02"))); public static final RegistrySupplier DARK_SWORD_WHOOSH_03 = SOUND.register("dark_sword_whoosh_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_whoosh_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_whoosh_03"))); public static final RegistrySupplier DARK_SWORD_WHOOSH_04 = SOUND.register("dark_sword_whoosh_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_sword_whoosh_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_sword_whoosh_04"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_earth_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_earth_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_earth_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_earth_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_earth_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_EARTH_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_earth_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_earth_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_fire_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_fire_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_fire_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_fire_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_fire_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_fire_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_fire_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_holy_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_holy_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_holy_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_holy_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_holy_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_HOLY_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_holy_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_holy_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_ice_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_ice_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_ice_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_ice_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_ice_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_ice_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_ice_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_POISON_ATTACK_01 = SOUND.register("elemental_bow_poison_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_poison_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_poison_attack_01"))); public static final RegistrySupplier ELEMENTAL_BOW_POISON_ATTACK_02 = SOUND.register("elemental_bow_poison_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_poison_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_poison_attack_02"))); public static final RegistrySupplier ELEMENTAL_BOW_POISON_ATTACK_03 = SOUND.register("elemental_bow_poison_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_poison_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_poison_attack_03"))); public static final RegistrySupplier ELEMENTAL_BOW_RECHARGE = SOUND.register("elemental_bow_recharge", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_recharge"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_recharge"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_sci-fi_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_sci-fi_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_sci-fi_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_sci-fi_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_sci-fi_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_sci-fi_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_sci-fi_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_thunder_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_thunder_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_thunder_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_thunder_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_thunder_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_THUNDER_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_thunder_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_thunder_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_water_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_water_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_water_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_water_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_water_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_WATER_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_water_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_water_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_FLYBY_01 = SOUND.register("elemental_bow_wind_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_01"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_FLYBY_02 = SOUND.register("elemental_bow_wind_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_02"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_FLYBY_03 = SOUND.register("elemental_bow_wind_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_flyby_03"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_IMPACT_01 = SOUND.register("elemental_bow_wind_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_01"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_IMPACT_02 = SOUND.register("elemental_bow_wind_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_02"))); public static final RegistrySupplier ELEMENTAL_BOW_WIND_SHOOT_IMPACT_03 = SOUND.register("elemental_bow_wind_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_bow_wind_shoot_impact_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_EARTH_ATTACK_01 = SOUND.register("elemental_sword_earth_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_earth_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_earth_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_EARTH_ATTACK_02 = SOUND.register("elemental_sword_earth_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_earth_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_earth_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_EARTH_ATTACK_03 = SOUND.register("elemental_sword_earth_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_earth_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_earth_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_FIRE_ATTACK_01 = SOUND.register("elemental_sword_fire_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_fire_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_fire_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_FIRE_ATTACK_02 = SOUND.register("elemental_sword_fire_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_fire_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_fire_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_FIRE_ATTACK_03 = SOUND.register("elemental_sword_fire_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_fire_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_fire_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_HOLY_ATTACK_01 = SOUND.register("elemental_sword_holy_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_holy_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_holy_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_HOLY_ATTACK_02 = SOUND.register("elemental_sword_holy_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_holy_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_holy_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_HOLY_ATTACK_03 = SOUND.register("elemental_sword_holy_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_holy_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_holy_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_ICE_ATTACK_01 = SOUND.register("elemental_sword_ice_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_ice_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_ice_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_ICE_ATTACK_02 = SOUND.register("elemental_sword_ice_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_ice_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_ice_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_ICE_ATTACK_03 = SOUND.register("elemental_sword_ice_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_ice_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_ice_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_SCIFI_ATTACK_01 = SOUND.register("elemental_sword_sci-fi_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_SCIFI_ATTACK_02 = SOUND.register("elemental_sword_sci-fi_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_SCIFI_ATTACK_03 = SOUND.register("elemental_sword_sci-fi_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_sci-fi_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_THUNDER_ATTACK_01 = SOUND.register("elemental_sword_thunder_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_THUNDER_ATTACK_02 = SOUND.register("elemental_sword_thunder_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_THUNDER_ATTACK_03 = SOUND.register("elemental_sword_thunder_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_thunder_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_WATER_ATTACK_01 = SOUND.register("elemental_sword_water_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_water_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_water_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_WATER_ATTACK_02 = SOUND.register("elemental_sword_water_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_water_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_water_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_WATER_ATTACK_03 = SOUND.register("elemental_sword_water_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_water_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_water_attack_03"))); public static final RegistrySupplier ELEMENTAL_SWORD_WIND_ATTACK_01 = SOUND.register("elemental_sword_wind_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_wind_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_wind_attack_01"))); public static final RegistrySupplier ELEMENTAL_SWORD_WIND_ATTACK_02 = SOUND.register("elemental_sword_wind_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_wind_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_wind_attack_02"))); public static final RegistrySupplier ELEMENTAL_SWORD_WIND_ATTACK_03 = SOUND.register("elemental_sword_wind_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "elemental_sword_wind_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "elemental_sword_wind_attack_03"))); public static final RegistrySupplier MAGIC_BOW_CHARGE_LONG_VERSION = SOUND.register("magic_bow_charge_long_version", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_charge_long_version"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_charge_long_version"))); public static final RegistrySupplier MAGIC_BOW_CHARGE_SHORT_VERSION = SOUND.register("magic_bow_charge_short_version", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_charge_short_version"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_charge_short_version"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_LONG_VERSION_01 = SOUND.register("magic_bow_pull_back_long_version_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_01"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_LONG_VERSION_02 = SOUND.register("magic_bow_pull_back_long_version_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_02"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_LONG_VERSION_03 = SOUND.register("magic_bow_pull_back_long_version_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_long_version_03"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_SHORT_VERSION_01 = SOUND.register("magic_bow_pull_back_short_version_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_01"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_SHORT_VERSION_02 = SOUND.register("magic_bow_pull_back_short_version_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_02"))); public static final RegistrySupplier MAGIC_BOW_PULL_BACK_SHORT_VERSION_03 = SOUND.register("magic_bow_pull_back_short_version_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_pull_back_short_version_03"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_FLYBY_01 = SOUND.register("magic_bow_shoot_flyby_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_01"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_FLYBY_02 = SOUND.register("magic_bow_shoot_flyby_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_02"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_FLYBY_03 = SOUND.register("magic_bow_shoot_flyby_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_flyby_03"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_IMPACT_01 = SOUND.register("magic_bow_shoot_impact_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_impact_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_impact_01"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_IMPACT_02 = SOUND.register("magic_bow_shoot_impact_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_impact_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_impact_02"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_IMPACT_03 = SOUND.register("magic_bow_shoot_impact_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_impact_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_impact_03"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_MISS_01 = SOUND.register("magic_bow_shoot_miss_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_miss_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_miss_01"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_MISS_02 = SOUND.register("magic_bow_shoot_miss_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_miss_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_miss_02"))); public static final RegistrySupplier MAGIC_BOW_SHOOT_MISS_03 = SOUND.register("magic_bow_shoot_miss_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_bow_shoot_miss_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_bow_shoot_miss_03"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_01 = SOUND.register("magic_sword_attack_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_01"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_02 = SOUND.register("magic_sword_attack_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_02"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_03 = SOUND.register("magic_sword_attack_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_03"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_04 = SOUND.register("magic_sword_attack_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_04"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_WITH_BLOOD_01 = SOUND.register("magic_sword_attack_with_blood_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_01"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_WITH_BLOOD_02 = SOUND.register("magic_sword_attack_with_blood_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_02"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_WITH_BLOOD_03 = SOUND.register("magic_sword_attack_with_blood_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_03"))); public static final RegistrySupplier MAGIC_SWORD_ATTACK_WITH_BLOOD_04 = SOUND.register("magic_sword_attack_with_blood_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_attack_with_blood_04"))); public static final RegistrySupplier MAGIC_SWORD_BLOCK_01 = SOUND.register("magic_sword_block_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_block_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_block_01"))); public static final RegistrySupplier MAGIC_SWORD_BLOCK_02 = SOUND.register("magic_sword_block_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_block_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_block_02"))); public static final RegistrySupplier MAGIC_SWORD_BREAKS = SOUND.register("magic_sword_breaks", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_breaks"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_breaks"))); public static final RegistrySupplier MAGIC_SWORD_PARRY_01 = SOUND.register("magic_sword_parry_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_parry_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_parry_01"))); public static final RegistrySupplier MAGIC_SWORD_PARRY_02 = SOUND.register("magic_sword_parry_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_parry_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_parry_02"))); public static final RegistrySupplier MAGIC_SWORD_PARRY_03 = SOUND.register("magic_sword_parry_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_parry_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_parry_03"))); public static final RegistrySupplier MAGIC_SWORD_PARRY_04 = SOUND.register("magic_sword_parry_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_parry_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_parry_04"))); public static final RegistrySupplier MAGIC_SWORD_PARRY_VARIOUS_HITS = SOUND.register("magic_sword_parry_various_hits", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_parry_various_hits"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_parry_various_hits"))); public static final RegistrySupplier MAGIC_SWORD_SPELL_01 = SOUND.register("magic_sword_spell_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_spell_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_spell_01"))); public static final RegistrySupplier MAGIC_SWORD_SPELL_02 = SOUND.register("magic_sword_spell_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_spell_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_spell_02"))); public static final RegistrySupplier MAGIC_SWORD_SPELL_03 = SOUND.register("magic_sword_spell_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_spell_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_spell_03"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_01 = SOUND.register("magic_sword_whoosh_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_01"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_02 = SOUND.register("magic_sword_whoosh_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_02"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_03 = SOUND.register("magic_sword_whoosh_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_03"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_04 = SOUND.register("magic_sword_whoosh_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_04"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_05 = SOUND.register("magic_sword_whoosh_05", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_05"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_05"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_06 = SOUND.register("magic_sword_whoosh_06", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_06"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_06"))); public static final RegistrySupplier MAGIC_SWORD_WHOOSH_07 = SOUND.register("magic_sword_whoosh_07", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_sword_whoosh_07"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_sword_whoosh_07"))); public static final RegistrySupplier SPELL_FIRE = SOUND.register("spell_fire", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "spell_fire"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "spell_fire"))); public static final RegistrySupplier SLASH_01 = SOUND.register("slash_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "slash_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "slash_01"))); public static final RegistrySupplier SPELL_MISC_02 = SOUND.register("spell_misc_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "spell_misc_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "spell_misc_02"))); public static final RegistrySupplier MAGIC_SHAMANIC_VOICE_04 = SOUND.register("magic_shamanic_voice_04", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_voice_04"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_voice_04"))); public static final RegistrySupplier MAGIC_SHAMANIC_VOICE_12 = SOUND.register("magic_shamanic_voice_12", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_voice_12"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_voice_12"))); public static final RegistrySupplier MAGIC_SHAMANIC_VOICE_15 = SOUND.register("magic_shamanic_voice_15", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_voice_15"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_voice_15"))); public static final RegistrySupplier MAGIC_SHAMANIC_VOICE_20 = SOUND.register("magic_shamanic_voice_20", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_voice_20"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_voice_20"))); public static final RegistrySupplier MAGIC_SHAMANIC_NORDIC_02 = SOUND.register("magic_shamanic_nordic_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_nordic_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_nordic_02"))); public static final RegistrySupplier MAGIC_SHAMANIC_NORDIC_21 = SOUND.register("magic_shamanic_nordic_21", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_nordic_21"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_nordic_21"))); public static final RegistrySupplier MAGIC_SHAMANIC_NORDIC_22 = SOUND.register("magic_shamanic_nordic_22", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_nordic_22"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_nordic_22"))); public static final RegistrySupplier MAGIC_SHAMANIC_NORDIC_23 = SOUND.register("magic_shamanic_nordic_23", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_nordic_23"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_nordic_23"))); public static final RegistrySupplier MAGIC_SHAMANIC_NORDIC_27 = SOUND.register("magic_shamanic_nordic_27", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "magic_shamanic_nordic_27"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "magic_shamanic_nordic_27"))); public static final RegistrySupplier AMBIENCE_WIND_LOOP = SOUND.register("ambience_wind_loop", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "ambience_wind_loop"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "ambience_wind_loop"))); public static final RegistrySupplier STONE_SLIDE_LOOP_03 = SOUND.register("stone_slide_loop_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "stone_slide_loop_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "stone_slide_loop_03"))); public static final RegistrySupplier OBJECT_IMPACT_THUD = SOUND.register("object_impact_thud", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "object_impact_thud"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "object_impact_thud"))); public static final RegistrySupplier OBJECT_IMPACT_THUD_REPEAT = SOUND.register("object_impact_thud_repeat", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "object_impact_thud_repeat"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "object_impact_thud_repeat"))); public static final RegistrySupplier ACTIVATE_PLINTH_03 = SOUND.register("activate_plinth_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "activate_plinth_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "activate_plinth_03"))); public static final RegistrySupplier DARK_ACTIVATION_DISTORTED = SOUND.register("dark_activation_distorted", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "dark_activation_distorted"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "dark_activation_distorted"))); public static final RegistrySupplier DISTORTION_ARC_01 = SOUND.register("distortion_arc_01", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "distortion_arc_01"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "distortion_arc_01"))); public static final RegistrySupplier DISTORTION_ARC_02 = SOUND.register("distortion_arc_02", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "distortion_arc_02"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "distortion_arc_02"))); public static final RegistrySupplier DISTORTION_ARC_03 = SOUND.register("distortion_arc_03", () -> - SoundEvent.of(new Identifier(SimplySwords.MOD_ID, "distortion_arc_03"))); + SoundEvent.of(Identifier.of(SimplySwords.MOD_ID, "distortion_arc_03"))); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index f6279a21..fbe76810 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -89,7 +89,7 @@ public static void tickAbilityStorm(ItemStack stack, World world, LivingEntity u if ((entity instanceof LivingEntity ee)) { if (HelperMethods.checkFriendlyFire(ee, user) && choose > 0.7) { var stormtarget = ee.getBlockPos(); - ee.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE.get(), frequency+5, 0), user); + ee.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, frequency+5, 0), user); LightningEntity storm = EntityType.LIGHTNING_BOLT.spawn(sworld, stormtarget, SpawnReason.TRIGGERED); if (storm != null) { storm.setCosmetic(true); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/FileCopier.java b/common/src/main/java/net/sweenus/simplyswords/util/FileCopier.java index b55e59a7..b9e92e51 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/FileCopier.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/FileCopier.java @@ -17,7 +17,7 @@ public class FileCopier { public static void copyFileToConfigDirectory() throws IOException { if (!Platform.isModLoaded(SimplySwords.MOD_ID) || !SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion) - || Platform.isForge()) + || Platform.isNeoForge()) return; Optional simplySwords$safeRecipePath = Platform.getMod(SimplySwords.MOD_ID).findResource( diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 1bbfdcd2..7bb53923 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -18,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleEffect; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.scoreboard.AbstractTeam; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; @@ -327,7 +328,7 @@ public static Vec3d getPositionLookingAt(PlayerEntity player, int range) { public static void incrementStatusEffect( LivingEntity livingEntity, - StatusEffect statusEffect, + RegistryEntry statusEffect, int duration, int amplifier, int amplifierMax) { @@ -350,7 +351,7 @@ public static void incrementStatusEffect( public static SimplySwordsStatusEffectInstance incrementSimplySwordsStatusEffect( LivingEntity livingEntity, - StatusEffect statusEffect, + RegistryEntry statusEffect, int duration, int amplifier, int amplifierMax) { diff --git a/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java index 26d36c01..dd5220ce 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java @@ -36,7 +36,7 @@ public static void postHitRunicFreeze(LivingEntity target, LivingEntity attacker target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE.get(), freezeDuration, 1), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, freezeDuration, 1), attacker); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.1f, 1.8f); } @@ -48,7 +48,7 @@ public static void postHitRunicWildfire(LivingEntity target, LivingEntity attack int duration = (int) Config.getFloat("wildfireDuration", "RunicEffects", ConfigDefaultValues.wildfireDuration); if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE.get(), duration, 3), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE, duration, 3), attacker); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.1f, 1.8f); } @@ -302,7 +302,7 @@ public static void postHitNetherEcho(ItemStack stack, LivingEntity target, Livin //increase damage if 2H wep if (HelperMethods.isUniqueTwohanded(stack)) amp = 2; - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.ECHO.get(), 20, amp), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.ECHO, 20, amp), attacker); } // Nether Power - BERSERK @@ -320,20 +320,20 @@ public static void postHitNetherBerserk(ItemStack stack, LivingEntity target, Li // Nether Power - RADIANCE public static void postHitNetherRadiance(LivingEntity target, LivingEntity attacker) { if (target.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION.get(), 200, 4), attacker); + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 200, 4), attacker); } } // Nether Power - ONSLAUGHT public static void postHitNetherOnslaught(LivingEntity target, LivingEntity attacker) { if (target.hasStatusEffect(StatusEffects.SLOWNESS) && !attacker.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT.get(), 80, 0), attacker); + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, 80, 0), attacker); } } // Nether Power - NULLIFICATION public static void postHitNetherNullification(LivingEntity user) { - if (!user.hasStatusEffect(EffectRegistry.BATTLE_FATIGUE.get())) { + if (!user.hasStatusEffect(EffectRegistry.BATTLE_FATIGUE)) { if (!user.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) user.getWorld(); BlockState currentState = serverWorld.getBlockState(user.getBlockPos().up(4).offset(user.getMovementDirection(), 3)); @@ -352,7 +352,7 @@ public static void postHitNetherNullification(LivingEntity user) { banner.standardType = "nullification"; banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); } - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.BATTLE_FATIGUE.get(), 800, 0), user); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.BATTLE_FATIGUE, 800, 0), user); } } } diff --git a/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java b/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java index 1008d669..a7429660 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java @@ -33,7 +33,7 @@ public static void loopSound(LivingEntity entity, Identifier soundId, int soundD // Schedule the sound to play repeatedly scheduler.scheduleAtFixedRate(() -> { - if (entity.isAlive() && entity.hasStatusEffect(EffectRegistry.ELEMENTAL_VORTEX.get())) { + if (entity.isAlive() && entity.hasStatusEffect(EffectRegistry.ELEMENTAL_VORTEX)) { playSound(serverWorld, entity, soundEvent); } else { stopLoopingSound(entity, soundId); // Stop the scheduler if the entity is no longer valid diff --git a/fabric/build.gradle b/fabric/build.gradle index 900ebb26..57c2bc18 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" + id 'com.github.johnrengelman.shadow' } architectury { @@ -48,30 +48,30 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" // Remove the next line if you don't want to depend on the API - modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" + modApi "dev.architectury:architectury-fabric:${rootProject.architectury_api_version}" modCompileOnly("com.terraformersmc:modmenu:${rootProject.mod_menu_version}") { transitive false } // Mythic Metals - modImplementation "curse.maven:mythicmetals-410127:4644233" + modImplementation "curse.maven:mythicmetals-410127:5660718" // slug / curseforge project ID / file ID "check url" modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" - modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" - include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") + //modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 + //include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } - modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" + //modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 // Amethyst Imbuement //modImplementation "curse.maven:amethyst-imbuement-608261:4514358" // Patchouli - modImplementation "vazkii.patchouli:Patchouli:1.20.1-81-FABRIC" + modImplementation "vazkii.patchouli:Patchouli:1.21-87-FABRIC" - modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) + //modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) 1.21 common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } diff --git a/forge/build.gradle b/forge/build.gradle index bba7df43..72baa872 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -1,19 +1,23 @@ plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" + id 'com.github.johnrengelman.shadow' } repositories { maven {url "https://cursemaven.com"} maven { url "https://maven.blamejared.com" } maven { url "https://maven.shedaniel.me/" } + maven { + name = 'NeoForged' + url = 'https://maven.neoforged.net/releases' + } } architectury { platformSetupLoomIde() - forge() + neoForge() } - +/* loom { accessWidenerPath = project(":common").loom.accessWidenerPath @@ -25,6 +29,7 @@ loom { mixinConfig "simplyswords.mixins.json" } } + */ configurations { common @@ -35,25 +40,27 @@ configurations { } dependencies { - forge "net.minecraftforge:forge:${rootProject.forge_version}" - // Remove the next line if you don't want to depend on the API - modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}" modApi("me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_version}") //Patchouli - modImplementation ("vazkii.patchouli:Patchouli:1.20.1-81-FORGE") + modImplementation ("vazkii.patchouli:Patchouli:1.21-87-NEOFORGE") + + neoForge "net.neoforged:neoforge:$rootProject.neoforge_version" + + // Architectury API. This is optional, and you can comment it out if you don't need it. + modImplementation "dev.architectury:architectury-neoforge:$rootProject.architectury_api_version" - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } + common(project(path: ':common', configuration: 'namedElements')) { transitive false } + shadowCommon(project(path: ':common', configuration: 'transformProductionNeoForge')) { transitive false } //modImplementation ("curse.maven:gobber-301700:4007899") } processResources { - inputs.property "version", project.version + inputs.property 'version', project.version - filesMatching("META-INF/mods.toml") { - expand "version": project.version + filesMatching('META-INF/neoforge.mods.toml') { + expand version: project.version } } diff --git a/forge/gradle.properties b/forge/gradle.properties index 32f842a6..4f8c4883 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -1 +1 @@ -loom.platform=forge \ No newline at end of file +loom.platform = neoforge \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index b6a327ec..0c66ef9a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,25 +1,28 @@ org.gradle.jvmargs=-Xmx4048M -minecraft_version=1.20.1 -enabled_platforms=fabric,forge +minecraft_version=1.21.1 +enabled_platforms=fabric,neoforge archives_base_name=simplyswords -mod_version=1.56.0-1.20.1 +archives_name=simplyswords +mod_version=1.57.0-1.21.1 maven_group=net.sweenus -architectury_version=9.0.8 +architectury_api_version=13.0.2 -fabric_loader_version=0.14.21 -fabric_api_version=0.88.1+1.20.1 +fabric_loader_version=0.16.5 +fabric_api_version=0.102.0+1.21.1 forge_version=1.20.1-47.1.1 -yarn_mappings=1.20.1+build.8 +neoforge_version = 21.1.46 +yarn_mappings=1.21.1+build.3 +yarn_mappings_patch_neoforge_version = 1.21+build.4 -mixin_extras_version=0.2.0-beta.8 -spellpower_version=0.10.0+1.20.1 +mixin_extras_version=0.5.0-beta.3 +spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 -cloth_config_version=11.1.106 -mod_menu_version=4.0.5 +cloth_config_version=15.0.130 +mod_menu_version=11.0.2 eldritch_end_version=5035580 necronomicon_version=5041803 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch literal 43453 zcma&N1CXTcmMvW9vTb(Rwr$&4wr$(C?dmSu>@vG-+vuvg^_??!{yS%8zW-#zn-LkA z5&1^$^{lnmUON?}LBF8_K|(?T0Ra(xUH{($5eN!MR#ZihR#HxkUPe+_R8Cn`RRs(P z_^*#_XlXmGv7!4;*Y%p4nw?{bNp@UZHv1?Um8r6)Fei3p@ClJn0ECfg1hkeuUU@Or zDaPa;U3fE=3L}DooL;8f;P0ipPt0Z~9P0)lbStMS)ag54=uL9ia-Lm3nh|@(Y?B`; zx_#arJIpXH!U{fbCbI^17}6Ri*H<>OLR%c|^mh8+)*h~K8Z!9)DPf zR2h?lbDZQ`p9P;&DQ4F0sur@TMa!Y}S8irn(%d-gi0*WxxCSk*A?3lGh=gcYN?FGl z7D=Js!i~0=u3rox^eO3i@$0=n{K1lPNU zwmfjRVmLOCRfe=seV&P*1Iq=^i`502keY8Uy-WNPwVNNtJFx?IwAyRPZo2Wo1+S(xF37LJZ~%i)kpFQ3Fw=mXfd@>%+)RpYQLnr}B~~zoof(JVm^^&f zxKV^+3D3$A1G;qh4gPVjhrC8e(VYUHv#dy^)(RoUFM?o%W-EHxufuWf(l*@-l+7vt z=l`qmR56K~F|v<^Pd*p~1_y^P0P^aPC##d8+HqX4IR1gu+7w#~TBFphJxF)T$2WEa zxa?H&6=Qe7d(#tha?_1uQys2KtHQ{)Qco)qwGjrdNL7thd^G5i8Os)CHqc>iOidS} z%nFEDdm=GXBw=yXe1W-ShHHFb?Cc70+$W~z_+}nAoHFYI1MV1wZegw*0y^tC*s%3h zhD3tN8b=Gv&rj}!SUM6|ajSPp*58KR7MPpI{oAJCtY~JECm)*m_x>AZEu>DFgUcby z1Qaw8lU4jZpQ_$;*7RME+gq1KySGG#Wql>aL~k9tLrSO()LWn*q&YxHEuzmwd1?aAtI zBJ>P=&$=l1efe1CDU;`Fd+_;&wI07?V0aAIgc(!{a z0Jg6Y=inXc3^n!U0Atk`iCFIQooHqcWhO(qrieUOW8X(x?(RD}iYDLMjSwffH2~tB z)oDgNBLB^AJBM1M^c5HdRx6fBfka`(LD-qrlh5jqH~);#nw|iyp)()xVYak3;Ybik z0j`(+69aK*B>)e_p%=wu8XC&9e{AO4c~O1U`5X9}?0mrd*m$_EUek{R?DNSh(=br# z#Q61gBzEpmy`$pA*6!87 zSDD+=@fTY7<4A?GLqpA?Pb2z$pbCc4B4zL{BeZ?F-8`s$?>*lXXtn*NC61>|*w7J* z$?!iB{6R-0=KFmyp1nnEmLsA-H0a6l+1uaH^g%c(p{iT&YFrbQ$&PRb8Up#X3@Zsk zD^^&LK~111%cqlP%!_gFNa^dTYT?rhkGl}5=fL{a`UViaXWI$k-UcHJwmaH1s=S$4 z%4)PdWJX;hh5UoK?6aWoyLxX&NhNRqKam7tcOkLh{%j3K^4Mgx1@i|Pi&}<^5>hs5 zm8?uOS>%)NzT(%PjVPGa?X%`N2TQCKbeH2l;cTnHiHppPSJ<7y-yEIiC!P*ikl&!B z%+?>VttCOQM@ShFguHVjxX^?mHX^hSaO_;pnyh^v9EumqSZTi+#f&_Vaija0Q-e*| z7ulQj6Fs*bbmsWp{`auM04gGwsYYdNNZcg|ph0OgD>7O}Asn7^Z=eI>`$2*v78;sj-}oMoEj&@)9+ycEOo92xSyY344^ z11Hb8^kdOvbf^GNAK++bYioknrpdN>+u8R?JxG=!2Kd9r=YWCOJYXYuM0cOq^FhEd zBg2puKy__7VT3-r*dG4c62Wgxi52EMCQ`bKgf*#*ou(D4-ZN$+mg&7$u!! z-^+Z%;-3IDwqZ|K=ah85OLwkO zKxNBh+4QHh)u9D?MFtpbl)us}9+V!D%w9jfAMYEb>%$A;u)rrI zuBudh;5PN}_6J_}l55P3l_)&RMlH{m!)ai-i$g)&*M`eN$XQMw{v^r@-125^RRCF0 z^2>|DxhQw(mtNEI2Kj(;KblC7x=JlK$@78`O~>V!`|1Lm-^JR$-5pUANAnb(5}B}JGjBsliK4& zk6y(;$e&h)lh2)L=bvZKbvh@>vLlreBdH8No2>$#%_Wp1U0N7Ank!6$dFSi#xzh|( zRi{Uw%-4W!{IXZ)fWx@XX6;&(m_F%c6~X8hx=BN1&q}*( zoaNjWabE{oUPb!Bt$eyd#$5j9rItB-h*5JiNi(v^e|XKAj*8(k<5-2$&ZBR5fF|JA z9&m4fbzNQnAU}r8ab>fFV%J0z5awe#UZ|bz?Ur)U9bCIKWEzi2%A+5CLqh?}K4JHi z4vtM;+uPsVz{Lfr;78W78gC;z*yTch~4YkLr&m-7%-xc ztw6Mh2d>_iO*$Rd8(-Cr1_V8EO1f*^@wRoSozS) zy1UoC@pruAaC8Z_7~_w4Q6n*&B0AjOmMWa;sIav&gu z|J5&|{=a@vR!~k-OjKEgPFCzcJ>#A1uL&7xTDn;{XBdeM}V=l3B8fE1--DHjSaxoSjNKEM9|U9#m2<3>n{Iuo`r3UZp;>GkT2YBNAh|b z^jTq-hJp(ebZh#Lk8hVBP%qXwv-@vbvoREX$TqRGTgEi$%_F9tZES@z8Bx}$#5eeG zk^UsLBH{bc2VBW)*EdS({yw=?qmevwi?BL6*=12k9zM5gJv1>y#ML4!)iiPzVaH9% zgSImetD@dam~e>{LvVh!phhzpW+iFvWpGT#CVE5TQ40n%F|p(sP5mXxna+Ev7PDwA zamaV4m*^~*xV+&p;W749xhb_X=$|LD;FHuB&JL5?*Y2-oIT(wYY2;73<^#46S~Gx| z^cez%V7x$81}UWqS13Gz80379Rj;6~WdiXWOSsdmzY39L;Hg3MH43o*y8ibNBBH`(av4|u;YPq%{R;IuYow<+GEsf@R?=@tT@!}?#>zIIn0CoyV!hq3mw zHj>OOjfJM3F{RG#6ujzo?y32m^tgSXf@v=J$ELdJ+=5j|=F-~hP$G&}tDZsZE?5rX ztGj`!S>)CFmdkccxM9eGIcGnS2AfK#gXwj%esuIBNJQP1WV~b~+D7PJTmWGTSDrR` zEAu4B8l>NPuhsk5a`rReSya2nfV1EK01+G!x8aBdTs3Io$u5!6n6KX%uv@DxAp3F@{4UYg4SWJtQ-W~0MDb|j-$lwVn znAm*Pl!?Ps&3wO=R115RWKb*JKoexo*)uhhHBncEDMSVa_PyA>k{Zm2(wMQ(5NM3# z)jkza|GoWEQo4^s*wE(gHz?Xsg4`}HUAcs42cM1-qq_=+=!Gk^y710j=66(cSWqUe zklbm8+zB_syQv5A2rj!Vbw8;|$@C!vfNmNV!yJIWDQ>{+2x zKjuFX`~~HKG~^6h5FntRpnnHt=D&rq0>IJ9#F0eM)Y-)GpRjiN7gkA8wvnG#K=q{q z9dBn8_~wm4J<3J_vl|9H{7q6u2A!cW{bp#r*-f{gOV^e=8S{nc1DxMHFwuM$;aVI^ zz6A*}m8N-&x8;aunp1w7_vtB*pa+OYBw=TMc6QK=mbA-|Cf* zvyh8D4LRJImooUaSb7t*fVfih<97Gf@VE0|z>NcBwBQze);Rh!k3K_sfunToZY;f2 z^HmC4KjHRVg+eKYj;PRN^|E0>Gj_zagfRbrki68I^#~6-HaHg3BUW%+clM1xQEdPYt_g<2K+z!$>*$9nQ>; zf9Bei{?zY^-e{q_*|W#2rJG`2fy@{%6u0i_VEWTq$*(ZN37|8lFFFt)nCG({r!q#9 z5VK_kkSJ3?zOH)OezMT{!YkCuSSn!K#-Rhl$uUM(bq*jY? zi1xbMVthJ`E>d>(f3)~fozjg^@eheMF6<)I`oeJYx4*+M&%c9VArn(OM-wp%M<-`x z7sLP1&3^%Nld9Dhm@$3f2}87!quhI@nwd@3~fZl_3LYW-B?Ia>ui`ELg z&Qfe!7m6ze=mZ`Ia9$z|ARSw|IdMpooY4YiPN8K z4B(ts3p%2i(Td=tgEHX z0UQ_>URBtG+-?0E;E7Ld^dyZ;jjw0}XZ(}-QzC6+NN=40oDb2^v!L1g9xRvE#@IBR zO!b-2N7wVfLV;mhEaXQ9XAU+>=XVA6f&T4Z-@AX!leJ8obP^P^wP0aICND?~w&NykJ#54x3_@r7IDMdRNy4Hh;h*!u(Ol(#0bJdwEo$5437-UBjQ+j=Ic>Q2z` zJNDf0yO6@mr6y1#n3)s(W|$iE_i8r@Gd@!DWDqZ7J&~gAm1#~maIGJ1sls^gxL9LLG_NhU!pTGty!TbhzQnu)I*S^54U6Yu%ZeCg`R>Q zhBv$n5j0v%O_j{QYWG!R9W?5_b&67KB$t}&e2LdMvd(PxN6Ir!H4>PNlerpBL>Zvyy!yw z-SOo8caEpDt(}|gKPBd$qND5#a5nju^O>V&;f890?yEOfkSG^HQVmEbM3Ugzu+UtH zC(INPDdraBN?P%kE;*Ae%Wto&sgw(crfZ#Qy(<4nk;S|hD3j{IQRI6Yq|f^basLY; z-HB&Je%Gg}Jt@={_C{L$!RM;$$|iD6vu#3w?v?*;&()uB|I-XqEKqZPS!reW9JkLewLb!70T7n`i!gNtb1%vN- zySZj{8-1>6E%H&=V}LM#xmt`J3XQoaD|@XygXjdZ1+P77-=;=eYpoEQ01B@L*a(uW zrZeZz?HJsw_4g0vhUgkg@VF8<-X$B8pOqCuWAl28uB|@r`19DTUQQsb^pfqB6QtiT z*`_UZ`fT}vtUY#%sq2{rchyfu*pCg;uec2$-$N_xgjZcoumE5vSI{+s@iLWoz^Mf; zuI8kDP{!XY6OP~q5}%1&L}CtfH^N<3o4L@J@zg1-mt{9L`s^z$Vgb|mr{@WiwAqKg zp#t-lhrU>F8o0s1q_9y`gQNf~Vb!F%70f}$>i7o4ho$`uciNf=xgJ>&!gSt0g;M>*x4-`U)ysFW&Vs^Vk6m%?iuWU+o&m(2Jm26Y(3%TL; zA7T)BP{WS!&xmxNw%J=$MPfn(9*^*TV;$JwRy8Zl*yUZi8jWYF>==j~&S|Xinsb%c z2?B+kpet*muEW7@AzjBA^wAJBY8i|#C{WtO_or&Nj2{=6JTTX05}|H>N2B|Wf!*3_ z7hW*j6p3TvpghEc6-wufFiY!%-GvOx*bZrhZu+7?iSrZL5q9}igiF^*R3%DE4aCHZ zqu>xS8LkW+Auv%z-<1Xs92u23R$nk@Pk}MU5!gT|c7vGlEA%G^2th&Q*zfg%-D^=f z&J_}jskj|Q;73NP4<4k*Y%pXPU2Thoqr+5uH1yEYM|VtBPW6lXaetokD0u z9qVek6Q&wk)tFbQ8(^HGf3Wp16gKmr>G;#G(HRBx?F`9AIRboK+;OfHaLJ(P>IP0w zyTbTkx_THEOs%Q&aPrxbZrJlio+hCC_HK<4%f3ZoSAyG7Dn`=X=&h@m*|UYO-4Hq0 z-Bq&+Ie!S##4A6OGoC~>ZW`Y5J)*ouaFl_e9GA*VSL!O_@xGiBw!AF}1{tB)z(w%c zS1Hmrb9OC8>0a_$BzeiN?rkPLc9%&;1CZW*4}CDDNr2gcl_3z+WC15&H1Zc2{o~i) z)LLW=WQ{?ricmC`G1GfJ0Yp4Dy~Ba;j6ZV4r{8xRs`13{dD!xXmr^Aga|C=iSmor% z8hi|pTXH)5Yf&v~exp3o+sY4B^^b*eYkkCYl*T{*=-0HniSA_1F53eCb{x~1k3*`W zr~};p1A`k{1DV9=UPnLDgz{aJH=-LQo<5%+Em!DNN252xwIf*wF_zS^!(XSm(9eoj z=*dXG&n0>)_)N5oc6v!>-bd(2ragD8O=M|wGW z!xJQS<)u70m&6OmrF0WSsr@I%T*c#Qo#Ha4d3COcX+9}hM5!7JIGF>7<~C(Ear^Sn zm^ZFkV6~Ula6+8S?oOROOA6$C&q&dp`>oR-2Ym3(HT@O7Sd5c~+kjrmM)YmgPH*tL zX+znN>`tv;5eOfX?h{AuX^LK~V#gPCu=)Tigtq9&?7Xh$qN|%A$?V*v=&-2F$zTUv z`C#WyIrChS5|Kgm_GeudCFf;)!WH7FI60j^0o#65o6`w*S7R@)88n$1nrgU(oU0M9 zx+EuMkC>(4j1;m6NoGqEkpJYJ?vc|B zOlwT3t&UgL!pX_P*6g36`ZXQ; z9~Cv}ANFnJGp(;ZhS(@FT;3e)0)Kp;h^x;$*xZn*k0U6-&FwI=uOGaODdrsp-!K$Ac32^c{+FhI-HkYd5v=`PGsg%6I`4d9Jy)uW0y%) zm&j^9WBAp*P8#kGJUhB!L?a%h$hJgQrx!6KCB_TRo%9{t0J7KW8!o1B!NC)VGLM5! zpZy5Jc{`r{1e(jd%jsG7k%I+m#CGS*BPA65ZVW~fLYw0dA-H_}O zrkGFL&P1PG9p2(%QiEWm6x;U-U&I#;Em$nx-_I^wtgw3xUPVVu zqSuKnx&dIT-XT+T10p;yjo1Y)z(x1fb8Dzfn8e yu?e%!_ptzGB|8GrCfu%p?(_ zQccdaaVK$5bz;*rnyK{_SQYM>;aES6Qs^lj9lEs6_J+%nIiuQC*fN;z8md>r_~Mfl zU%p5Dt_YT>gQqfr@`cR!$NWr~+`CZb%dn;WtzrAOI>P_JtsB76PYe*<%H(y>qx-`Kq!X_; z<{RpAqYhE=L1r*M)gNF3B8r(<%8mo*SR2hu zccLRZwGARt)Hlo1euqTyM>^!HK*!Q2P;4UYrysje@;(<|$&%vQekbn|0Ruu_Io(w4#%p6ld2Yp7tlA`Y$cciThP zKzNGIMPXX%&Ud0uQh!uQZz|FB`4KGD?3!ND?wQt6!n*f4EmCoJUh&b?;B{|lxs#F- z31~HQ`SF4x$&v00@(P+j1pAaj5!s`)b2RDBp*PB=2IB>oBF!*6vwr7Dp%zpAx*dPr zb@Zjq^XjN?O4QcZ*O+8>)|HlrR>oD*?WQl5ri3R#2?*W6iJ>>kH%KnnME&TT@ZzrHS$Q%LC?n|e>V+D+8D zYc4)QddFz7I8#}y#Wj6>4P%34dZH~OUDb?uP%-E zwjXM(?Sg~1!|wI(RVuxbu)-rH+O=igSho_pDCw(c6b=P zKk4ATlB?bj9+HHlh<_!&z0rx13K3ZrAR8W)!@Y}o`?a*JJsD+twZIv`W)@Y?Amu_u zz``@-e2X}27$i(2=9rvIu5uTUOVhzwu%mNazS|lZb&PT;XE2|B&W1>=B58#*!~D&) zfVmJGg8UdP*fx(>Cj^?yS^zH#o-$Q-*$SnK(ZVFkw+er=>N^7!)FtP3y~Xxnu^nzY zikgB>Nj0%;WOltWIob|}%lo?_C7<``a5hEkx&1ku$|)i>Rh6@3h*`slY=9U}(Ql_< zaNG*J8vb&@zpdhAvv`?{=zDedJ23TD&Zg__snRAH4eh~^oawdYi6A3w8<Ozh@Kw)#bdktM^GVb zrG08?0bG?|NG+w^&JvD*7LAbjED{_Zkc`3H!My>0u5Q}m!+6VokMLXxl`Mkd=g&Xx z-a>m*#G3SLlhbKB!)tnzfWOBV;u;ftU}S!NdD5+YtOjLg?X}dl>7m^gOpihrf1;PY zvll&>dIuUGs{Qnd- zwIR3oIrct8Va^Tm0t#(bJD7c$Z7DO9*7NnRZorrSm`b`cxz>OIC;jSE3DO8`hX955ui`s%||YQtt2 z5DNA&pG-V+4oI2s*x^>-$6J?p=I>C|9wZF8z;VjR??Icg?1w2v5Me+FgAeGGa8(3S z4vg*$>zC-WIVZtJ7}o9{D-7d>zCe|z#<9>CFve-OPAYsneTb^JH!Enaza#j}^mXy1 z+ULn^10+rWLF6j2>Ya@@Kq?26>AqK{A_| zQKb*~F1>sE*=d?A?W7N2j?L09_7n+HGi{VY;MoTGr_)G9)ot$p!-UY5zZ2Xtbm=t z@dpPSGwgH=QtIcEulQNI>S-#ifbnO5EWkI;$A|pxJd885oM+ zGZ0_0gDvG8q2xebj+fbCHYfAXuZStH2j~|d^sBAzo46(K8n59+T6rzBwK)^rfPT+B zyIFw)9YC-V^rhtK`!3jrhmW-sTmM+tPH+;nwjL#-SjQPUZ53L@A>y*rt(#M(qsiB2 zx6B)dI}6Wlsw%bJ8h|(lhkJVogQZA&n{?Vgs6gNSXzuZpEyu*xySy8ro07QZ7Vk1!3tJphN_5V7qOiyK8p z#@jcDD8nmtYi1^l8ml;AF<#IPK?!pqf9D4moYk>d99Im}Jtwj6c#+A;f)CQ*f-hZ< z=p_T86jog%!p)D&5g9taSwYi&eP z#JuEK%+NULWus;0w32-SYFku#i}d~+{Pkho&^{;RxzP&0!RCm3-9K6`>KZpnzS6?L z^H^V*s!8<>x8bomvD%rh>Zp3>Db%kyin;qtl+jAv8Oo~1g~mqGAC&Qi_wy|xEt2iz zWAJEfTV%cl2Cs<1L&DLRVVH05EDq`pH7Oh7sR`NNkL%wi}8n>IXcO40hp+J+sC!W?!krJf!GJNE8uj zg-y~Ns-<~D?yqbzVRB}G>0A^f0!^N7l=$m0OdZuqAOQqLc zX?AEGr1Ht+inZ-Qiwnl@Z0qukd__a!C*CKuGdy5#nD7VUBM^6OCpxCa2A(X;e0&V4 zM&WR8+wErQ7UIc6LY~Q9x%Sn*Tn>>P`^t&idaOEnOd(Ufw#>NoR^1QdhJ8s`h^|R_ zXX`c5*O~Xdvh%q;7L!_!ohf$NfEBmCde|#uVZvEo>OfEq%+Ns7&_f$OR9xsihRpBb z+cjk8LyDm@U{YN>+r46?nn{7Gh(;WhFw6GAxtcKD+YWV?uge>;+q#Xx4!GpRkVZYu zzsF}1)7$?%s9g9CH=Zs+B%M_)+~*j3L0&Q9u7!|+T`^O{xE6qvAP?XWv9_MrZKdo& z%IyU)$Q95AB4!#hT!_dA>4e@zjOBD*Y=XjtMm)V|+IXzjuM;(l+8aA5#Kaz_$rR6! zj>#&^DidYD$nUY(D$mH`9eb|dtV0b{S>H6FBfq>t5`;OxA4Nn{J(+XihF(stSche7$es&~N$epi&PDM_N`As;*9D^L==2Q7Z2zD+CiU(|+-kL*VG+&9!Yb3LgPy?A zm7Z&^qRG_JIxK7-FBzZI3Q<;{`DIxtc48k> zc|0dmX;Z=W$+)qE)~`yn6MdoJ4co;%!`ddy+FV538Y)j(vg}5*k(WK)KWZ3WaOG!8 z!syGn=s{H$odtpqFrT#JGM*utN7B((abXnpDM6w56nhw}OY}0TiTG1#f*VFZr+^-g zbP10`$LPq_;PvrA1XXlyx2uM^mrjTzX}w{yuLo-cOClE8MMk47T25G8M!9Z5ypOSV zAJUBGEg5L2fY)ZGJb^E34R2zJ?}Vf>{~gB!8=5Z) z9y$>5c)=;o0HeHHSuE4U)#vG&KF|I%-cF6f$~pdYJWk_dD}iOA>iA$O$+4%@>JU08 zS`ep)$XLPJ+n0_i@PkF#ri6T8?ZeAot$6JIYHm&P6EB=BiaNY|aA$W0I+nz*zkz_z zkEru!tj!QUffq%)8y0y`T&`fuus-1p>=^hnBiBqD^hXrPs`PY9tU3m0np~rISY09> z`P3s=-kt_cYcxWd{de@}TwSqg*xVhp;E9zCsnXo6z z?f&Sv^U7n4`xr=mXle94HzOdN!2kB~4=%)u&N!+2;z6UYKUDqi-s6AZ!haB;@&B`? z_TRX0%@suz^TRdCb?!vNJYPY8L_}&07uySH9%W^Tc&1pia6y1q#?*Drf}GjGbPjBS zbOPcUY#*$3sL2x4v_i*Y=N7E$mR}J%|GUI(>WEr+28+V z%v5{#e!UF*6~G&%;l*q*$V?&r$Pp^sE^i-0$+RH3ERUUdQ0>rAq2(2QAbG}$y{de( z>{qD~GGuOk559Y@%$?N^1ApVL_a704>8OD%8Y%8B;FCt%AoPu8*D1 zLB5X>b}Syz81pn;xnB}%0FnwazlWfUV)Z-~rZg6~b z6!9J$EcE&sEbzcy?CI~=boWA&eeIa%z(7SE^qgVLz??1Vbc1*aRvc%Mri)AJaAG!p z$X!_9Ds;Zz)f+;%s&dRcJt2==P{^j3bf0M=nJd&xwUGlUFn?H=2W(*2I2Gdu zv!gYCwM10aeus)`RIZSrCK=&oKaO_Ry~D1B5!y0R=%!i2*KfXGYX&gNv_u+n9wiR5 z*e$Zjju&ODRW3phN925%S(jL+bCHv6rZtc?!*`1TyYXT6%Ju=|X;6D@lq$8T zW{Y|e39ioPez(pBH%k)HzFITXHvnD6hw^lIoUMA;qAJ^CU?top1fo@s7xT13Fvn1H z6JWa-6+FJF#x>~+A;D~;VDs26>^oH0EI`IYT2iagy23?nyJ==i{g4%HrAf1-*v zK1)~@&(KkwR7TL}L(A@C_S0G;-GMDy=MJn2$FP5s<%wC)4jC5PXoxrQBFZ_k0P{{s@sz+gX`-!=T8rcB(=7vW}^K6oLWMmp(rwDh}b zwaGGd>yEy6fHv%jM$yJXo5oMAQ>c9j`**}F?MCry;T@47@r?&sKHgVe$MCqk#Z_3S z1GZI~nOEN*P~+UaFGnj{{Jo@16`(qVNtbU>O0Hf57-P>x8Jikp=`s8xWs^dAJ9lCQ z)GFm+=OV%AMVqVATtN@|vp61VVAHRn87}%PC^RAzJ%JngmZTasWBAWsoAqBU+8L8u z4A&Pe?fmTm0?mK-BL9t+{y7o(7jm+RpOhL9KnY#E&qu^}B6=K_dB}*VlSEiC9fn)+V=J;OnN)Ta5v66ic1rG+dGAJ1 z1%Zb_+!$=tQ~lxQrzv3x#CPb?CekEkA}0MYSgx$Jdd}q8+R=ma$|&1a#)TQ=l$1tQ z=tL9&_^vJ)Pk}EDO-va`UCT1m#Uty1{v^A3P~83_#v^ozH}6*9mIjIr;t3Uv%@VeW zGL6(CwCUp)Jq%G0bIG%?{_*Y#5IHf*5M@wPo6A{$Um++Co$wLC=J1aoG93&T7Ho}P z=mGEPP7GbvoG!uD$k(H3A$Z))+i{Hy?QHdk>3xSBXR0j!11O^mEe9RHmw!pvzv?Ua~2_l2Yh~_!s1qS`|0~0)YsbHSz8!mG)WiJE| z2f($6TQtt6L_f~ApQYQKSb=`053LgrQq7G@98#igV>y#i==-nEjQ!XNu9 z~;mE+gtj4IDDNQJ~JVk5Ux6&LCSFL!y=>79kE9=V}J7tD==Ga+IW zX)r7>VZ9dY=V&}DR))xUoV!u(Z|%3ciQi_2jl}3=$Agc(`RPb z8kEBpvY>1FGQ9W$n>Cq=DIpski};nE)`p3IUw1Oz0|wxll^)4dq3;CCY@RyJgFgc# zKouFh!`?Xuo{IMz^xi-h=StCis_M7yq$u) z?XHvw*HP0VgR+KR6wI)jEMX|ssqYvSf*_3W8zVTQzD?3>H!#>InzpSO)@SC8q*ii- z%%h}_#0{4JG;Jm`4zg};BPTGkYamx$Xo#O~lBirRY)q=5M45n{GCfV7h9qwyu1NxOMoP4)jjZMxmT|IQQh0U7C$EbnMN<3)Kk?fFHYq$d|ICu>KbY_hO zTZM+uKHe(cIZfEqyzyYSUBZa8;Fcut-GN!HSA9ius`ltNebF46ZX_BbZNU}}ZOm{M2&nANL9@0qvih15(|`S~z}m&h!u4x~(%MAO$jHRWNfuxWF#B)E&g3ghSQ9|> z(MFaLQj)NE0lowyjvg8z0#m6FIuKE9lDO~Glg}nSb7`~^&#(Lw{}GVOS>U)m8bF}x zVjbXljBm34Cs-yM6TVusr+3kYFjr28STT3g056y3cH5Tmge~ASxBj z%|yb>$eF;WgrcOZf569sDZOVwoo%8>XO>XQOX1OyN9I-SQgrm;U;+#3OI(zrWyow3 zk==|{lt2xrQ%FIXOTejR>;wv(Pb8u8}BUpx?yd(Abh6? zsoO3VYWkeLnF43&@*#MQ9-i-d0t*xN-UEyNKeyNMHw|A(k(_6QKO=nKMCxD(W(Yop zsRQ)QeL4X3Lxp^L%wzi2-WVSsf61dqliPUM7srDB?Wm6Lzn0&{*}|IsKQW;02(Y&| zaTKv|`U(pSzuvR6Rduu$wzK_W-Y-7>7s?G$)U}&uK;<>vU}^^ns@Z!p+9?St1s)dG zK%y6xkPyyS1$~&6v{kl?Md6gwM|>mt6Upm>oa8RLD^8T{0?HC!Z>;(Bob7el(DV6x zi`I)$&E&ngwFS@bi4^xFLAn`=fzTC;aimE^!cMI2n@Vo%Ae-ne`RF((&5y6xsjjAZ zVguVoQ?Z9uk$2ON;ersE%PU*xGO@T*;j1BO5#TuZKEf(mB7|g7pcEA=nYJ{s3vlbg zd4-DUlD{*6o%Gc^N!Nptgay>j6E5;3psI+C3Q!1ZIbeCubW%w4pq9)MSDyB{HLm|k zxv-{$$A*pS@csolri$Ge<4VZ}e~78JOL-EVyrbxKra^d{?|NnPp86!q>t<&IP07?Z z^>~IK^k#OEKgRH+LjllZXk7iA>2cfH6+(e&9ku5poo~6y{GC5>(bRK7hwjiurqAiZ zg*DmtgY}v83IjE&AbiWgMyFbaRUPZ{lYiz$U^&Zt2YjG<%m((&_JUbZcfJ22(>bi5 z!J?<7AySj0JZ&<-qXX;mcV!f~>G=sB0KnjWca4}vrtunD^1TrpfeS^4dvFr!65knK zZh`d;*VOkPs4*-9kL>$GP0`(M!j~B;#x?Ba~&s6CopvO86oM?-? zOw#dIRc;6A6T?B`Qp%^<U5 z19x(ywSH$_N+Io!6;e?`tWaM$`=Db!gzx|lQ${DG!zb1Zl&|{kX0y6xvO1o z220r<-oaS^^R2pEyY;=Qllqpmue|5yI~D|iI!IGt@iod{Opz@*ml^w2bNs)p`M(Io z|E;;m*Xpjd9l)4G#KaWfV(t8YUn@A;nK^#xgv=LtnArX|vWQVuw3}B${h+frU2>9^ z!l6)!Uo4`5k`<<;E(ido7M6lKTgWezNLq>U*=uz&s=cc$1%>VrAeOoUtA|T6gO4>UNqsdK=NF*8|~*sl&wI=x9-EGiq*aqV!(VVXA57 zw9*o6Ir8Lj1npUXvlevtn(_+^X5rzdR>#(}4YcB9O50q97%rW2me5_L=%ffYPUSRc z!vv?Kv>dH994Qi>U(a<0KF6NH5b16enCp+mw^Hb3Xs1^tThFpz!3QuN#}KBbww`(h z7GO)1olDqy6?T$()R7y%NYx*B0k_2IBiZ14&8|JPFxeMF{vSTxF-Vi3+ZOI=Thq2} zyQgjYY1_7^ZQHh{?P))4+qUiQJLi1&{yE>h?~jU%tjdV0h|FENbM3X(KnJdPKc?~k zh=^Ixv*+smUll!DTWH!jrV*wSh*(mx0o6}1@JExzF(#9FXgmTXVoU+>kDe68N)dkQ zH#_98Zv$}lQwjKL@yBd;U(UD0UCl322=pav<=6g>03{O_3oKTq;9bLFX1ia*lw;#K zOiYDcBJf)82->83N_Y(J7Kr_3lE)hAu;)Q(nUVydv+l+nQ$?|%MWTy`t>{havFSQloHwiIkGK9YZ79^9?AZo0ZyQlVR#}lF%dn5n%xYksXf8gnBm=wO7g_^! zauQ-bH1Dc@3ItZ-9D_*pH}p!IG7j8A_o94#~>$LR|TFq zZ-b00*nuw|-5C2lJDCw&8p5N~Z1J&TrcyErds&!l3$eSz%`(*izc;-?HAFD9AHb-| z>)id`QCrzRws^9(#&=pIx9OEf2rmlob8sK&xPCWS+nD~qzU|qG6KwA{zbikcfQrdH z+ zQg>O<`K4L8rN7`GJB0*3<3`z({lWe#K!4AZLsI{%z#ja^OpfjU{!{)x0ZH~RB0W5X zTwN^w=|nA!4PEU2=LR05x~}|B&ZP?#pNgDMwD*ajI6oJqv!L81gu=KpqH22avXf0w zX3HjbCI!n9>l046)5rr5&v5ja!xkKK42zmqHzPx$9Nn_MZk`gLeSLgC=LFf;H1O#B zn=8|^1iRrujHfbgA+8i<9jaXc;CQBAmQvMGQPhFec2H1knCK2x!T`e6soyrqCamX% zTQ4dX_E*8so)E*TB$*io{$c6X)~{aWfaqdTh=xEeGvOAN9H&-t5tEE-qso<+C!2>+ zskX51H-H}#X{A75wqFe-J{?o8Bx|>fTBtl&tcbdR|132Ztqu5X0i-pisB-z8n71%q%>EF}yy5?z=Ve`}hVh{Drv1YWL zW=%ug_&chF11gDv3D6B)Tz5g54H0mDHNjuKZ+)CKFk4Z|$RD zfRuKLW`1B>B?*RUfVd0+u8h3r-{@fZ{k)c!93t1b0+Q9vOaRnEn1*IL>5Z4E4dZ!7 ztp4GP-^1d>8~LMeb}bW!(aAnB1tM_*la=Xx)q(I0Y@__Zd$!KYb8T2VBRw%e$iSdZ zkwdMwd}eV9q*;YvrBFTv1>1+}{H!JK2M*C|TNe$ZSA>UHKk);wz$(F$rXVc|sI^lD zV^?_J!3cLM;GJuBMbftbaRUs$;F}HDEDtIeHQ)^EJJ1F9FKJTGH<(Jj`phE6OuvE) zqK^K`;3S{Y#1M@8yRQwH`?kHMq4tHX#rJ>5lY3DM#o@or4&^_xtBC(|JpGTfrbGkA z2Tu+AyT^pHannww!4^!$5?@5v`LYy~T`qs7SYt$JgrY(w%C+IWA;ZkwEF)u5sDvOK zGk;G>Mh&elvXDcV69J_h02l&O;!{$({fng9Rlc3ID#tmB^FIG^w{HLUpF+iB`|
NnX)EH+Nua)3Y(c z&{(nX_ht=QbJ%DzAya}!&uNu!4V0xI)QE$SY__m)SAKcN0P(&JcoK*Lxr@P zY&P=}&B3*UWNlc|&$Oh{BEqwK2+N2U$4WB7Fd|aIal`FGANUa9E-O)!gV`((ZGCc$ zBJA|FFrlg~9OBp#f7aHodCe{6= zay$6vN~zj1ddMZ9gQ4p32(7wD?(dE>KA2;SOzXRmPBiBc6g`eOsy+pVcHu=;Yd8@{ zSGgXf@%sKKQz~;!J;|2fC@emm#^_rnO0esEn^QxXgJYd`#FPWOUU5b;9eMAF zZhfiZb|gk8aJIw*YLp4!*(=3l8Cp{(%p?ho22*vN9+5NLV0TTazNY$B5L6UKUrd$n zjbX%#m7&F#U?QNOBXkiiWB*_tk+H?N3`vg;1F-I+83{M2!8<^nydGr5XX}tC!10&e z7D36bLaB56WrjL&HiiMVtpff|K%|*{t*ltt^5ood{FOG0<>k&1h95qPio)2`eL${YAGIx(b4VN*~nKn6E~SIQUuRH zQ+5zP6jfnP$S0iJ@~t!Ai3o`X7biohli;E zT#yXyl{bojG@-TGZzpdVDXhbmF%F9+-^YSIv|MT1l3j zrxOFq>gd2%U}?6}8mIj?M zc077Zc9fq(-)4+gXv?Az26IO6eV`RAJz8e3)SC7~>%rlzDwySVx*q$ygTR5kW2ds- z!HBgcq0KON9*8Ff$X0wOq$`T7ml(@TF)VeoF}x1OttjuVHn3~sHrMB++}f7f9H%@f z=|kP_?#+fve@{0MlbkC9tyvQ_R?lRdRJ@$qcB(8*jyMyeME5ns6ypVI1Xm*Zr{DuS zZ!1)rQfa89c~;l~VkCiHI|PCBd`S*2RLNQM8!g9L6?n`^evQNEwfO@&JJRme+uopQX0%Jo zgd5G&#&{nX{o?TQwQvF1<^Cg3?2co;_06=~Hcb6~4XWpNFL!WU{+CK;>gH%|BLOh7@!hsa(>pNDAmpcuVO-?;Bic17R}^|6@8DahH)G z!EmhsfunLL|3b=M0MeK2vqZ|OqUqS8npxwge$w-4pFVXFq$_EKrZY?BuP@Az@(k`L z`ViQBSk`y+YwRT;&W| z2e3UfkCo^uTA4}Qmmtqs+nk#gNr2W4 zTH%hhErhB)pkXR{B!q5P3-OM+M;qu~f>}IjtF%>w{~K-0*jPVLl?Chz&zIdxp}bjx zStp&Iufr58FTQ36AHU)0+CmvaOpKF;W@sMTFpJ`j;3d)J_$tNQI^c<^1o<49Z(~K> z;EZTBaVT%14(bFw2ob@?JLQ2@(1pCdg3S%E4*dJ}dA*v}_a4_P(a`cHnBFJxNobAv zf&Zl-Yt*lhn-wjZsq<9v-IsXxAxMZ58C@e0!rzhJ+D@9^3~?~yllY^s$?&oNwyH!#~6x4gUrfxplCvK#!f z$viuszW>MFEcFL?>ux*((!L$;R?xc*myjRIjgnQX79@UPD$6Dz0jutM@7h_pq z0Zr)#O<^y_K6jfY^X%A-ip>P%3saX{!v;fxT-*0C_j4=UMH+Xth(XVkVGiiKE#f)q z%Jp=JT)uy{&}Iq2E*xr4YsJ5>w^=#-mRZ4vPXpI6q~1aFwi+lQcimO45V-JXP;>(Q zo={U`{=_JF`EQj87Wf}{Qy35s8r1*9Mxg({CvOt}?Vh9d&(}iI-quvs-rm~P;eRA@ zG5?1HO}puruc@S{YNAF3vmUc2B4!k*yi))<5BQmvd3tr}cIs#9)*AX>t`=~{f#Uz0 z0&Nk!7sSZwJe}=)-R^$0{yeS!V`Dh7w{w5rZ9ir!Z7Cd7dwZcK;BT#V0bzTt>;@Cl z#|#A!-IL6CZ@eHH!CG>OO8!%G8&8t4)Ro@}USB*k>oEUo0LsljsJ-%5Mo^MJF2I8- z#v7a5VdJ-Cd%(a+y6QwTmi+?f8Nxtm{g-+WGL>t;s#epv7ug>inqimZCVm!uT5Pf6 ziEgQt7^%xJf#!aPWbuC_3Nxfb&CFbQy!(8ANpkWLI4oSnH?Q3f?0k1t$3d+lkQs{~(>06l&v|MpcFsyAv zin6N!-;pggosR*vV=DO(#+}4ps|5$`udE%Kdmp?G7B#y%H`R|i8skKOd9Xzx8xgR$>Zo2R2Ytktq^w#ul4uicxW#{ zFjG_RNlBroV_n;a7U(KIpcp*{M~e~@>Q#Av90Jc5v%0c>egEdY4v3%|K1XvB{O_8G zkTWLC>OZKf;XguMH2-Pw{BKbFzaY;4v2seZV0>^7Q~d4O=AwaPhP3h|!hw5aqOtT@ z!SNz}$of**Bl3TK209@F=Tn1+mgZa8yh(Png%Zd6Mt}^NSjy)etQrF zme*llAW=N_8R*O~d2!apJnF%(JcN??=`$qs3Y+~xs>L9x`0^NIn!8mMRFA_tg`etw z3k{9JAjnl@ygIiJcNHTy02GMAvBVqEss&t2<2mnw!; zU`J)0>lWiqVqo|ex7!+@0i>B~BSU1A_0w#Ee+2pJx0BFiZ7RDHEvE*ptc9md(B{&+ zKE>TM)+Pd>HEmdJao7U@S>nL(qq*A)#eLOuIfAS@j`_sK0UEY6OAJJ-kOrHG zjHx`g!9j*_jRcJ%>CE9K2MVf?BUZKFHY?EpV6ai7sET-tqk=nDFh-(65rhjtlKEY% z@G&cQ<5BKatfdA1FKuB=i>CCC5(|9TMW%K~GbA4}80I5%B}(gck#Wlq@$nO3%@QP_ z8nvPkJFa|znk>V92cA!K1rKtr)skHEJD;k8P|R8RkCq1Rh^&}Evwa4BUJz2f!2=MH zo4j8Y$YL2313}H~F7@J7mh>u%556Hw0VUOz-Un@ZASCL)y8}4XXS`t1AC*^>PLwIc zUQok5PFS=*#)Z!3JZN&eZ6ZDP^-c@StY*t20JhCnbMxXf=LK#;`4KHEqMZ-Ly9KsS zI2VUJGY&PmdbM+iT)zek)#Qc#_i4uH43 z@T5SZBrhNCiK~~esjsO9!qBpaWK<`>!-`b71Y5ReXQ4AJU~T2Njri1CEp5oKw;Lnm)-Y@Z3sEY}XIgSy%xo=uek(kAAH5MsV$V3uTUsoTzxp_rF=tx zV07vlJNKtJhCu`b}*#m&5LV4TAE&%KtHViDAdv#c^x`J7bg z&N;#I2GkF@SIGht6p-V}`!F_~lCXjl1BdTLIjD2hH$J^YFN`7f{Q?OHPFEM$65^!u zNwkelo*5+$ZT|oQ%o%;rBX$+?xhvjb)SHgNHE_yP%wYkkvXHS{Bf$OiKJ5d1gI0j< zF6N}Aq=(WDo(J{e-uOecxPD>XZ@|u-tgTR<972`q8;&ZD!cep^@B5CaqFz|oU!iFj zU0;6fQX&~15E53EW&w1s9gQQ~Zk16X%6 zjG`j0yq}4deX2?Tr(03kg>C(!7a|b9qFI?jcE^Y>-VhudI@&LI6Qa}WQ>4H_!UVyF z((cm&!3gmq@;BD#5P~0;_2qgZhtJS|>WdtjY=q zLnHH~Fm!cxw|Z?Vw8*~?I$g#9j&uvgm7vPr#&iZgPP~v~BI4jOv;*OQ?jYJtzO<^y z7-#C={r7CO810!^s(MT!@@Vz_SVU)7VBi(e1%1rvS!?PTa}Uv`J!EP3s6Y!xUgM^8 z4f!fq<3Wer_#;u!5ECZ|^c1{|q_lh3m^9|nsMR1#Qm|?4Yp5~|er2?W^7~cl;_r4WSme_o68J9p03~Hc%X#VcX!xAu%1`R!dfGJCp zV*&m47>s^%Ib0~-2f$6oSgn3jg8m%UA;ArcdcRyM5;}|r;)?a^D*lel5C`V5G=c~k zy*w_&BfySOxE!(~PI$*dwG><+-%KT5p?whOUMA*k<9*gi#T{h3DAxzAPxN&Xws8o9Cp*`PA5>d9*Z-ynV# z9yY*1WR^D8|C%I@vo+d8r^pjJ$>eo|j>XiLWvTWLl(^;JHCsoPgem6PvegHb-OTf| zvTgsHSa;BkbG=(NgPO|CZu9gUCGr$8*EoH2_Z#^BnxF0yM~t`|9ws_xZ8X8iZYqh! zAh;HXJ)3P&)Q0(&F>!LN0g#bdbis-cQxyGn9Qgh`q+~49Fqd2epikEUw9caM%V6WgP)532RMRW}8gNS%V%Hx7apSz}tn@bQy!<=lbhmAH=FsMD?leawbnP5BWM0 z5{)@EEIYMu5;u)!+HQWhQ;D3_Cm_NADNeb-f56}<{41aYq8p4=93d=-=q0Yx#knGYfXVt z+kMxlus}t2T5FEyCN~!}90O_X@@PQpuy;kuGz@bWft%diBTx?d)_xWd_-(!LmVrh**oKg!1CNF&LX4{*j|) zIvjCR0I2UUuuEXh<9}oT_zT#jOrJAHNLFT~Ilh9hGJPI1<5`C-WA{tUYlyMeoy!+U zhA#=p!u1R7DNg9u4|QfED-2TuKI}>p#2P9--z;Bbf4Op*;Q9LCbO&aL2i<0O$ByoI z!9;Ght733FC>Pz>$_mw(F`zU?`m@>gE`9_p*=7o=7av`-&ifU(^)UU`Kg3Kw`h9-1 z6`e6+im=|m2v`pN(2dE%%n8YyQz;#3Q-|x`91z?gj68cMrHl}C25|6(_dIGk*8cA3 zRHB|Nwv{@sP4W+YZM)VKI>RlB`n=Oj~Rzx~M+Khz$N$45rLn6k1nvvD^&HtsMA4`s=MmuOJID@$s8Ph4E zAmSV^+s-z8cfv~Yd(40Sh4JG#F~aB>WFoX7ykaOr3JaJ&Lb49=B8Vk-SQT9%7TYhv z?-Pprt{|=Y5ZQ1?od|A<_IJU93|l4oAfBm?3-wk{O<8ea+`}u%(kub(LFo2zFtd?4 zwpN|2mBNywv+d^y_8#<$r>*5+$wRTCygFLcrwT(qc^n&@9r+}Kd_u@Ithz(6Qb4}A zWo_HdBj#V$VE#l6pD0a=NfB0l^6W^g`vm^sta>Tly?$E&{F?TTX~DsKF~poFfmN%2 z4x`Dc{u{Lkqz&y!33;X}weD}&;7p>xiI&ZUb1H9iD25a(gI|`|;G^NwJPv=1S5e)j z;U;`?n}jnY6rA{V^ zxTd{bK)Gi^odL3l989DQlN+Zs39Xe&otGeY(b5>rlIqfc7Ap4}EC?j<{M=hlH{1+d zw|c}}yx88_xQr`{98Z!d^FNH77=u(p-L{W6RvIn40f-BldeF-YD>p6#)(Qzf)lfZj z?3wAMtPPp>vMehkT`3gToPd%|D8~4`5WK{`#+}{L{jRUMt zrFz+O$C7y8$M&E4@+p+oV5c%uYzbqd2Y%SSgYy#xh4G3hQv>V*BnuKQhBa#=oZB~w{azUB+q%bRe_R^ z>fHBilnRTUfaJ201czL8^~Ix#+qOHSO)A|xWLqOxB$dT2W~)e-r9;bm=;p;RjYahB z*1hegN(VKK+ztr~h1}YP@6cfj{e#|sS`;3tJhIJK=tVJ-*h-5y9n*&cYCSdg#EHE# zSIx=r#qOaLJoVVf6v;(okg6?*L_55atl^W(gm^yjR?$GplNP>BZsBYEf_>wM0Lc;T zhf&gpzOWNxS>m+mN92N0{;4uw`P+9^*|-1~$uXpggj4- z^SFc4`uzj2OwdEVT@}Q`(^EcQ_5(ZtXTql*yGzdS&vrS_w>~~ra|Nb5abwf}Y!uq6R5f&6g2ge~2p(%c< z@O)cz%%rr4*cRJ5f`n@lvHNk@lE1a*96Kw6lJ~B-XfJW%?&-y?;E&?1AacU@`N`!O z6}V>8^%RZ7SQnZ-z$(jsX`amu*5Fj8g!3RTRwK^`2_QHe;_2y_n|6gSaGyPmI#kA0sYV<_qOZc#-2BO%hX)f$s-Z3xlI!ub z^;3ru11DA`4heAu%}HIXo&ctujzE2!6DIGE{?Zs>2}J+p&C$rc7gJC35gxhflorvsb%sGOxpuWhF)dL_&7&Z99=5M0b~Qa;Mo!j&Ti_kXW!86N%n= zSC@6Lw>UQ__F&+&Rzv?gscwAz8IP!n63>SP)^62(HK98nGjLY2*e^OwOq`3O|C92? z;TVhZ2SK%9AGW4ZavTB9?)mUbOoF`V7S=XM;#3EUpR+^oHtdV!GK^nXzCu>tpR|89 zdD{fnvCaN^^LL%amZ^}-E+214g&^56rpdc@yv0b<3}Ys?)f|fXN4oHf$six)-@<;W&&_kj z-B}M5U*1sb4)77aR=@%I?|Wkn-QJVuA96an25;~!gq(g1@O-5VGo7y&E_srxL6ZfS z*R%$gR}dyONgju*D&?geiSj7SZ@ftyA|}(*Y4KbvU!YLsi1EDQQCnb+-cM=K1io78o!v*);o<XwjaQH%)uIP&Zm?)Nfbfn;jIr z)d#!$gOe3QHp}2NBak@yYv3m(CPKkwI|{;d=gi552u?xj9ObCU^DJFQp4t4e1tPzM zvsRIGZ6VF+{6PvqsplMZWhz10YwS={?`~O0Ec$`-!klNUYtzWA^f9m7tkEzCy<_nS z=&<(awFeZvt51>@o_~>PLs05CY)$;}Oo$VDO)?l-{CS1Co=nxjqben*O1BR>#9`0^ zkwk^k-wcLCLGh|XLjdWv0_Hg54B&OzCE^3NCP}~OajK-LuRW53CkV~Su0U>zN%yQP zH8UH#W5P3-!ToO-2k&)}nFe`t+mdqCxxAHgcifup^gKpMObbox9LFK;LP3}0dP-UW z?Zo*^nrQ6*$FtZ(>kLCc2LY*|{!dUn$^RW~m9leoF|@Jy|M5p-G~j%+P0_#orRKf8 zvuu5<*XO!B?1E}-*SY~MOa$6c%2cM+xa8}_8x*aVn~57v&W(0mqN1W`5a7*VN{SUH zXz98DDyCnX2EPl-`Lesf`=AQT%YSDb`$%;(jUTrNen$NPJrlpPDP}prI>Ml!r6bCT;mjsg@X^#&<}CGf0JtR{Ecwd&)2zuhr#nqdgHj+g2n}GK9CHuwO zk>oZxy{vcOL)$8-}L^iVfJHAGfwN$prHjYV0ju}8%jWquw>}_W6j~m<}Jf!G?~r5&Rx)!9JNX!ts#SGe2HzobV5); zpj@&`cNcO&q+%*<%D7za|?m5qlmFK$=MJ_iv{aRs+BGVrs)98BlN^nMr{V_fcl_;jkzRju+c-y?gqBC_@J0dFLq-D9@VN&-`R9U;nv$Hg?>$oe4N&Ht$V_(JR3TG^! zzJsbQbi zFE6-{#9{G{+Z}ww!ycl*7rRdmU#_&|DqPfX3CR1I{Kk;bHwF6jh0opI`UV2W{*|nn zf_Y@%wW6APb&9RrbEN=PQRBEpM(N1w`81s=(xQj6 z-eO0k9=Al|>Ej|Mw&G`%q8e$2xVz1v4DXAi8G};R$y)ww638Y=9y$ZYFDM$}vzusg zUf+~BPX>(SjA|tgaFZr_e0{)+z9i6G#lgt=F_n$d=beAt0Sa0a7>z-?vcjl3e+W}+ z1&9=|vC=$co}-Zh*%3588G?v&U7%N1Qf-wNWJ)(v`iO5KHSkC5&g7CrKu8V}uQGcfcz zmBz#Lbqwqy#Z~UzHgOQ;Q-rPxrRNvl(&u6ts4~0=KkeS;zqURz%!-ERppmd%0v>iRlEf+H$yl{_8TMJzo0 z>n)`On|7=WQdsqhXI?#V{>+~}qt-cQbokEbgwV3QvSP7&hK4R{Z{aGHVS3;+h{|Hz z6$Js}_AJr383c_+6sNR|$qu6dqHXQTc6?(XWPCVZv=)D#6_;D_8P-=zOGEN5&?~8S zl5jQ?NL$c%O)*bOohdNwGIKM#jSAC?BVY={@A#c9GmX0=T(0G}xs`-%f3r=m6-cpK z!%waekyAvm9C3%>sixdZj+I(wQlbB4wv9xKI*T13DYG^T%}zZYJ|0$Oj^YtY+d$V$ zAVudSc-)FMl|54n=N{BnZTM|!>=bhaja?o7s+v1*U$!v!qQ%`T-6fBvmdPbVmro&d zk07TOp*KuxRUSTLRrBj{mjsnF8`d}rMViY8j`jo~Hp$fkv9F_g(jUo#Arp;Xw0M$~ zRIN!B22~$kx;QYmOkos@%|5k)!QypDMVe}1M9tZfkpXKGOxvKXB!=lo`p?|R1l=tA zp(1}c6T3Fwj_CPJwVsYtgeRKg?9?}%oRq0F+r+kdB=bFUdVDRPa;E~~>2$w}>O>v=?|e>#(-Lyx?nbg=ckJ#5U6;RT zNvHhXk$P}m9wSvFyU3}=7!y?Y z=fg$PbV8d7g25&-jOcs{%}wTDKm>!Vk);&rr;O1nvO0VrU&Q?TtYVU=ir`te8SLlS zKSNmV=+vF|ATGg`4$N1uS|n??f}C_4Sz!f|4Ly8#yTW-FBfvS48Tef|-46C(wEO_%pPhUC5$-~Y?!0vFZ^Gu`x=m7X99_?C-`|h zfmMM&Y@zdfitA@KPw4Mc(YHcY1)3*1xvW9V-r4n-9ZuBpFcf{yz+SR{ zo$ZSU_|fgwF~aakGr(9Be`~A|3)B=9`$M-TWKipq-NqRDRQc}ABo*s_5kV%doIX7LRLRau_gd@Rd_aLFXGSU+U?uAqh z8qusWWcvgQ&wu{|sRXmv?sl=xc<$6AR$+cl& zFNh5q1~kffG{3lDUdvEZu5c(aAG~+64FxdlfwY^*;JSS|m~CJusvi-!$XR`6@XtY2 znDHSz7}_Bx7zGq-^5{stTRy|I@N=>*y$zz>m^}^{d&~h;0kYiq8<^Wq7Dz0w31ShO^~LUfW6rfitR0(=3;Uue`Y%y@ex#eKPOW zO~V?)M#AeHB2kovn1v=n^D?2{2jhIQd9t|_Q+c|ZFaWt+r&#yrOu-!4pXAJuxM+Cx z*H&>eZ0v8Y`t}8{TV6smOj=__gFC=eah)mZt9gwz>>W$!>b3O;Rm^Ig*POZP8Rl0f zT~o=Nu1J|lO>}xX&#P58%Yl z83`HRs5#32Qm9mdCrMlV|NKNC+Z~ z9OB8xk5HJ>gBLi+m@(pvpw)1(OaVJKs*$Ou#@Knd#bk+V@y;YXT?)4eP9E5{J%KGtYinNYJUH9PU3A}66c>Xn zZ{Bn0<;8$WCOAL$^NqTjwM?5d=RHgw3!72WRo0c;+houoUA@HWLZM;^U$&sycWrFd zE7ekt9;kb0`lps{>R(}YnXlyGY}5pPd9zBpgXeJTY_jwaJGSJQC#-KJqmh-;ad&F- z-Y)E>!&`Rz!HtCz>%yOJ|v(u7P*I$jqEY3}(Z-orn4 zlI?CYKNl`6I){#2P1h)y(6?i;^z`N3bxTV%wNvQW+eu|x=kbj~s8rhCR*0H=iGkSj zk23lr9kr|p7#qKL=UjgO`@UnvzU)`&fI>1Qs7ubq{@+lK{hH* zvl6eSb9%yngRn^T<;jG1SVa)eA>T^XX=yUS@NCKpk?ovCW1D@!=@kn;l_BrG;hOTC z6K&H{<8K#dI(A+zw-MWxS+~{g$tI7|SfP$EYKxA}LlVO^sT#Oby^grkdZ^^lA}uEF zBSj$weBJG{+Bh@Yffzsw=HyChS(dtLE3i*}Zj@~!_T-Ay7z=B)+*~3|?w`Zd)Co2t zC&4DyB!o&YgSw+fJn6`sn$e)29`kUwAc+1MND7YjV%lO;H2}fNy>hD#=gT ze+-aFNpyKIoXY~Vq-}OWPBe?Rfu^{ps8>Xy%42r@RV#*QV~P83jdlFNgkPN=T|Kt7 zV*M`Rh*30&AWlb$;ae130e@}Tqi3zx2^JQHpM>j$6x`#{mu%tZlwx9Gj@Hc92IuY* zarmT|*d0E~vt6<+r?W^UW0&#U&)8B6+1+;k^2|FWBRP9?C4Rk)HAh&=AS8FS|NQaZ z2j!iZ)nbEyg4ZTp-zHwVlfLC~tXIrv(xrP8PAtR{*c;T24ycA-;auWsya-!kF~CWZ zw_uZ|%urXgUbc@x=L=_g@QJ@m#5beS@6W195Hn7>_}z@Xt{DIEA`A&V82bc^#!q8$ zFh?z_Vn|ozJ;NPd^5uu(9tspo8t%&-U9Ckay-s@DnM*R5rtu|4)~e)`z0P-sy?)kc zs_k&J@0&0!q4~%cKL)2l;N*T&0;mqX5T{Qy60%JtKTQZ-xb%KOcgqwJmb%MOOKk7N zgq})R_6**{8A|6H?fO+2`#QU)p$Ei2&nbj6TpLSIT^D$|`TcSeh+)}VMb}LmvZ{O| ze*1IdCt3+yhdYVxcM)Q_V0bIXLgr6~%JS<<&dxIgfL=Vnx4YHuU@I34JXA|+$_S3~ zy~X#gO_X!cSs^XM{yzDGNM>?v(+sF#<0;AH^YrE8smx<36bUsHbN#y57K8WEu(`qHvQ6cAZPo=J5C(lSmUCZ57Rj6cx!e^rfaI5%w}unz}4 zoX=nt)FVNV%QDJH`o!u9olLD4O5fl)xp+#RloZlaA92o3x4->?rB4`gS$;WO{R;Z3>cG3IgFX2EA?PK^M}@%1%A;?f6}s&CV$cIyEr#q5;yHdNZ9h{| z-=dX+a5elJoDo?Eq&Og!nN6A)5yYpnGEp}?=!C-V)(*~z-+?kY1Q7qs#Rsy%hu_60rdbB+QQNr?S1 z?;xtjUv|*E3}HmuNyB9aFL5H~3Ho0UsmuMZELp1a#CA1g`P{-mT?BchuLEtK}!QZ=3AWakRu~?f9V~3F;TV`5%9Pcs_$gq&CcU}r8gOO zC2&SWPsSG{&o-LIGTBqp6SLQZPvYKp$$7L4WRRZ0BR$Kf0I0SCFkqveCp@f)o8W)! z$%7D1R`&j7W9Q9CGus_)b%+B#J2G;l*FLz#s$hw{BHS~WNLODV#(!u_2Pe&tMsq={ zdm7>_WecWF#D=?eMjLj=-_z`aHMZ=3_-&E8;ibPmM}61i6J3is*=dKf%HC>=xbj4$ zS|Q-hWQ8T5mWde6h@;mS+?k=89?1FU<%qH9B(l&O>k|u_aD|DY*@~(`_pb|B#rJ&g zR0(~(68fpUPz6TdS@4JT5MOPrqDh5_H(eX1$P2SQrkvN8sTxwV>l0)Qq z0pzTuvtEAKRDkKGhhv^jk%|HQ1DdF%5oKq5BS>szk-CIke{%js?~%@$uaN3^Uz6Wf z_iyx{bZ(;9y4X&>LPV=L=d+A}7I4GkK0c1Xts{rrW1Q7apHf-))`BgC^0^F(>At1* za@e7{lq%yAkn*NH8Q1{@{lKhRg*^TfGvv!Sn*ed*x@6>M%aaqySxR|oNadYt1mpUZ z6H(rupHYf&Z z29$5g#|0MX#aR6TZ$@eGxxABRKakDYtD%5BmKp;HbG_ZbT+=81E&=XRk6m_3t9PvD zr5Cqy(v?gHcYvYvXkNH@S#Po~q(_7MOuCAB8G$a9BC##gw^5mW16cML=T=ERL7wsk zzNEayTG?mtB=x*wc@ifBCJ|irFVMOvH)AFRW8WE~U()QT=HBCe@s$dA9O!@`zAAT) zaOZ7l6vyR+Nk_OOF!ZlZmjoImKh)dxFbbR~z(cMhfeX1l7S_`;h|v3gI}n9$sSQ>+3@AFAy9=B_y$)q;Wdl|C-X|VV3w8 z2S#>|5dGA8^9%Bu&fhmVRrTX>Z7{~3V&0UpJNEl0=N32euvDGCJ>#6dUSi&PxFW*s zS`}TB>?}H(T2lxBJ!V#2taV;q%zd6fOr=SGHpoSG*4PDaiG0pdb5`jelVipkEk%FV zThLc@Hc_AL1#D&T4D=w@UezYNJ%0=f3iVRuVL5H?eeZM}4W*bomebEU@e2d`M<~uW zf#Bugwf`VezG|^Qbt6R_=U0}|=k;mIIakz99*>FrsQR{0aQRP6ko?5<7bkDN8evZ& zB@_KqQG?ErKL=1*ZM9_5?Pq%lcS4uLSzN(Mr5=t6xHLS~Ym`UgM@D&VNu8e?_=nSFtF$u@hpPSmI4Vo_t&v?>$~K4y(O~Rb*(MFy_igM7 z*~yYUyR6yQgzWnWMUgDov!!g=lInM+=lOmOk4L`O?{i&qxy&D*_qorRbDwj6?)!ef z#JLd7F6Z2I$S0iYI={rZNk*<{HtIl^mx=h>Cim*04K4+Z4IJtd*-)%6XV2(MCscPiw_a+y*?BKbTS@BZ3AUao^%Zi#PhoY9Vib4N>SE%4>=Jco0v zH_Miey{E;FkdlZSq)e<{`+S3W=*ttvD#hB8w=|2aV*D=yOV}(&p%0LbEWH$&@$X3x~CiF-?ejQ*N+-M zc8zT@3iwkdRT2t(XS`d7`tJQAjRmKAhiw{WOqpuvFp`i@Q@!KMhwKgsA}%@sw8Xo5Y=F zhRJZg)O4uqNWj?V&&vth*H#je6T}}p_<>!Dr#89q@uSjWv~JuW(>FqoJ5^ho0%K?E z9?x_Q;kmcsQ@5=}z@tdljMSt9-Z3xn$k)kEjK|qXS>EfuDmu(Z8|(W?gY6-l z@R_#M8=vxKMAoi&PwnaIYw2COJM@atcgfr=zK1bvjW?9B`-+Voe$Q+H$j!1$Tjn+* z&LY<%)L@;zhnJlB^Og6I&BOR-m?{IW;tyYC%FZ!&Z>kGjHJ6cqM-F z&19n+e1=9AH1VrVeHrIzqlC`w9=*zfmrerF?JMzO&|Mmv;!4DKc(sp+jy^Dx?(8>1 zH&yS_4yL7m&GWX~mdfgH*AB4{CKo;+egw=PrvkTaoBU+P-4u?E|&!c z)DKc;>$$B6u*Zr1SjUh2)FeuWLWHl5TH(UHWkf zLs>7px!c5n;rbe^lO@qlYLzlDVp(z?6rPZel=YB)Uv&n!2{+Mb$-vQl=xKw( zve&>xYx+jW_NJh!FV||r?;hdP*jOXYcLCp>DOtJ?2S^)DkM{{Eb zS$!L$e_o0(^}n3tA1R3-$SNvgBq;DOEo}fNc|tB%%#g4RA3{|euq)p+xd3I8^4E&m zFrD%}nvG^HUAIKe9_{tXB;tl|G<%>yk6R;8L2)KUJw4yHJXUOPM>(-+jxq4R;z8H#>rnJy*)8N+$wA$^F zN+H*3t)eFEgxLw+Nw3};4WV$qj&_D`%ADV2%r zJCPCo%{=z7;`F98(us5JnT(G@sKTZ^;2FVitXyLe-S5(hV&Ium+1pIUB(CZ#h|g)u zSLJJ<@HgrDiA-}V_6B^x1>c9B6%~847JkQ!^KLZ2skm;q*edo;UA)~?SghG8;QbHh z_6M;ouo_1rq9=x$<`Y@EA{C%6-pEV}B(1#sDoe_e1s3^Y>n#1Sw;N|}8D|s|VPd+g z-_$QhCz`vLxxrVMx3ape1xu3*wjx=yKSlM~nFgkNWb4?DDr*!?U)L_VeffF<+!j|b zZ$Wn2$TDv3C3V@BHpSgv3JUif8%hk%OsGZ=OxH@8&4`bbf$`aAMchl^qN>Eyu3JH} z9-S!x8-s4fE=lad%Pkp8hAs~u?|uRnL48O|;*DEU! zuS0{cpk%1E0nc__2%;apFsTm0bKtd&A0~S3Cj^?72-*Owk3V!ZG*PswDfS~}2<8le z5+W^`Y(&R)yVF*tU_s!XMcJS`;(Tr`J0%>p=Z&InR%D3@KEzzI+-2)HK zuoNZ&o=wUC&+*?ofPb0a(E6(<2Amd6%uSu_^-<1?hsxs~0K5^f(LsGqgEF^+0_H=uNk9S0bb!|O8d?m5gQjUKevPaO+*VfSn^2892K~%crWM8+6 z25@V?Y@J<9w%@NXh-2!}SK_(X)O4AM1-WTg>sj1{lj5@=q&dxE^9xng1_z9w9DK>| z6Iybcd0e zyi;Ew!KBRIfGPGytQ6}z}MeXCfLY0?9%RiyagSp_D1?N&c{ zyo>VbJ4Gy`@Fv+5cKgUgs~na$>BV{*em7PU3%lloy_aEovR+J7TfQKh8BJXyL6|P8un-Jnq(ghd!_HEOh$zlv2$~y3krgeH;9zC}V3f`uDtW(%mT#944DQa~^8ZI+zAUu4U(j0YcDfKR$bK#gvn_{JZ>|gZ5+)u?T$w7Q%F^;!Wk?G z(le7r!ufT*cxS}PR6hIVtXa)i`d$-_1KkyBU>qmgz-=T};uxx&sKgv48akIWQ89F{ z0XiY?WM^~;|T8zBOr zs#zuOONzH?svv*jokd5SK8wG>+yMC)LYL|vLqm^PMHcT=`}V$=nIRHe2?h)8WQa6O zPAU}d`1y(>kZiP~Gr=mtJLMu`i<2CspL|q2DqAgAD^7*$xzM`PU4^ga`ilE134XBQ z99P(LhHU@7qvl9Yzg$M`+dlS=x^(m-_3t|h>S}E0bcFMn=C|KamQ)=w2^e)35p`zY zRV8X?d;s^>Cof2SPR&nP3E+-LCkS0J$H!eh8~k0qo$}00b=7!H_I2O+Ro@3O$nPdm ztmbOO^B+IHzQ5w>@@@J4cKw5&^_w6s!s=H%&byAbUtczPQ7}wfTqxxtQNfn*u73Qw zGuWsrky_ajPx-5`R<)6xHf>C(oqGf_Fw|-U*GfS?xLML$kv;h_pZ@Kk$y0X(S+K80 z6^|z)*`5VUkawg}=z`S;VhZhxyDfrE0$(PMurAxl~<>lfZa>JZ288ULK7D` zl9|#L^JL}Y$j*j`0-K6kH#?bRmg#5L3iB4Z)%iF@SqT+Lp|{i`m%R-|ZE94Np7Pa5 zCqC^V3}B(FR340pmF*qaa}M}+h6}mqE~7Sh!9bDv9YRT|>vBNAqv09zXHMlcuhKD| zcjjA(b*XCIwJ33?CB!+;{)vX@9xns_b-VO{i0y?}{!sdXj1GM8+$#v>W7nw;+O_9B z_{4L;C6ol?(?W0<6taGEn1^uG=?Q3i29sE`RfYCaV$3DKc_;?HsL?D_fSYg}SuO5U zOB_f4^vZ_x%o`5|C@9C5+o=mFy@au{s)sKw!UgC&L35aH(sgDxRE2De%(%OT=VUdN ziVLEmdOvJ&5*tCMKRyXctCwQu_RH%;m*$YK&m;jtbdH#Ak~13T1^f89tn`A%QEHWs~jnY~E}p_Z$XC z=?YXLCkzVSK+Id`xZYTegb@W8_baLt-Fq`Tv|=)JPbFsKRm)4UW;yT+J`<)%#ue9DPOkje)YF2fsCilK9MIIK>p*`fkoD5nGfmLwt)!KOT+> zOFq*VZktDDyM3P5UOg`~XL#cbzC}eL%qMB=Q5$d89MKuN#$6|4gx_Jt0Gfn8w&q}%lq4QU%6#jT*MRT% zrLz~C8FYKHawn-EQWN1B75O&quS+Z81(zN)G>~vN8VwC+e+y(`>HcxC{MrJ;H1Z4k zZWuv$w_F0-Ub%MVcpIc){4PGL^I7M{>;hS?;eH!;gmcOE66z3;Z1Phqo(t zVP(Hg6q#0gIKgsg7L7WE!{Y#1nI(45tx2{$34dDd#!Z0NIyrm)HOn5W#7;f4pQci# zDW!FI(g4e668kI9{2+mLwB+=#9bfqgX%!B34V-$wwSN(_cm*^{y0jQtv*4}eO^sOV z*9xoNvX)c9isB}Tgx&ZRjp3kwhTVK?r9;n!x>^XYT z@Q^7zp{rkIs{2mUSE^2!Gf6$6;j~&4=-0cSJJDizZp6LTe8b45;{AKM%v99}{{FfC zz709%u0mC=1KXTo(=TqmZQ;c?$M3z(!xah>aywrj40sc2y3rKFw4jCq+Y+u=CH@_V zxz|qeTwa>+<|H%8Dz5u>ZI5MmjTFwXS-Fv!TDd*`>3{krWoNVx$<133`(ftS?ZPyY z&4@ah^3^i`vL$BZa>O|Nt?ucewzsF)0zX3qmM^|waXr=T0pfIb0*$AwU=?Ipl|1Y; z*Pk6{C-p4MY;j@IJ|DW>QHZQJcp;Z~?8(Q+Kk3^0qJ}SCk^*n4W zu9ZFwLHUx-$6xvaQ)SUQcYd6fF8&x)V`1bIuX@>{mE$b|Yd(qomn3;bPwnDUc0F=; zh*6_((%bqAYQWQ~odER?h>1mkL4kpb3s7`0m@rDKGU*oyF)$j~Ffd4fXV$?`f~rHf zB%Y)@5SXZvfwm10RY5X?TEo)PK_`L6qgBp=#>fO49$D zDq8Ozj0q6213tV5Qq=;fZ0$|KroY{Dz=l@lU^J)?Ko@ti20TRplXzphBi>XGx4bou zEWrkNjz0t5j!_ke{g5I#PUlEU$Km8g8TE|XK=MkU@PT4T><2OVamoK;wJ}3X0L$vX zgd7gNa359*nc)R-0!`2X@FOTB`+oETOPc=ubp5R)VQgY+5BTZZJ2?9QwnO=dnulIUF3gFn;BODC2)65)HeVd%t86sL7Rv^Y+nbn+&l z6BAJY(ETvwI)Ts$aiE8rht4KD*qNyE{8{x6R|%akbTBzw;2+6Echkt+W+`u^XX z_z&x%nDQ>P;GjjD{w zH}lENr;dU&FbEU?00aa80D$0M0RRB{U*7-#kbjS|qAG&4l5%47zyJ#WrfA#1$1Ctx zf&Z_d{GW=lf^w2#qRJ|CvSJUi(^E3iv~=^Z(zH}F)3Z%V3`@+rNB7gTVU{Bb~90p|f+0(v;nz01EG7yDMX9@S~__vVgv%rS$+?IH+oZ03D5zYrv|^ zC1J)SruYHmCki$jLBlTaE5&dFG9-kq3!^i>^UQL`%gn6)jz54$WDmeYdsBE9;PqZ_ zoGd=P4+|(-u4U1dbAVQrFWoNgNd;0nrghPFbQrJctO>nwDdI`Q^i0XJDUYm|T|RWc zZ3^Qgo_Qk$%Fvjj-G}1NB#ZJqIkh;kX%V{THPqOyiq)d)0+(r9o(qKlSp*hmK#iIY zA^)Vr$-Hz<#SF=0@tL@;dCQsm`V9s1vYNq}K1B)!XSK?=I1)tX+bUV52$YQu*0%fnWEukW>mxkz+%3-S!oguE8u#MGzST8_Dy^#U?fA@S#K$S@9msUiX!gd_ow>08w5)nX{-KxqMOo7d?k2&?Vf z&diGDtZr(0cwPe9z9FAUSD9KC)7(n^lMWuayCfxzy8EZsns%OEblHFSzP=cL6}?J| z0U$H!4S_TVjj<`6dy^2j`V`)mC;cB%* z8{>_%E1^FH!*{>4a7*C1v>~1*@TMcLK{7nEQ!_igZC}ikJ$*<$yHy>7)oy79A~#xE zWavoJOIOC$5b6*q*F_qN1>2#MY)AXVyr$6x4b=$x^*aqF*L?vmj>Mgv+|ITnw_BoW zO?jwHvNy^prH{9$rrik1#fhyU^MpFqF2fYEt(;4`Q&XWOGDH8k6M=%@fics4ajI;st# zCU^r1CK&|jzUhRMv;+W~6N;u<;#DI6cCw-otsc@IsN3MoSD^O`eNflIoR~l4*&-%RBYk@gb^|-JXs&~KuSEmMxB}xSb z@K76cXD=Y|=I&SNC2E+>Zg?R6E%DGCH5J1nU!A|@eX9oS(WPaMm==k2s_ueCqdZw| z&hqHp)47`c{BgwgvY2{xz%OIkY1xDwkw!<0veB#yF4ZKJyabhyyVS`gZepcFIk%e2 zTcrmt2@-8`7i-@5Nz>oQWFuMC_KlroCl(PLSodswHqJ3fn<;gxg9=}~3x_L3P`9Sn zChIf}8vCHvTriz~T2~FamRi?rh?>3bX1j}%bLH+uFX+p&+^aXbOK7clZxdU~6Uxgy z8R=obwO4dL%pmVo*Ktf=lH6hnlz_5k3cG;m8lgaPp~?eD!Yn2kf)tU6PF{kLyn|oI@eQ`F z3IF7~Blqg8-uwUuWZScRKn%c2_}dXB6Dx_&xR*n9M9LXasJhtZdr$vBY!rP{c@=)& z#!?L$2UrkvClwQO>U*fSMs67oSj2mxiJ$t;E|>q%Kh_GzzWWO&3;ufU%2z%ucBU8H z3WIwr$n)cfCXR&>tyB7BcSInK>=ByZA%;cVEJhcg<#6N{aZC4>K41XF>ZgjG`z_u& zGY?;Ad?-sgiOnI`oppF1o1Gurqbi*;#x2>+SSV6|1^G@ooVy@fg?wyf@0Y!UZ4!}nGuLeC^l)6pwkh|oRY`s1Pm$>zZ3u-83T|9 zGaKJIV3_x+u1>cRibsaJpJqhcm%?0-L;2 zitBrdRxNmb0OO2J%Y&Ym(6*`_P3&&5Bw157{o7LFguvxC$4&zTy#U=W*l&(Q2MNO} zfaUwYm{XtILD$3864IA_nn34oVa_g^FRuHL5wdUd)+W-p-iWCKe8m_cMHk+=? zeKX)M?Dt(|{r5t7IenkAXo%&EXIb-i^w+0CX0D=xApC=|Xy(`xy+QG^UyFe z+#J6h_&T5i#sV)hj3D4WN%z;2+jJcZxcI3*CHXGmOF3^)JD5j&wfX)e?-|V0GPuA+ zQFot%aEqGNJJHn$!_}#PaAvQ^{3-Ye7b}rWwrUmX53(|~i0v{}G_sI9uDch_brX&6 zWl5Ndj-AYg(W9CGfQf<6!YmY>Ey)+uYd_JNXH=>|`OH-CDCmcH(0%iD_aLlNHKH z7bcW-^5+QV$jK?R*)wZ>r9t}loM@XN&M-Pw=F#xn(;u3!(3SXXY^@=aoj70;_=QE9 zGghsG3ekq#N||u{4We_25U=y#T*S{4I{++Ku)> zQ!DZW;pVcn>b;&g2;YE#+V`v*Bl&Y-i@X6D*OpNA{G@JAXho&aOk(_j^weW{#3X5Y z%$q_wpb07EYPdmyH(1^09i$ca{O<}7) zRWncXdSPgBE%BM#by!E>tdnc$8RwUJg1*x($6$}ae$e9Knj8gvVZe#bLi!<+&BkFj zg@nOpDneyc+hU9P-;jmOSMN|*H#>^Ez#?;%C3hg_65leSUm;iz)UkW)jX#p)e&S&M z1|a?wDzV5NVnlhRBCd_;F87wp>6c<&nkgvC+!@KGiIqWY4l}=&1w7|r6{oBN8xyzh zG$b#2=RJp_iq6)#t5%yLkKx(0@D=C3w+oiXtSuaQ%I1WIb-eiE$d~!)b@|4XLy!CZ z9p=t=%3ad@Ep+<9003D2KZ5VyP~_n$=;~r&YUg5UZ0KVD&tR1DHy9x)qWtKJp#Kq# zP*8p#W(8JJ_*h_3W}FlvRam?<4Z+-H77^$Lvi+#vmhL9J zJ<1SV45xi;SrO2f=-OB(7#iNA5)x1uNC-yNxUw|!00vcW2PufRm>e~toH;M0Q85MQLWd?3O{i8H+5VkR@l9Dg-ma ze2fZ%>G(u5(k9EHj2L6!;(KZ8%8|*-1V|B#EagbF(rc+5iL_5;Eu)L4Z-V;0HfK4d z*{utLse_rvHZeQ>V5H=f78M3Ntg1BPxFCVD{HbNA6?9*^YIq;B-DJd{Ca2L#)qWP? zvX^NhFmX?CTWw&Ns}lgs;r3i+Bq@y}Ul+U%pzOS0Fcv9~aB(0!>GT0)NO?p=25LjN z2bh>6RhgqD7bQj#k-KOm@JLgMa6>%-ok1WpOe)FS^XOU{c?d5shG(lIn3GiVBxmg`u%-j=)^v&pX1JecJics3&jvPI)mDut52? z3jEA)DM%}BYbxxKrizVYwq?(P&19EXlwD9^-6J+4!}9{ywR9Gk42jjAURAF&EO|~N z)?s>$Da@ikI4|^z0e{r`J8zIs>SpM~Vn^{3fArRu;?+43>lD+^XtUcY1HidJwnR6+ z!;oG2=B6Z_=M%*{z-RaHc(n|1RTKQdNjjV!Pn9lFt^4w|AeN06*j}ZyhqZ^!-=cyGP_ShV1rGxkx8t zB;8`h!S{LD%ot``700d0@Grql(DTt4Awgmi+Yr0@#jbe=2#UkK%rv=OLqF)9D7D1j z!~McAwMYkeaL$~kI~90)5vBhBzWYc3Cj1WI0RS`z000R8-@ET0dA~*r(gSiCJmQMN&4%1D zyVNf0?}sBH8zNbBLn>~(W{d3%@kL_eQ6jEcR{l>C|JK z(R-fA!z|TTRG40|zv}7E@PqCAXP3n`;%|SCQ|ZS%ym$I{`}t3KPL&^l5`3>yah4*6 zifO#{VNz3)?ZL$be;NEaAk9b#{tV?V7 zP|wf5YA*1;s<)9A4~l3BHzG&HH`1xNr#%){4xZ!jq%o=7nN*wMuXlFV{HaiQLJ`5G zBhDi#D(m`Q1pLh@Tq+L;OwuC52RdW7b8}~60WCOK5iYMUad9}7aWBuILb({5=z~YF zt?*Jr5NG+WadM{mDL>GyiByCuR)hd zA=HM?J6l1Xv0Dl+LW@w$OTcEoOda^nFCw*Sy^I@$sSuneMl{4ys)|RY#9&NxW4S)9 zq|%83IpslTLoz~&vTo!Ga@?rj_kw{|k{nv+w&Ku?fyk4Ki4I?);M|5Axm)t+BaE)D zm(`AQ#k^DWrjbuXoJf2{Aj^KT zFb1zMSqxq|vceV+Mf-)$oPflsO$@*A0n0Z!R{&(xh8s}=;t(lIy zv$S8x>m;vQNHuRzoaOo?eiWFe{0;$s`Bc+Osz~}Van${u;g(su`3lJ^TEfo~nERfP z)?aFzpDgnLYiERsKPu|0tq4l2wT)Atr6Qb%m-AUn6HnCue*yWICp7TjW$@sO zm5rm4aTcPQ(rfi7a`xP7cKCFrJD}*&_~xgLyr^-bmsL}y;A5P|al8J3WUoBSjqu%v zxC;mK!g(7r6RRJ852Z~feoC&sD3(6}^5-uLK8o)9{8L_%%rItZK9C){UxB|;G>JbP zsRRtS4-3B*5c+K2kvmgZK8472%l>3cntWUOVHxB|{Ay~aOg5RN;{PJgeVD*H%ac+y!h#wi%o2bF2Ca8IyMyH{>4#{E_8u^@+l-+n=V}Sq?$O z{091@v%Bd*3pk0^2UtiF9Z+(a@wy6 zUdw8J*ze$K#=$48IBi1U%;hmhO>lu!uU;+RS}p&6@rQila7WftH->*A4=5W|Fmtze z)7E}jh@cbmr9iup^i%*(uF%LG&!+Fyl@LFA-}Ca#bxRfDJAiR2dt6644TaYw1Ma79 zt8&DYj31j^5WPNf5P&{)J?WlCe@<3u^78wnd(Ja4^a>{^Tw}W>|Cjt^If|7l^l)^Q zbz|7~CF(k_9~n|h;ysZ+jHzkXf(*O*@5m zLzUmbHp=x!Q|!9NVXyipZ3)^GuIG$k;D)EK!a5=8MFLI_lpf`HPKl=-Ww%z8H_0$j ztJ||IfFG1lE9nmQ0+jPQy zCBdKkjArH@K7jVcMNz);Q(Q^R{d5G?-kk;Uu_IXSyWB)~KGIizZL(^&qF;|1PI7!E zTP`%l)gpX|OFn&)M%txpQ2F!hdA~hX1Cm5)IrdljqzRg!f{mN%G~H1&oqe`5eJCIF zHdD7O;AX-{XEV(a`gBFJ9ews#CVS2y!&>Cm_dm3C8*n3MA*e67(WC?uP@8TXuMroq z{#w$%z@CBIkRM7?}Xib+>hRjy?%G!fiw8! z8(gB+8J~KOU}yO7UGm&1g_MDJ$IXS!`+*b*QW2x)9>K~Y*E&bYMnjl6h!{17_8d!%&9D`a7r&LKZjC<&XOvTRaKJ1 zUY@hl5^R&kZl3lU3njk`3dPzxj$2foOL26r(9zsVF3n_F#v)s5vv3@dgs|lP#eylq62{<-vczqP!RpVBTgI>@O6&sU>W|do17+#OzQ7o5A$ICH z?GqwqnK^n2%LR;$^oZM;)+>$X3s2n}2jZ7CdWIW0lnGK-b#EG01)P@aU`pg}th&J-TrU`tIpb5t((0eu|!u zQz+3ZiOQ^?RxxK4;zs=l8q!-n7X{@jSwK(iqNFiRColuEOg}!7cyZi`iBX4g1pNBj zAPzL?P^Ljhn;1$r8?bc=#n|Ed7wB&oHcw()&*k#SS#h}jO?ZB246EGItsz*;^&tzp zu^YJ0=lwsi`eP_pU8}6JA7MS;9pfD;DsSsLo~ogzMNP70@@;Fm8f0^;>$Z>~}GWRw!W5J3tNX*^2+1f3hz{~rIzJo z6W%J(H!g-eI_J1>0juX$X4Cl6i+3wbc~k146UIX&G22}WE>0ga#WLsn9tY(&29zBvH1$`iWtTe zG2jYl@P!P)eb<5DsR72BdI7-zP&cZNI{7q3e@?N8IKc4DE#UVr->|-ryuJXk^u^>4 z$3wE~=q390;XuOQP~TNoDR?#|NSPJ%sTMInA6*rJ%go|=YjGe!B>z6u$IhgQSwoV* zjy3F2#I>uK{42{&IqP59)Y(1*Z>>#W8rCf4_eVsH)`v!P#^;BgzKDR`ARGEZzkNX+ zJUQu=*-ol=Xqqt5=`=pA@BIn@6a9G8C{c&`i^(i+BxQO9?YZ3iu%$$da&Kb?2kCCo zo7t$UpSFWqmydXf@l3bVJ=%K?SSw)|?srhJ-1ZdFu*5QhL$~-IQS!K1s@XzAtv6*Y zl8@(5BlWYLt1yAWy?rMD&bwze8bC3-GfNH=p zynNFCdxyX?K&G(ZZ)afguQ2|r;XoV^=^(;Cku#qYn4Lus`UeKt6rAlFo_rU`|Rq z&G?~iWMBio<78of-2X(ZYHx~=U0Vz4btyXkctMKdc9UM!vYr~B-(>)(Hc|D zMzkN4!PBg%tZoh+=Gba!0++d193gbMk2&krfDgcbx0jI92cq?FFESVg0D$>F+bil} zY~$)|>1HZsX=5sAZ2WgPB5P=8X#TI+NQ(M~GqyVB53c6IdX=k>Wu@A0Svf5#?uHaF zsYn|koIi3$(%GZ2+G+7Fv^lHTb#5b8sAHSTnL^qWZLM<(1|9|QFw9pnRU{svj}_Al zL)b9>fN{QiA($8peNEJyy`(a{&uh-T4_kdZFIVsKKVM(?05}76EEz?#W za^fiZOAd14IJ4zLX-n7Lq0qlQ^lW8Cvz4UKkV9~P}>sq0?xD3vg+$4vLm~C(+ zM{-3Z#qnZ09bJ>}j?6ry^h+@PfaD7*jZxBEY4)UG&daWb??6)TP+|3#Z&?GL?1i+280CFsE|vIXQbm| zM}Pk!U`U5NsNbyKzkrul-DzwB{X?n3E6?TUHr{M&+R*2%yOiXdW-_2Yd6?38M9Vy^ z*lE%gA{wwoSR~vN0=no}tP2Ul5Gk5M(Xq`$nw#ndFk`tcpd5A=Idue`XZ!FS>Q zG^0w#>P4pPG+*NC9gLP4x2m=cKP}YuS!l^?sHSFftZy{4CoQrb_ z^20(NnG`wAhMI=eq)SsIE~&Gp9Ne0nD4%Xiu|0Fj1UFk?6avDqjdXz{O1nKao*46y zT8~iA%Exu=G#{x=KD;_C&M+Zx4+n`sHT>^>=-1YM;H<72k>$py1?F3#T1*ef9mLZw z5naLQr?n7K;2l+{_uIw*_1nsTn~I|kkCgrn;|G~##hM;9l7Jy$yJfmk+&}W@JeKcF zx@@Woiz8qdi|D%aH3XTx5*wDlbs?dC1_nrFpm^QbG@wM=i2?Zg;$VK!c^Dp8<}BTI zyRhAq@#%2pGV49*Y5_mV4+OICP|%I(dQ7x=6Ob}>EjnB_-_18*xrY?b%-yEDT(wrO z9RY2QT0`_OpGfMObKHV;QLVnrK%mc?$WAdIT`kJQT^n%GuzE7|9@k3ci5fYOh(287 zuIbg!GB3xLg$YN=n)^pHGB0jH+_iIiC=nUcD;G6LuJsjn2VI1cyZx=a?ShCsF==QK z;q~*m&}L<-cb+mDDXzvvrRsybcgQ;Vg21P(uLv5I+eGc7o7tc6`;OA9{soHFOz zT~2?>Ts}gprIX$wRBb4yE>ot<8+*Bv`qbSDv*VtRi|cyWS>)Fjs>fkNOH-+PX&4(~ z&)T8Zam2L6puQl?;5zg9h<}k4#|yH9czHw;1jw-pwBM*O2hUR6yvHATrI%^mvs9q_ z&ccT0>f#eDG<^WG^q@oVqlJrhxH)dcq2cty@l3~|5#UDdExyXUmLQ}f4#;6fI{f^t zDCsgIJ~0`af%YR%Ma5VQq-p21k`vaBu6WE?66+5=XUd%Ay%D$irN>5LhluRWt7 zov-=f>QbMk*G##&DTQyou$s7UqjjW@k6=!I@!k+S{pP8R(2=e@io;N8E`EOB;OGoI zw6Q+{X1_I{OO0HPpBz!X!@`5YQ2)t{+!?M_iH25X(d~-Zx~cXnS9z>u?+If|iNJbx zyFU2d1!ITX64D|lE0Z{dLRqL1Ajj=CCMfC4lD3&mYR_R_VZ>_7_~|<^o*%_&jevU+ zQ4|qzci=0}Jydw|LXLCrOl1_P6Xf@c0$ieK2^7@A9UbF{@V_0p%lqW|L?5k>bVM8|p5v&2g;~r>B8uo<4N+`B zH{J)h;SYiIVx@#jI&p-v3dwL5QNV1oxPr8J%ooezTnLW>i*3Isb49%5i!&ac_dEXv zvXmVUck^QHmyrF8>CGXijC_R-y(Qr{3Zt~EmW)-nC!tiH`wlw5D*W7Pip;T?&j%kX z6DkZX4&}iw>hE(boLyjOoupf6JpvBG8}jIh!!VhnD0>}KSMMo{1#uU6kiFcA04~|7 zVO8eI&x1`g4CZ<2cYUI(n#wz2MtVFHx47yE5eL~8bot~>EHbevSt}LLMQX?odD{Ux zJMnam{d)W4da{l7&y-JrgiU~qY3$~}_F#G7|MxT)e;G{U`In&?`j<5D->}cb{}{T(4DF0BOk-=1195KB-E*o@c?`>y#4=dMtYtSY=&L{!TAjFVcq0y@AH`vH! z$41+u!Ld&}F^COPgL(EE{0X7LY&%D7-(?!kjFF7=qw<;`V{nwWBq<)1QiGJgUc^Vz ztMUlq1bZqKn17|6x6iAHbWc~l1HcmAxr%$Puv!znW)!JiukwIrqQ00|H$Z)OmGG@= zv%A8*4cq}(?qn4rN6o`$Y))(MyXr8R<2S^J+v(wmFmtac!%VOfN?&(8Nr!T@kV`N; z*Q33V3t`^rN&aBiHet)18wy{*wi1=W!B%B-Q6}SCrUl$~Hl{@!95ydml@FK8P=u4s z4e*7gV2s=YxEvskw2Ju!2%{8h01rx-3`NCPc(O zH&J0VH5etNB2KY6k4R@2Wvl^Ck$MoR3=)|SEclT2ccJ!RI9Nuter7u9@;sWf-%um;GfI!=eEIQ2l2p_YWUd{|6EG ze{yO6;lMc>;2tPrsNdi@&1K6(1;|$xe8vLgiouj%QD%gYk`4p{Ktv9|j+!OF-P?@p z;}SV|oIK)iwlBs+`ROXkhd&NK zzo__r!B>tOXpBJMDcv!Mq54P+n4(@dijL^EpO1wdg~q+!DT3lB<>9AANSe!T1XgC=J^)IP0XEZ()_vpu!!3HQyJhwh?r`Ae%Yr~b% zO*NY9t9#qWa@GCPYOF9aron7thfWT`eujS4`t2uG6)~JRTI;f(ZuoRQwjZjp5Pg34 z)rp$)Kr?R+KdJ;IO;pM{$6|2y=k_siqvp%)2||cHTe|b5Ht8&A{wazGNca zX$Ol?H)E_R@SDi~4{d-|8nGFhZPW;Cts1;08TwUvLLv&_2$O6Vt=M)X;g%HUr$&06 zISZb(6)Q3%?;3r~*3~USIg=HcJhFtHhIV(siOwV&QkQe#J%H9&E21!C*d@ln3E@J* zVqRO^<)V^ky-R|%{(9`l-(JXq9J)1r$`uQ8a}$vr9E^nNiI*thK8=&UZ0dsFN_eSl z(q~lnD?EymWLsNa3|1{CRPW60>DSkY9YQ;$4o3W7Ms&@&lv9eH!tk~N&dhqX&>K@} zi1g~GqglxkZ5pEFkllJ)Ta1I^c&Bt6#r(QLQ02yHTaJB~- zCcE=5tmi`UA>@P=1LBfBiqk)HB4t8D?02;9eXj~kVPwv?m{5&!&TFYhu>3=_ zsGmYZ^mo*-j69-42y&Jj0cBLLEulNRZ9vXE)8~mt9C#;tZs;=#M=1*hebkS;7(aGf zcs7zH(I8Eui9UU4L--))yy`&d&$In&VA2?DAEss4LAPCLd>-$i?lpXvn!gu^JJ$(DoUlc6wE98VLZ*z`QGQov5l4Fm_h?V-;mHLYDVOwKz7>e4+%AzeO>P6v}ndPW| zM>m#6Tnp7K?0mbK=>gV}=@k*0Mr_PVAgGMu$j+pWxzq4MAa&jpCDU&-5eH27Iz>m^ zax1?*HhG%pJ((tkR(V(O(L%7v7L%!_X->IjS3H5kuXQT2!ow(;%FDE>16&3r){!ex zhf==oJ!}YU89C9@mfDq!P3S4yx$aGB?rbtVH?sHpg?J5C->!_FHM%Hl3#D4eplxzQ zRA+<@LD%LKSkTk2NyWCg7u=$%F#;SIL44~S_OGR}JqX}X+=bc@swpiClB`Zbz|f!4 z7Ysah7OkR8liXfI`}IIwtEoL}(URrGe;IM8%{>b1SsqXh)~w}P>yiFRaE>}rEnNkT z!HXZUtxUp1NmFm)Dm@-{FI^aRQqpSkz}ZSyKR%Y}YHNzBk)ZIp} zMtS=aMvkgWKm9&oTcU0?S|L~CDqA+sHpOxwnswF-fEG)cXCzUR?ps@tZa$=O)=L+5 zf%m58cq8g_o}3?Bhh+c!w4(7AjxwQ3>WnVi<{{38g7yFboo>q|+7qs<$8CPXUFAN< zG&}BHbbyQ5n|qqSr?U~GY{@GJ{(Jny{bMaOG{|IkUj7tj^9pa9|FB_<+KHLxSxR;@ zHpS$4V)PP+tx}22fWx(Ku9y+}Ap;VZqD0AZW4gCDTPCG=zgJmF{|x;(rvdM|2|9a}cex6xrMkERnkE;}jvU-kmzd%_J50$M`lIPCKf+^*zL=@LW`1SaEc%=m zQ+lT06Gw+wVwvQ9fZ~#qd430v2HndFsBa9WjD0P}K(rZYdAt^5WQIvb%D^Q|pkVE^ zte$&#~zmULFACGfS#g=2OLOnIf2Of-k!(BIHjs77nr!5Q1*I9 z1%?=~#Oss!rV~?-6Gm~BWJiA4mJ5TY&iPm_$)H1_rTltuU1F3I(qTQ^U$S>%$l z)Wx1}R?ij0idp@8w-p!Oz{&*W;v*IA;JFHA9%nUvVDy7Q8woheC#|8QuDZb-L_5@R zOqHwrh|mVL9b=+$nJxM`3eE{O$sCt$UK^2@L$R(r^-_+z?lOo+me-VW=Zw z-Bn>$4ovfWd%SPY`ab-u9{INc*k2h+yH%toDHIyqQ zO68=u`N}RIIs7lsn1D){)~%>ByF<>i@qFb<-axvu(Z+6t7v<^z&gm9McRB~BIaDn$ z#xSGT!rzgad8o>~kyj#h1?7g96tOcCJniQ+*#=b7wPio>|6a1Z?_(TS{)KrPe}(8j z!#&A=k(&Pj^F;r)CI=Z{LVu>uj!_W1q4b`N1}E(i%;BWjbEcnD=mv$FL$l?zS6bW!{$7j1GR5ocn94P2u{ z70tAAcpqtQo<@cXw~@i-@6B23;317|l~S>CB?hR5qJ%J3EFgyBdJd^fHZu7AzHF(BQ!tyAz^L0`X z23S4Fe{2X$W0$zu9gm%rg~A>ijaE#GlYlrF9$ds^QtaszE#4M(OLVP2O-;XdT(XIC zatwzF*)1c+t~c{L=fMG8Z=k5lv>U0;C{caN1NItnuSMp)6G3mbahu>E#sj&oy94KC zpH}8oEw{G@N3pvHhp{^-YaZeH;K+T_1AUv;IKD<=mv^&Ueegrb!yf`4VlRl$M?wsl zZyFol(2|_QM`e_2lYSABpKR{{NlxlDSYQNkS;J66aT#MSiTx~;tUmvs-b*CrR4w=f z8+0;*th6kfZ3|5!Icx3RV11sp=?`0Jy3Fs0N4GZQMN=8HmT6%x9@{Dza)k}UwL6JT zHRDh;%!XwXr6yuuy`4;Xsn0zlR$k%r%9abS1;_v?`HX_hI|+EibVnlyE@3aL5vhQq zlIG?tN^w@0(v9M*&L+{_+RQZw=o|&BRPGB>e5=ys7H`nc8nx)|-g;s7mRc7hg{GJC zAe^vCIJhajmm7C6g! zL&!WAQ~5d_5)00?w_*|*H>3$loHrvFbitw#WvLB!JASO?#5Ig5$Ys10n>e4|3d;tS zELJ0|R4n3Az(Fl3-r^QiV_C;)lQ1_CW{5bKS15U|E9?ZgLec@%kXr84>5jV2a5v=w z?pB1GPdxD$IQL4)G||B_lI+A=08MUFFR4MxfGOu07vfIm+j=z9tp~5i_6jb`tR>qV z$#`=BQ*jpCjm$F0+F)L%xRlnS%#&gro6PiRfu^l!EVan|r3y}AHJQOORGx4~ z&<)3=K-tx518DZyp%|!EqpU!+X3Et7n2AaC5(AtrkW>_57i}$eqs$rupubg0a1+WO zGHZKLN2L0D;ab%{_S1Plm|hx8R?O14*w*f&2&bB050n!R2by zw!@XOQx$SqZ5I<(Qu$V6g>o#A!JVwErWv#(Pjx=KeS0@hxr4?13zj#oWwPS(7Ro|v z>Mp@Kmxo79q|}!5qtX2-O@U&&@6s~!I&)1WQIl?lTnh6UdKT_1R640S4~f=_xoN3- zI+O)$R@RjV$F=>Ti7BlnG1-cFKCC(t|Qjm{SalS~V-tX#+2ekRhwmN zZr`8{QF6y~Z!D|{=1*2D-JUa<(1Z=;!Ei!KiRNH?o{p5o3crFF=_pX9O-YyJchr$~ zRC`+G+8kx~fD2k*ZIiiIGR<8r&M@3H?%JVOfE>)})7ScOd&?OjgAGT@WVNSCZ8N(p zuQG~76GE3%(%h1*vUXg$vH{ua0b`sQ4f0*y=u~lgyb^!#CcPJa2mkSEHGLsnO^kb$ zru5_l#nu=Y{rSMWiYx?nO{8I!gH+?wEj~UM?IrG}E|bRIBUM>UlY<`T1EHpRr36vv zBi&dG8oxS|J$!zoaq{+JpJy+O^W(nt*|#g32bd&K^w-t>!Vu9N!k9eA8r!Xc{utY> zg9aZ(D2E0gL#W0MdjwES-7~Wa8iubPrd?8-$C4BP?*wok&O8+ykOx{P=Izx+G~hM8 z*9?BYz!T8~dzcZr#ux8kS7u7r@A#DogBH8km8Ry4slyie^n|GrTbO|cLhpqgMdsjX zJ_LdmM#I&4LqqsOUIXK8gW;V0B(7^$y#h3h>J0k^WJfAMeYek%Y-Dcb_+0zPJez!GM zAmJ1u;*rK=FNM0Nf}Y!!P9c4)HIkMnq^b;JFd!S3?_Qi2G#LIQ)TF|iHl~WKK6JmK zbv7rPE6VkYr_%_BT}CK8h=?%pk@3cz(UrZ{@h40%XgThP*-Oeo`T0eq9 zA8BnWZKzCy5e&&_GEsU4*;_k}(8l_&al5K-V*BFM=O~;MgRkYsOs%9eOY6s6AtE*<7GQAR2ulC3RAJrG_P1iQK5Z~&B z&f8X<>yJV6)oDGIlS$Y*D^Rj(cszTy5c81a5IwBr`BtnC6_e`ArI8CaTX_%rx7;cn zR-0?J_LFg*?(#n~G8cXut(1nVF0Oka$A$1FGcERU<^ggx;p@CZc?3UB41RY+wLS`LWFNSs~YP zuw1@DNN3lTd|jDL7gjBsd9}wIw}4xT2+8dBQzI00m<@?c2L%>}QLfK5%r!a-iII`p zX@`VEUH)uj^$;7jVUYdADQ2k*!1O3WdfgF?OMtUXNpQ1}QINamBTKDuv19^{$`8A1 zeq%q*O0mi@(%sZU>Xdb0Ru96CFqk9-L3pzLVsMQ`Xpa~N6CR{9Rm2)A|CI21L(%GW zh&)Y$BNHa=FD+=mBw3{qTgw)j0b!Eahs!rZnpu)z!!E$*eXE~##yaXz`KE5(nQM`s zD!$vW9XH)iMxu9R>r$VlLk9oIR%HxpUiW=BK@4U)|1WNQ=mz9a z^!KkO=>GaJ!GBXm{KJj^;kh-MkUlEQ%lza`-G&}C5y1>La1sR6hT=d*NeCnuK%_LV zOXt$}iP6(YJKc9j-Fxq~*ItVUqljQ8?oaysB-EYtFQp9oxZ|5m0^Hq(qV!S+hq#g( z?|i*H2MIr^Kxgz+3vIljQ*Feejy6S4v~jKEPTF~Qhq!(ms5>NGtRgO5vfPPc4Z^AM zTj!`5xEreIN)vaNxa|q6qWdg>+T`Ol0Uz)ckXBXEGvPNEL3R8hB3=C5`@=SYgAju1 z!)UBr{2~=~xa{b8>x2@C7weRAEuatC)3pkRhT#pMPTpSbA|tan%U7NGMvzmF?c!V8 z=pEWxbdXbTAGtWTyI?Fml%lEr-^AE}w#l(<7OIw;ctw}imYax&vR4UYNJZK6P7ZOd zP87XfhnUHxCUHhM@b*NbTi#(-8|wcv%3BGNs#zRCVV(W?1Qj6^PPQa<{yaBwZ`+<`w|;rqUY_C z&AeyKwwf*q#OW-F()lir=T^<^wjK65Lif$puuU5+tk$;e_EJ;Lu+pH>=-8=PDhkBg z8cWt%@$Sc#C6F$Vd+0507;{OOyT7Hs%nKS88q-W!$f~9*WGBpHGgNp}=C*7!RiZ5s zn1L_DbKF@B8kwhDiLKRB@lsXVVLK|ph=w%_`#owlf@s@V(pa`GY$8h%;-#h@TsO|Y8V=n@*!Rog7<7Cid%apR|x zOjhHCyfbIt%+*PCveTEcuiDi%Wx;O;+K=W?OFUV%)%~6;gl?<0%)?snDDqIvkHF{ zyI02)+lI9ov42^hL>ZRrh*HhjF9B$A@=H94iaBESBF=eC_KT$8A@uB^6$~o?3Wm5t1OIaqF^~><2?4e3c&)@wKn9bD? zoeCs;H>b8DL^F&>Xw-xjZEUFFTv>JD^O#1E#)CMBaG4DX9bD(Wtc8Rzq}9soQ8`jf zeSnHOL}<+WVSKp4kkq&?SbETjq6yr@4%SAqOG=9E(3YeLG9dtV+8vmzq+6PFPk{L; z(&d++iu=^F%b+ea$i2UeTC{R*0Isk;vFK!no<;L+(`y`3&H-~VTdKROkdyowo1iqR zbVW(3`+(PQ2>TKY>N!jGmGo7oeoB8O|P_!Ic@ zZ^;3dnuXo;WJ?S+)%P>{Hcg!Jz#2SI(s&dY4QAy_vRlmOh)QHvs_7c&zkJCmJGVvV zX;Mtb>QE+xp`KyciG$Cn*0?AK%-a|=o!+7x&&yzHQOS>8=B*R=niSnta^Pxp1`=md z#;$pS$4WCT?mbiCYU?FcHGZ#)kHVJTTBt^%XE(Q};aaO=Zik0UgLcc0I(tUpt(>|& zcxB_|fxCF7>&~5eJ=Dpn&5Aj{A^cV^^}(7w#p;HG&Q)EaN~~EqrE1qKrMAc&WXIE;>@<&)5;gD2?={Xf@Mvn@OJKw=8Mgn z!JUFMwD+s==JpjhroT&d{$kQAy%+d`a*XxDEVxy3`NHzmITrE`o!;5ClXNPb4t*8P zzAivdr{j_v!=9!^?T3y?gzmqDWX6mkzhIzJ-3S{T5bcCFMr&RPDryMcdwbBuZbsgN zGrp@^i?rcfN7v0NKGzDPGE#4yszxu=I_`MI%Z|10nFjU-UjQXXA?k8Pk|OE<(?ae) zE%vG#eZAlj*E7_3dx#Zz4kMLj>H^;}33UAankJiDy5ZvEhrjr`!9eMD8COp}U*hP+ zF}KIYx@pkccIgyxFm#LNw~G&`;o&5)2`5aogs`1~7cMZQ7zj!%L4E`2yzlQN6REX20&O<9 zKV6fyr)TScJPPzNTC2gL+0x#=u>(({{D7j)c-%tvqls3#Y?Z1m zV5WUE)zdJ{$p>yX;^P!UcXP?UD~YM;IRa#Rs5~l+*$&nO(;Ers`G=0D!twR(0GF@c zHl9E5DQI}Oz74n zfKP>&$q0($T4y$6w(p=ERAFh+>n%iaeRA%!T%<^+pg?M)@ucY<&59$x9M#n+V&>}=nO9wCV{O~lg&v#+jcUj(tQ z`0u1YH)-`U$15a{pBkGyPL0THv1P|4e@pf@3IBZS4dVJPo#H>pWq%Lr0YS-SeWash z8R7=jb28KPMI|_lo#GEO|5B?N_e``H*23{~a!AmUJ+fb4HX-%QI@lSEUxKlGV7z7Q zSKw@-TR>@1RL%w{x}dW#k1NgW+q4yt2Xf1J62Bx*O^WG8OJ|FqI4&@d3_o8Id@*)4 zYrk=>@!wv~mh7YWv*bZhxqSmFh2Xq)o=m;%n$I?GSz49l1$xRpPu_^N(vZ>*>Z<04 z2+rP70oM=NDysd!@fQdM2OcyT?3T^Eb@lIC-UG=Bw{BjQ&P`KCv$AcJ;?`vdZ4){d z&gkoUK{$!$$K`3*O-jyM1~p-7T*qb)Ys>Myt^;#1&a%O@x8A+E>! zY8=eD`ZG)LVagDLBeHg>=atOG?Kr%h4B%E6m@J^C+U|y)XX@f z8oyJDW|9g=<#f<{JRr{y#~euMnv)`7j=%cHWLc}ngjq~7k**6%4u>Px&W%4D94(r* z+akunK}O0DC2A%Xo9jyF;DobX?!1I(7%}@7F>i%&nk*LMO)bMGg2N+1iqtg+r(70q zF5{Msgsm5GS7DT`kBsjMvOrkx&|EU!{{~gL4d2MWrAT=KBQ-^zQCUq{5PD1orxlIL zq;CvlWx#f1NWvh`hg011I%?T_s!e38l*lWVt|~z-PO4~~1g)SrJ|>*tXh=QfXT)%( z+ex+inPvD&O4Ur;JGz>$sUOnWdpSLcm1X%aQDw4{dB!cnj`^muI$CJ2%p&-kULVCE z>$eMR36kN$wCPR+OFDM3-U(VOrp9k3)lI&YVFqd;Kpz~K)@Fa&FRw}L(SoD z9B4a+hQzZT-BnVltst&=kq6Y(f^S4hIGNKYBgMxGJ^;2yrO}P3;r)(-I-CZ)26Y6? z&rzHI_1GCvGkgy-t1E;r^3Le30|%$ebDRu2+gdLG)r=A~Qz`}~&L@aGJ{}vVs_GE* zVUjFnzHiXfKQbpv&bR&}l2bzIjAooB)=-XNcYmrGmBh(&iu@o!^hn0^#}m2yZZUK8 zufVm7Gq0y`Mj;9b>`c?&PZkU0j4>IL=UL&-Lp3j&47B5pAW4JceG{!XCA)kT<%2nqCxj<)uy6XR_uws~>_MEKPOpAQ!H zkn>FKh)<9DwwS*|Y(q?$^N!6(51O0 z^JM~Ax{AI1Oj$fs-S5d4T7Z_i1?{%0SsIuQ&r8#(JA=2iLcTN+?>wOL532%&dMYkT z*T5xepC+V6zxhS@vNbMoi|i)=rpli@R9~P!39tWbSSb904ekv7D#quKbgFEMTb48P zuq(VJ+&L8aWU(_FCD$3^uD!YM%O^K(dvy~Wm2hUuh6bD|#(I39Xt>N1Y{ZqXL`Fg6 zKQ?T2htHN!(Bx;tV2bfTtIj7e)liN-29s1kew>v(D^@)#v;}C4-G=7x#;-dM4yRWm zyY`cS21ulzMK{PoaQ6xChEZ}o_#}X-o}<&0)$1#3we?+QeLt;aVCjeA)hn!}UaKt< zat1fHEx13y-rXNMvpUUmCVzocPmN~-Y4(YJvQ#db)4|%B!rBsgAe+*yor~}FrNH08 z3V!97S}D7d$zbSD{$z;@IYMxM6aHdypIuS*pr_U6;#Y!_?0i|&yU*@16l z*dcMqDQgfNBf}?quiu4e>H)yTVfsp#f+Du0@=Kc41QockXkCkvu>FBd6Q+@FL!(Yx z2`YuX#eMEiLEDhp+9uFqME_E^faV&~9qjBHJkIp~%$x^bN=N)K@kvSVEMdDuzA0sn z88CBG?`RX1@#hQNd`o^V{37)!w|nA)QfiYBE^m=yQKv-fQF+UCMcuEe1d4BH7$?>b zJl-r9@0^Ie=)guO1vOd=i$_4sz>y3x^R7n4ED!5oXL3@5**h(xr%Hv)_gILarO46q+MaDOF%ChaymKoI6JU5Pg;7#2n9-18|S1;AK+ zgsn6;k6-%!QD>D?cFy}8F;r@z8H9xN1jsOBw2vQONVqBVEbkiNUqgw~*!^##ht>w0 zUOykwH=$LwX2j&nLy=@{hr)2O&-wm-NyjW7n~Zs9UlH;P7iP3 zI}S(r0YFVYacnKH(+{*)Tbw)@;6>%=&Th=+Z6NHo_tR|JCI8TJiXv2N7ei7M^Q+RM z?9o`meH$5Yi;@9XaNR#jIK^&{N|DYNNbtdb)XW1Lv2k{E>;?F`#Pq|&_;gm~&~Zc9 zf+6ZE%{x4|{YdtE?a^gKyzr}dA>OxQv+pq|@IXL%WS0CiX!V zm$fCePA%lU{%pTKD7|5NJHeXg=I0jL@$tOF@K*MI$)f?om)D63K*M|r`gb9edD1~Y zc|w7N)Y%do7=0{RC|AziW7#am$)9jciRJ?IWl9PE{G3U+$%FcyKs_0Cgq`=K3@ttV z9g;M!3z~f_?P%y3-ph%vBMeS@p7P&Ea8M@97+%XEj*(1E6vHj==d zjsoviB>j^$_^OI_DEPvFkVo(BGRo%cJeD){6Uckei=~1}>sp299|IRjhXe)%?uP0I zF5+>?0#Ye}T^Y$u_rc4=lPcq4K^D(TZG-w30-YiEM=dcK+4#o*>lJ8&JLi+3UcpZk z!^?95S^C0ja^jwP`|{<+3cBVog$(mRdQmadS+Vh~z zS@|P}=|z3P6uS+&@QsMp0no9Od&27O&14zHXGAOEy zh~OKpymK5C%;LLb467@KgIiVwYbYd6wFxI{0-~MOGfTq$nBTB!{SrWmL9Hs}C&l&l#m?s*{tA?BHS4mVKHAVMqm63H<|c5n0~k)-kbg zXidai&9ZUy0~WFYYKT;oe~rytRk?)r8bptITsWj(@HLI;@=v5|XUnSls7$uaxFRL+ zRVMGuL3w}NbV1`^=Pw*0?>bm8+xfeY(1PikW*PB>>Tq(FR`91N0c2&>lL2sZo5=VD zQY{>7dh_TX98L2)n{2OV=T10~*YzX27i2Q7W86M4$?gZIXZaBq#sA*{PH8){|GUi;oM>e?ua7eF4WFuFYZSG| zze?srg|5Ti8Og{O zeFxuw9!U+zhyk?@w zjsA6(oKD=Ka;A>Ca)oPORxK+kxH#O@zhC!!XS4@=swnuMk>t+JmLmFiE^1aX3f<)D@`%K0FGK^gg1a1j>zi z2KhV>sjU7AX3F$SEqrXSC}fRx64GDoc%!u2Yag68Lw@w9v;xOONf@o)Lc|Uh3<21ctTYu-mFZuHk*+R{GjXHIGq3p)tFtQp%TYqD=j1&y)>@zxoxUJ!G@ zgI0XKmP6MNzw>nRxK$-Gbzs}dyfFzt>#5;f6oR27ql!%+{tr+(`(>%51|k`ML} zY4eE)Lxq|JMas(;JibNQds1bUB&r}ydMQXBY4x(^&fY_&LlQC)3hylc$~8&~|06-D z#T+%66rYbHX%^KuqJED_wuGB+=h`nWA!>1n0)3wZrBG3%`b^Ozv6__dNa@%V14|!D zQ?o$z5u0^8`giv%qE!BzZ!3j;BlDlJDk)h@9{nSQeEk!z9RGW) z${RSF3phEM*ce*>Xdp}585vj$|40=&S{S-GTiE?Op*vY&Lvr9}BO$XWy80IF+6@%n z5*2ueT_g@ofP#u5pxb7n*fv^Xtt7&?SRc{*2Ka-*!BuOpf}neHGCiHy$@Ka1^Dint z;DkmIL$-e)rj4o2WQV%Gy;Xg(_Bh#qeOsTM2f@KEe~4kJ8kNLQ+;(!j^bgJMcNhvklP5Z6I+9Fq@c&D~8Fb-4rmDT!MB5QC{Dsb;BharP*O;SF4& zc$wj-7Oep7#$WZN!1nznc@Vb<_Dn%ga-O#J(l=OGB`dy=Sy&$(5-n3zzu%d7E#^8`T@}V+5B;PP8J14#4cCPw-SQTdGa2gWL0*zKM z#DfSXs_iWOMt)0*+Y>Lkd=LlyoHjublNLefhKBv@JoC>P7N1_#> zv=mLWe96%EY;!ZGSQDbZWb#;tzqAGgx~uk+-$+2_8U`!ypbwXl z^2E-FkM1?lY@yt8=J3%QK+xaZ6ok=-y%=KXCD^0r!5vUneW>95PzCkOPO*t}p$;-> ze5j-BLT_;)cZQzR2CEsm@rU7GZfFtdp*a|g4wDr%8?2QkIGasRfDWT-Dvy*U{?IHT z*}wGnzdlSptl#ZF^sf)KT|BJs&kLG91^A6ls{CzFprZ6-Y!V0Xysh%9p%iMd7HLsS zN+^Un$tDV)T@i!v?3o0Fsx2qI(AX_$dDkBzQ@fRM%n zRXk6hb9Py#JXUs+7)w@eo;g%QQ95Yq!K_d=z{0dGS+pToEI6=Bo8+{k$7&Z zo4>PH(`ce8E-Ps&uv`NQ;U$%t;w~|@E3WVOCi~R4oj5wP?%<*1C%}Jq%a^q~T7u>K zML5AKfQDv6>PuT`{SrKHRAF+^&edg6+5R_#H?Lz3iGoWo#PCEd0DS;)2U({{X#zU^ zw_xv{4x7|t!S)>44J;KfA|DC?;uQ($l+5Vp7oeqf7{GBF9356nx|&B~gs+@N^gSdd zvb*>&W)|u#F{Z_b`f#GVtQ`pYv3#||N{xj1NgB<#=Odt6{eB%#9RLt5v zIi|0u70`#ai}9fJjKv7dE!9ZrOIX!3{$z_K5FBd-Kp-&e4(J$LD-)NMTp^_pB`RT; zftVVlK2g@+1Ahv2$D){@Y#cL#dUj9*&%#6 zd2m9{1NYp>)6=oAvqdCn5#cx{AJ%S8skUgMglu2*IAtd+z1>B&`MuEAS(D(<6X#Lj z?f4CFx$)M&$=7*>9v1ER4b6!SIz-m0e{o0BfkySREchp?WdVPpQCh!q$t>?rL!&Jg zd#heM;&~A}VEm8Dvy&P|J*eAV&w!&Nx6HFV&B8jJFVTmgLaswn!cx$&%JbTsloz!3 zMEz1d`k==`Ueub_JAy_&`!ogbwx27^ZXgFNAbx=g_I~5nO^r)}&myw~+yY*cJl4$I znNJ32M&K=0(2Dj_>@39`3=FX!v3nZHno_@q^!y}%(yw0PqOo=);6Y@&ylVe>nMOZ~ zd>j#QQSBn3oaWd;qy$&5(5H$Ayi)0haAYO6TH>FR?rhqHmNOO+(})NB zLI@B@v0)eq!ug`>G<@htRlp3n!EpU|n+G+AvXFrWSUsLMBfL*ZB`CRsIVHNTR&b?K zxBgsN0BjfB>UVcJ|x%=-zb%OV7lmZc& zxiupadZVF7)6QuhoY;;FK2b*qL0J-Rn-8!X4ZY$-ZSUXV5DFd7`T41c(#lAeLMoeT z4%g655v@7AqT!i@)Edt5JMbN(=Q-6{=L4iG8RA%}w;&pKmtWvI4?G9pVRp|RTw`g0 zD5c12B&A2&P6Ng~8WM2eIW=wxd?r7A*N+&!Be7PX3s|7~z=APxm=A?5 zt>xB4WG|*Td@VX{Rs)PV0|yK`oI3^xn(4c_j&vgxk_Y3o(-`_5o`V zRTghg6%l@(qodXN;dB#+OKJEEvhfcnc#BeO2|E(5df-!fKDZ!%9!^BJ_4)9P+9Dq5 zK1=(v?KmIp34r?z{NEWnLB3Px{XYwy-akun4F7xTRr2^zeYW{gcK9)>aJDdU5;w5@ zak=<+-PLH-|04pelTb%ULpuuuJC7DgyT@D|p{!V!0v3KpDnRjANN12q6SUR3mb9<- z>2r~IApQGhstZ!3*?5V z8#)hJ0TdZg0M-BK#nGFP>$i=qk82DO z7h;Ft!D5E15OgW)&%lej*?^1~2=*Z5$2VX>V{x8SC+{i10BbtUk9@I#Vi&hX)q
Q!LwySI{Bnv%Sm)yh{^sSVJ8&h_D-BJ_YZe5eCaAWU9b$O2c z$T|{vWVRtOL!xC0DTc(Qbe`ItNtt5hr<)VijD0{U;T#bUEp381_y`%ZIav?kuYG{iyYdEBPW=*xNSc;Rlt6~F4M`5G+VtOjc z*0qGzCb@gME5udTjJA-9O<&TWd~}ysBd(eVT1-H82-doyH9RST)|+Pb{o*;$j9Tjs zhU!IlsPsj8=(x3bAKJTopW3^6AKROHR^7wZ185wJGVhA~hEc|LP;k7NEz-@4p5o}F z`AD6naG3(n=NF9HTH81=F+Q|JOz$7wm9I<+#BSmB@o_cLt2GkW9|?7mM;r!JZp89l zbo!Hp8=n!XH1{GwaDU+k)pGp`C|cXkCU5%vcH)+v@0eK>%7gWxmuMu9YLlChA|_D@ zi#5zovN_!a-0?~pUV-Rj*1P)KwdU-LguR>YM&*Nen+ln8Q$?WFCJg%DY%K}2!!1FE zDv-A%Cbwo^p(lzac&_TZ-l#9kq`mhLcY3h9ZTUVCM(Ad&=EriQY5{jJv<5K&g|*Lk zgV%ILnf1%8V2B0E&;Sp4sYbYOvvMebLwYwzkRQ#F8GpTQq#uv=J`uaSJ34OWITeSGo6+-8Xw znCk*n{kdDEi)Hi&u^)~cs@iyCkFWB2SWZU|Uc%^43ZIZQ-vWNExCCtDWjqHs;;tWf$v{}0{p0Rvxkq``)*>+Akq%|Na zA`@~-Vfe|+(AIlqru+7Ceh4nsVmO9p9jc8}HX^W&ViBDXT+uXbT#R#idPn&L>+#b6 zflC-4C5-X;kUnR~L>PSLh*gvL68}RBsu#2l`s_9KjUWRhiqF`j)`y`2`YU(>3bdBj z?>iyjEhe-~$^I5!nn%B6Wh+I`FvLNvauve~eX<+Ipl&04 zT}};W&1a3%W?dJ2=N#0t?e+aK+%t}5q%jSLvp3jZ%?&F}nOOWr>+{GFIa%wO_2`et z=JzoRR~}iKuuR+azPI8;Gf9)z3kyA4EIOSl!sRR$DlW}0>&?GbgPojmjmnln;cTqCt=ADbE zZ8GAnoM+S1(5$i8^O4t`ue;vO4i}z0wz-QEIVe5_u03;}-!G1NyY8;h^}y;tzY}i5 zqQr#Ur3Fy8sSa$Q0ys+f`!`+>9WbvU_I`Sj;$4{S>O3?#inLHCrtLy~!s#WXV=oVP zeE93*Nc`PBi4q@%Ao$x4lw9vLHM!6mn3-b_cebF|n-2vt-zYVF_&sDE--J-P;2WHo z+@n2areE0o$LjvjlV2X7ZU@j+`{*8zq`JR3gKF#EW|#+{nMyo-a>nFFTg&vhyT=b} zDa8+v0(Dgx0yRL@ZXOYIlVSZ0|MFizy0VPW8;AfA5|pe!#j zX}Py^8fl5SyS4g1WSKKtnyP+_PoOwMMwu`(i@Z)diJp~U54*-miOchy7Z35eL>^M z4p<-aIxH4VUZgS783@H%M7P9hX>t{|RU7$n4T(brCG#h9e9p! z+o`i;EGGq3&pF;~5V~eBD}lC)>if$w%Vf}AFxGqO88|ApfHf&Bvu+xdG)@vuF}Yvk z)o;~k-%+0K0g+L`Wala!$=ZV|z$e%>f0%XoLib%)!R^RoS+{!#X?h-6uu zF&&KxORdZU&EwQFITIRLo(7TA3W}y6X{?Y%y2j0It!ekU#<)$qghZtpcS>L3uh`Uj z7GY;6f$9qKynP#oS3$$a{p^{D+0oJQ71`1?OAn_m8)UGZmj3l*ZI)`V-a>MKGGFG< z&^jg#Ok%(hhm>hSrZ5;Qga4u(?^i>GiW_j9%_7M>j(^|Om$#{k+^*ULnEgzW_1gCICtAD^WpC`A z{9&DXkG#01Xo)U$OC(L5Y$DQ|Q4C6CjUKk1UkPj$nXH##J{c8e#K|&{mA*;b$r0E4 zUNo0jthwA(c&N1l=PEe8Rw_8cEl|-eya9z&H3#n`B$t#+aJ03RFMzrV@gowbe8v(c zIFM60^0&lCFO10NU4w@|61xiZ4CVXeaKjd;d?sv52XM*lS8XiVjgWpRB;&U_C0g+`6B5V&w|O6B*_q zsATxL!M}+$He)1eOWECce#eS@2n^xhlB4<_Nn?yCVEQWDs(r`|@2GqLe<#(|&P0U? z$7V5IgpWf09uIf_RazRwC?qEqRaHyL?iiS05UiGesJy%^>-C{{ypTBI&B0-iUYhk> zIk<5xpsuV@g|z(AZD+C-;A!fTG=df1=<%nxy(a(IS+U{ME4ZbDEBtcD_3V=icT6*_ z)>|J?>&6%nvHhZERBtjK+s4xnut*@>GAmA5m*OTp$!^CHTr}vM4n(X1Q*;{e-Rd2BCF-u@1ZGm z!S8hJ6L=Gl4T_SDa7Xx|-{4mxveJg=ctf`BJ*fy!yF6Dz&?w(Q_6B}WQVtNI!BVBC zKfX<>7vd6C96}XAQmF-Jd?1Q4eTfRB3q7hCh0f!(JkdWT5<{iAE#dKy*Jxq&3a1@~ z8C||Dn2mFNyrUV|<-)C^_y7@8c2Fz+2jrae9deBDu;U}tJ{^xAdxCD248(k;dCJ%o z`y3sADe>U%suxwwv~8A1+R$VB=Q?%U?4joI$um;aH+eCrBqpn- z%79D_7rb;R-;-9RTrwi9dPlg8&@tfWhhZ(Vx&1PQ+6(huX`;M9x~LrW~~#3{j0Bh2kDU$}@!fFQej4VGkJv?M4rU^x!RU zEwhu$!CA_iDjFjrJa`aocySDX16?~;+wgav;}Zut6Mg%C4>}8FL?8)Kgwc(Qlj{@#2Pt0?G`$h7P#M+qoXtlV@d}%c&OzO+QYKK`kyXaK{U(O^2DyIXCZlNQjt0^8~8JzNGrIxhj}}M z&~QZlbx%t;MJ(Vux;2tgNKGlAqphLq%pd}JG9uoVHUo?|hN{pLQ6Em%r*+7t^<);X zm~6=qChlNAVXNN*Sow->*4;}T;l;D1I-5T{Bif@4_}=>l`tK;qqDdt5zvisCKhMAH z#r}`)7VW?LZqfdmXQ%zo5bJ00{Xb9^YKrk0Nf|oIW*K@(=`o2Vndz}ZDyk{!u}PVx zzd--+_WC*U{~DH3{?GI64IB+@On&@9X>EUAo&L+G{L^dozaI4C3G#2wr~hseW@K&g zKWs{uHu-9Je!3;4pE>eBltKUXb^*hG8I&413)$J&{D4N%7PcloU6bn%jPxJyQL?g* z9g+YFFEDiE`8rW^laCNzQmi7CTnPfwyg3VDHRAl>h=In6jeaVOP@!-CP60j3+#vpL zEYmh_oP0{-gTe7Or`L6x)6w?77QVi~jD8lWN@3RHcm80iV%M1A!+Y6iHM)05iC64tb$X2lV_%Txk@0l^hZqi^%Z?#- zE;LE0uFx)R08_S-#(wC=dS&}vj6P4>5ZWjhthP=*Hht&TdLtKDR;rXEX4*z0h74FA zMCINqrh3Vq;s%3MC1YL`{WjIAPkVL#3rj^9Pj9Ss7>7duy!9H0vYF%>1jh)EPqvlr6h%R%CxDsk| z!BACz7E%j?bm=pH6Eaw{+suniuY7C9Ut~1cWfOX9KW9=H><&kQlinPV3h9R>3nJvK z4L9(DRM=x;R&d#a@oFY7mB|m8h4692U5eYfcw|QKwqRsshN(q^v$4$)HgPpAJDJ`I zkqjq(8Cd!K!+wCd=d@w%~e$=gdUgD&wj$LQ1r>-E=O@c ze+Z$x{>6(JA-fNVr)X;*)40Eym1TtUZI1Pwwx1hUi+G1Jlk~vCYeXMNYtr)1?qwyg zsX_e*$h?380O00ou?0R@7-Fc59o$UvyVs4cUbujHUA>sH!}L54>`e` zHUx#Q+Hn&Og#YVOuo*niy*GU3rH;%f``nk#NN5-xrZ34NeH$l`4@t);4(+0|Z#I>Y z)~Kzs#exIAaf--65L0UHT_SvV8O2WYeD>Mq^Y6L!Xu8%vnpofG@w!}R7M28?i1*T&zp3X4^OMCY6(Dg<-! zXmcGQrRgHXGYre7GfTJ)rhl|rs%abKT_Nt24_Q``XH{88NVPW+`x4ZdrMuO0iZ0g` z%p}y};~T5gbb9SeL8BSc`SO#ixC$@QhXxZ=B}L`tP}&k?1oSPS=4%{UOHe0<_XWln zwbl5cn(j-qK`)vGHY5B5C|QZd5)W7c@{bNVXqJ!!n$^ufc?N9C-BF2QK1(kv++h!>$QbAjq)_b$$PcJdV+F7hz0Hu@ zqj+}m0qn{t^tD3DfBb~0B36|Q`bs*xs|$i^G4uNUEBl4g;op-;Wl~iThgga?+dL7s zUP(8lMO?g{GcYpDS{NM!UA8Hco?#}eNEioRBHy4`mq!Pd-9@-97|k$hpEX>xoX+dY zDr$wfm^P&}Wu{!%?)U_(%Mn79$(ywvu*kJ9r4u|MyYLI_67U7%6Gd_vb##Nerf@>& z8W11z$$~xEZt$dPG}+*IZky+os5Ju2eRi;1=rUEeIn>t-AzC_IGM-IXWK3^6QNU+2pe=MBn4I*R@A%-iLDCOHTE-O^wo$sL_h{dcPl=^muAQb`_BRm};=cy{qSkui;`WSsj9%c^+bIDQ z0`_?KX0<-=o!t{u(Ln)v>%VGL z0pC=GB7*AQ?N7N{ut*a%MH-tdtNmNC+Yf$|KS)BW(gQJ*z$d{+{j?(e&hgTy^2|AR9vx1Xre2fagGv0YXWqtNkg*v%40v?BJBt|f9wX5 z{QTlCM}b-0{mV?IG>TW_BdviUKhtosrBqdfq&Frdz>cF~yK{P@(w{Vr7z2qKFwLhc zQuogKO@~YwyS9%+d-zD7mJG~@?EFJLSn!a&mhE5$_4xBl&6QHMzL?CdzEnC~C3$X@ zvY!{_GR06ep5;<#cKCSJ%srxX=+pn?ywDwtJ2{TV;0DKBO2t++B(tIO4)Wh`rD13P z4fE$#%zkd=UzOB74gi=-*CuID&Z3zI^-`4U^S?dHxK8fP*;fE|a(KYMgMUo`THIS1f!*6dOI2 zFjC3O=-AL`6=9pp;`CYPTdVX z8(*?V&%QoipuH0>WKlL8A*zTKckD!paN@~hh zmXzm~qZhMGVdQGd=AG8&20HW0RGV8X{$9LldFZYm zE?}`Q3i?xJRz43S?VFMmqRyvWaS#(~Lempg9nTM$EFDP(Gzx#$r)W&lpFKqcAoJh-AxEw$-bjW>`_+gEi z2w`99#UbFZGiQjS8kj~@PGqpsPX`T{YOj`CaEqTFag;$jY z8_{Wzz>HXx&G*Dx<5skhpETxIdhKH?DtY@b9l8$l?UkM#J-Snmts7bd7xayKTFJ(u zyAT&@6cAYcs{PBfpqZa%sxhJ5nSZBPji?Zlf&}#L?t)vC4X5VLp%~fz2Sx<*oN<7` z?ge=k<=X7r<~F7Tvp9#HB{!mA!QWBOf%EiSJ6KIF8QZNjg&x~-%e*tflL(ji_S^sO ztmib1rp09uon}RcsFi#k)oLs@$?vs(i>5k3YN%$T(5Or(TZ5JW9mA6mIMD08=749$ z!d+l*iu{Il7^Yu}H;lgw=En1sJpCKPSqTCHy4(f&NPelr31^*l%KHq^QE>z>Ks_bH zjbD?({~8Din7IvZeJ>8Ey=e;I?thpzD=zE5UHeO|neioJwG;IyLk?xOz(yO&0DTU~ z^#)xcs|s>Flgmp;SmYJ4g(|HMu3v7#;c*Aa8iF#UZo7CvDq4>8#qLJ|YdZ!AsH%^_7N1IQjCro

K7UpUK$>l@ zw`1S}(D?mUXu_C{wupRS-jiX~w=Uqqhf|Vb3Cm9L=T+w91Cu^ z*&Ty%sN?x*h~mJc4g~k{xD4ZmF%FXZNC;oVDwLZ_WvrnzY|{v8hc1nmx4^}Z;yriXsAf+Lp+OFLbR!&Ox?xABwl zu8w&|5pCxmu#$?Cv2_-Vghl2LZ6m7}VLEfR5o2Ou$x02uA-%QB2$c(c1rH3R9hesc zfpn#oqpbKuVsdfV#cv@5pV4^f_!WS+F>SV6N0JQ9E!T90EX((_{bSSFv9ld%I0&}9 zH&Jd4MEX1e0iqDtq~h?DBrxQX1iI0lIs<|kB$Yrh&cpeK0-^K%=FBsCBT46@h#yi!AyDq1V(#V}^;{{V*@T4WJ&U-NTq43w=|K>z8%pr_nC>%C(Wa_l78Ufib$r8Od)IIN=u>417 z`Hl{9A$mI5A(;+-Q&$F&h-@;NR>Z<2U;Y21>>Z;s@0V@SbkMQQj%_;~+qTuQ?c|AV zcWm3XZQHhP&R%QWarS%mJ!9R^&!_)*s(v+VR@I#QrAT}`17Y+l<`b-nvmDNW`De%y zrwTZ9EJrj1AFA>B`1jYDow}~*dfPs}IZMO3=a{Fy#IOILc8F0;JS4x(k-NSpbN@qM z`@aE_e}5{!$v3+qVs7u?sOV(y@1Os*Fgu`fCW9=G@F_#VQ%xf$hj0~wnnP0$hFI+@ zkQj~v#V>xn)u??YutKsX>pxKCl^p!C-o?+9;!Nug^ z{rP!|+KsP5%uF;ZCa5F;O^9TGac=M|=V z_H(PfkV1rz4jl?gJ(ArXMyWT4y(86d3`$iI4^l9`vLdZkzpznSd5Ikfrs8qcSy&>z zTIZgWZGXw0n9ibQxYWE@gI0(3#KA-dAdPcsL_|hg2@~C!VZDM}5;v_Nykfq!*@*Zf zE_wVgx82GMDryKO{U{D>vSzSc%B~|cjDQrt5BN=Ugpsf8H8f1lR4SGo#hCuXPL;QQ z#~b?C4MoepT3X`qdW2dNn& zo8)K}%Lpu>0tQei+{>*VGErz|qjbK#9 zvtd8rcHplw%YyQCKR{kyo6fgg!)6tHUYT(L>B7er5)41iG`j$qe*kSh$fY!PehLcD zWeKZHn<492B34*JUQh=CY1R~jT9Jt=k=jCU2=SL&&y5QI2uAG2?L8qd2U(^AW#{(x zThSy=C#>k+QMo^7caQcpU?Qn}j-`s?1vXuzG#j8(A+RUAY})F@=r&F(8nI&HspAy4 z4>(M>hI9c7?DCW8rw6|23?qQMSq?*Vx?v30U%luBo)B-k2mkL)Ljk5xUha3pK>EEj z@(;tH|M@xkuN?gsz;*bygizwYR!6=(Xgcg^>WlGtRYCozY<rFX2E>kaZo)O<^J7a`MX8Pf`gBd4vrtD|qKn&B)C&wp0O-x*@-|m*0egT=-t@%dD zgP2D+#WPptnc;_ugD6%zN}Z+X4=c61XNLb7L1gWd8;NHrBXwJ7s0ce#lWnnFUMTR& z1_R9Fin4!d17d4jpKcfh?MKRxxQk$@)*hradH2$3)nyXep5Z;B z?yX+-Bd=TqO2!11?MDtG0n(*T^!CIiF@ZQymqq1wPM_X$Iu9-P=^}v7npvvPBu!d$ z7K?@CsA8H38+zjA@{;{kG)#AHME>Ix<711_iQ@WWMObXyVO)a&^qE1GqpP47Q|_AG zP`(AD&r!V^MXQ^e+*n5~Lp9!B+#y3#f8J^5!iC@3Y@P`;FoUH{G*pj*q7MVV)29+j z>BC`a|1@U_v%%o9VH_HsSnM`jZ-&CDvbiqDg)tQEnV>b%Ptm)T|1?TrpIl)Y$LnG_ zzKi5j2Fx^K^PG1=*?GhK;$(UCF-tM~^=Z*+Wp{FSuy7iHt9#4n(sUuHK??@v+6*|10Csdnyg9hAsC5_OrSL;jVkLlf zHXIPukLqbhs~-*oa^gqgvtpgTk_7GypwH><53riYYL*M=Q@F-yEPLqQ&1Sc zZB%w}T~RO|#jFjMWcKMZccxm-SL)s_ig?OC?y_~gLFj{n8D$J_Kw%{r0oB8?@dWzn zB528d-wUBQzrrSSLq?fR!K%59Zv9J4yCQhhDGwhptpA5O5U?Hjqt>8nOD zi{)0CI|&Gu%zunGI*XFZh(ix)q${jT8wnnzbBMPYVJc4HX*9d^mz|21$=R$J$(y7V zo0dxdbX3N#=F$zjstTf*t8vL)2*{XH!+<2IJ1VVFa67|{?LP&P41h$2i2;?N~RA30LV`BsUcj zfO9#Pg1$t}7zpv#&)8`mis3~o+P(DxOMgz-V*(?wWaxi?R=NhtW}<#^Z?(BhSwyar zG|A#Q7wh4OfK<|DAcl9THc-W4*>J4nTevsD%dkj`U~wSUCh15?_N@uMdF^Kw+{agk zJ`im^wDqj`Ev)W3k3stasP`88-M0ZBs7;B6{-tSm3>I@_e-QfT?7|n0D~0RRqDb^G zyHb=is;IwuQ&ITzL4KsP@Z`b$d%B0Wuhioo1CWttW8yhsER1ZUZzA{F*K=wmi-sb#Ju+j z-l@In^IKnb{bQG}Ps>+Vu_W#grNKNGto+yjA)?>0?~X`4I3T@5G1)RqGUZuP^NJCq&^HykuYtMDD8qq+l8RcZNJsvN(10{ zQ1$XcGt}QH-U^WU!-wRR1d--{B$%vY{JLWIV%P4-KQuxxDeJaF#{eu&&r!3Qu{w}0f--8^H|KwE>)ORrcR+2Qf zb})DRcH>k0zWK8@{RX}NYvTF;E~phK{+F;MkIP$)T$93Ba2R2TvKc>`D??#mv9wg$ zd~|-`Qx5LwwsZ2hb*Rt4S9dsF%Cny5<1fscy~)d;0m2r$f=83<->c~!GNyb!U)PA; zq^!`@@)UaG)Ew(9V?5ZBq#c%dCWZrplmuM`o~TyHjAIMh0*#1{B>K4po-dx$Tk-Cq z=WZDkP5x2W&Os`N8KiYHRH#UY*n|nvd(U>yO=MFI-2BEp?x@=N<~CbLJBf6P)}vLS?xJXYJ2^<3KJUdrwKnJnTp{ zjIi|R=L7rn9b*D#Xxr4*R<3T5AuOS+#U8hNlfo&^9JO{VbH!v9^JbK=TCGR-5EWR@ zN8T-_I|&@A}(hKeL4_*eb!1G8p~&_Im8|wc>Cdir+gg90n1dw?QaXcx6Op_W1r=axRw>4;rM*UOpT#Eb9xU1IiWo@h?|5uP zka>-XW0Ikp@dIe;MN8B01a7+5V@h3WN{J=HJ*pe0uwQ3S&MyWFni47X32Q7SyCTNQ z+sR!_9IZa5!>f&V$`q!%H8ci!a|RMx5}5MA_kr+bhtQy{-^)(hCVa@I!^TV4RBi zAFa!Nsi3y37I5EK;0cqu|9MRj<^r&h1lF}u0KpKQD^5Y+LvFEwM zLU@@v4_Na#Axy6tn3P%sD^5P#<7F;sd$f4a7LBMk zGU^RZHBcxSA%kCx*eH&wgA?Qwazm8>9SCSz_!;MqY-QX<1@p$*T8lc?@`ikEqJ>#w zcG``^CoFMAhdEXT9qt47g0IZkaU)4R7wkGs^Ax}usqJ5HfDYAV$!=6?>J6+Ha1I<5 z|6=9soU4>E))tW$<#>F ziZ$6>KJf0bPfbx_)7-}tMINlc=}|H+$uX)mhC6-Hz+XZxsKd^b?RFB6et}O#+>Wmw9Ec9) z{q}XFWp{3@qmyK*Jvzpyqv57LIR;hPXKsrh{G?&dRjF%Zt5&m20Ll?OyfUYC3WRn{cgQ?^V~UAv+5 z&_m#&nIwffgX1*Z2#5^Kl4DbE#NrD&Hi4|7SPqZ}(>_+JMz=s|k77aEL}<=0Zfb)a z%F(*L3zCA<=xO)2U3B|pcTqDbBoFp>QyAEU(jMu8(jLA61-H!ucI804+B!$E^cQQa z)_ERrW3g!B9iLb3nn3dlkvD7KsY?sRvls3QC0qPi>o<)GHx%4Xb$5a3GBTJ(k@`e@ z$RUa^%S15^1oLEmA=sayrP5;9qtf!Z1*?e$ORVPsXpL{jL<6E)0sj&swP3}NPmR%FM?O>SQgN5XfHE< zo(4#Cv11(%Nnw_{_Ro}r6=gKd{k?NebJ~<~Kv0r(r0qe4n3LFx$5%x(BKvrz$m?LG zjLIc;hbj0FMdb9aH9Lpsof#yG$(0sG2%RL;d(n>;#jb!R_+dad+K;Ccw!|RY?uS(a zj~?=&M!4C(5LnlH6k%aYvz@7?xRa^2gml%vn&eKl$R_lJ+e|xsNfXzr#xuh(>`}9g zLHSyiFwK^-p!;p$yt7$F|3*IfO3Mlu9e>Dpx8O`37?fA`cj`C0B-m9uRhJjs^mRp# zWB;Aj6|G^1V6`jg7#7V9UFvnB4((nIwG?k%c7h`?0tS8J3Bn0t#pb#SA}N-|45$-j z$R>%7cc2ebAClXc(&0UtHX<>pd)akR3Kx_cK+n<}FhzmTx!8e9^u2e4%x{>T6pQ`6 zO182bh$-W5A3^wos0SV_TgPmF4WUP-+D25KjbC{y_6W_9I2_vNKwU(^qSdn&>^=*t z&uvp*@c8#2*paD!ZMCi3;K{Na;I4Q35zw$YrW5U@Kk~)&rw;G?d7Q&c9|x<Hg|CNMsxovmfth*|E*GHezPTWa^Hd^F4!B3sF;)? z(NaPyAhocu1jUe(!5Cy|dh|W2=!@fNmuNOzxi^tE_jAtzNJ0JR-avc_H|ve#KO}#S z#a(8secu|^Tx553d4r@3#6^MHbH)vmiBpn0X^29xEv!Vuh1n(Sr5I0V&`jA2;WS|Y zbf0e}X|)wA-Pf5gBZ>r4YX3Mav1kKY(ulAJ0Q*jB)YhviHK)w!TJsi3^dMa$L@^{` z_De`fF4;M87vM3Ph9SzCoCi$#Fsd38u!^0#*sPful^p5oI(xGU?yeYjn;Hq1!wzFk zG&2w}W3`AX4bxoVm03y>ts{KaDf!}b&7$(P4KAMP=vK5?1In^-YYNtx1f#}+2QK@h zeSeAI@E6Z8a?)>sZ`fbq9_snl6LCu6g>o)rO;ijp3|$vig+4t} zylEo7$SEW<_U+qgVcaVhk+4k+C9THI5V10qV*dOV6pPtAI$)QN{!JRBKh-D zk2^{j@bZ}yqW?<#VVuI_27*cI-V~sJiqQv&m07+10XF+#ZnIJdr8t`9s_EE;T2V;B z4UnQUH9EdX%zwh-5&wflY#ve!IWt0UE-My3?L#^Bh%kcgP1q{&26eXLn zTkjJ*w+(|_>Pq0v8{%nX$QZbf)tbJaLY$03;MO=Ic-uqYUmUCuXD>J>o6BCRF=xa% z3R4SK9#t1!K4I_d>tZgE>&+kZ?Q}1qo4&h%U$GfY058s%*=!kac{0Z+4Hwm!)pFLR zJ+5*OpgWUrm0FPI2ib4NPJ+Sk07j(`diti^i#kh&f}i>P4~|d?RFb#!JN)~D@)beox}bw?4VCf^y*`2{4`-@%SFTry2h z>9VBc9#JxEs1+0i2^LR@B1J`B9Ac=#FW=(?2;5;#U$0E0UNag_!jY$&2diQk_n)bT zl5Me_SUvqUjwCqmVcyb`igygB_4YUB*m$h5oeKv3uIF0sk}~es!{D>4r%PC*F~FN3owq5e0|YeUTSG#Vq%&Gk7uwW z0lDo#_wvflqHeRm*}l?}o;EILszBt|EW*zNPmq#?4A+&i0xx^?9obLyY4xx=Y9&^G;xYXYPxG)DOpPg!i_Ccl#3L}6xAAZzNhPK1XaC_~ z!A|mlo?Be*8Nn=a+FhgpOj@G7yYs(Qk(8&|h@_>w8Y^r&5nCqe0V60rRz?b5%J;GYeBqSAjo|K692GxD4` zRZyM2FdI+-jK2}WAZTZ()w_)V{n5tEb@>+JYluDozCb$fA4H)$bzg(Ux{*hXurjO^ zwAxc+UXu=&JV*E59}h3kzQPG4M)X8E*}#_&}w*KEgtX)cU{vm9b$atHa;s>| z+L6&cn8xUL*OSjx4YGjf6{Eq+Q3{!ZyhrL&^6Vz@jGbI%cAM9GkmFlamTbcQGvOlL zmJ?(FI)c86=JEs|*;?h~o)88>12nXlpMR4@yh%qdwFNpct;vMlc=;{FSo*apJ;p}! zAX~t;3tb~VuP|ZW;z$=IHf->F@Ml)&-&Bnb{iQyE#;GZ@C$PzEf6~q}4D>9jic@mTO5x76ulDz@+XAcm35!VSu zT*Gs>;f0b2TNpjU_BjHZ&S6Sqk6V1370+!eppV2H+FY!q*n=GHQ!9Rn6MjY!Jc77A zG7Y!lFp8?TIHN!LXO?gCnsYM-gQxsm=Ek**VmZu7vnuufD7K~GIxfxbsQ@qv2T zPa`tvHB$fFCyZl>3oYg?_wW)C>^_iDOc^B7klnTOoytQH18WkOk)L2BSD0r%xgRSW zQS9elF^?O=_@|58zKLK;(f77l-Zzu}4{fXed2saq!5k#UZAoDBqYQS{sn@j@Vtp|$ zG%gnZ$U|9@u#w1@11Sjl8ze^Co=)7yS(}=;68a3~g;NDe_X^}yJj;~s8xq9ahQ5_r zxAlTMnep*)w1e(TG%tWsjo3RR;yVGPEO4V{Zp?=a_0R#=V^ioQu4YL=BO4r0$$XTX zZfnw#_$V}sDAIDrezGQ+h?q24St0QNug_?{s-pI(^jg`#JRxM1YBV;a@@JQvH8*>> zIJvku74E0NlXkYe_624>znU0J@L<-c=G#F3k4A_)*;ky!C(^uZfj%WB3-*{*B$?9+ zDm$WFp=0(xnt6`vDQV3Jl5f&R(Mp};;q8d3I%Kn>Kx=^;uSVCw0L=gw53%Bp==8Sw zxtx=cs!^-_+i{2OK`Q;913+AXc_&Z5$@z3<)So0CU3;JAv=H?@Zpi~riQ{z-zLtVL z!oF<}@IgJp)Iyz1zVJ42!SPHSkjYNS4%ulVVIXdRuiZ@5Mx8LJS}J#qD^Zi_xQ@>DKDr-_e#>5h3dtje*NcwH_h;i{Sx7}dkdpuW z(yUCjckQsagv*QGMSi9u1`Z|V^}Wjf7B@q%j2DQXyd0nOyqg%m{CK_lAoKlJ7#8M} z%IvR?Vh$6aDWK2W!=i?*<77q&B8O&3?zP(Cs@kapc)&p7En?J;t-TX9abGT#H?TW? ztO5(lPKRuC7fs}zwcUKbRh=7E8wzTsa#Z{a`WR}?UZ%!HohN}d&xJ=JQhpO1PI#>X zHkb>pW04pU%Bj_mf~U}1F1=wxdBZu1790>3Dm44bQ#F=T4V3&HlOLsGH)+AK$cHk6 zia$=$kog?)07HCL*PI6}DRhpM^*%I*kHM<#1Se+AQ!!xyhcy6j7`iDX7Z-2i73_n# zas*?7LkxS-XSqv;YBa zW_n*32D(HTYQ0$feV_Fru1ZxW0g&iwqixPX3=9t4o)o|kOo79V$?$uh?#8Q8e>4e)V6;_(x&ViUVxma+i25qea;d-oK7ouuDsB^ab{ zu1qjQ%`n56VtxBE#0qAzb7lph`Eb-}TYpXB!H-}3Ykqyp`otprp7{VEuW*^IR2n$Fb99*nAtqT&oOFIf z@w*6>YvOGw@Ja?Pp1=whZqydzx@9X4n^2!n83C5{C?G@|E?&$?p*g68)kNvUTJ)I6 z1Q|(#UuP6pj78GUxq11m-GSszc+)X{C2eo-?8ud9sB=3(D47v?`JAa{V(IF zPZQ_0AY*9M97>Jf<o%#O_%Wq}8>YM=q0|tGY+hlXcpE=Z4Od z`NT7Hu2hnvRoqOw@g1f=bv`+nba{GwA$Ak0INlqI1k<9!x_!sL()h?hEWoWrdU3w` zZ%%)VR+Bc@_v!C#koM1p-3v_^L6)_Ktj4HE>aUh%2XZE@JFMOn)J~c`_7VWNb9c-N z2b|SZMR4Z@E7j&q&9(6H3yjEu6HV7{2!1t0lgizD;mZ9$r(r7W5G$ky@w(T_dFnOD z*p#+z$@pKE+>o@%eT(2-p_C}wbQ5s(%Sn_{$HDN@MB+Ev?t@3dPy`%TZ!z}AThZSu zN<1i$siJhXFdjV zP*y|V<`V8t=h#XTRUR~5`c`Z9^-`*BZf?WAehGdg)E2Je)hqFa!k{V(u+(hTf^Yq& zoruUh2(^3pe)2{bvt4&4Y9CY3js)PUHtd4rVG57}uFJL)D(JfSIo^{P=7liFXG zq5yqgof0V8paQcP!gy+;^pp-DA5pj=gbMN0eW=-eY+N8~y+G>t+x}oa!5r>tW$xhI zPQSv=pi;~653Gvf6~*JcQ%t1xOrH2l3Zy@8AoJ+wz@daW@m7?%LXkr!bw9GY@ns3e zSfuWF_gkWnesv?s3I`@}NgE2xwgs&rj?kH-FEy82=O8`+szN ziHch`vvS`zNfap14!&#i9H@wF7}yIPm=UB%(o(}F{wsZ(wA0nJ2aD^@B41>>o-_U6 zUqD~vdo48S8~FTb^+%#zcbQiiYoDKYcj&$#^;Smmb+Ljp(L=1Kt_J!;0s%1|JK}Wi z;={~oL!foo5n8=}rs6MmUW~R&;SIJO3TL4Ky?kh+b2rT9B1Jl4>#Uh-Bec z`Hsp<==#UEW6pGPhNk8H!!DUQR~#F9jEMI6T*OWfN^Ze&X(4nV$wa8QUJ>oTkruH# zm~O<`J7Wxseo@FqaZMl#Y(mrFW9AHM9Kb|XBMqaZ2a)DvJgYipkDD_VUF_PKd~dT7 z#02}bBfPn9a!X!O#83=lbJSK#E}K&yx-HI#T6ua)6o0{|={*HFusCkHzs|Fn&|C3H zBck1cmfcWVUN&i>X$YU^Sn6k2H;r3zuXbJFz)r5~3$d$tUj(l1?o={MM){kjgqXRO zc5R*#{;V7AQh|G|)jLM@wGAK&rm2~@{Pewv#06pHbKn#wL0P6F1!^qw9g&cW3Z=9} zj)POhOlwsh@eF=>z?#sIs*C-Nl(yU!#DaiaxhEs#iJqQ8w%(?+6lU02MYSeDkr!B- zPjMv+on6OLXgGnAtl(ao>|X2Y8*Hb}GRW5}-IzXnoo-d0!m4Vy$GS!XOLy>3_+UGs z2D|YcQx@M#M|}TDOetGi{9lGo9m-=0-^+nKE^*?$^uHkxZh}I{#UTQd;X!L+W@jm( zDg@N4+lUqI92o_rNk{3P>1gxAL=&O;x)ZT=q1mk0kLlE$WeWuY_$0`0jY-Kkt zP*|m3AF}Ubd=`<>(Xg0har*_@x2YH}bn0Wk*OZz3*e5;Zc;2uBdnl8?&XjupbkOeNZsNh6pvsq_ydmJI+*z**{I{0K)-;p1~k8cpJXL$^t!-`E}=*4G^-E8>H!LjTPxSx zcF+cS`ommfKMhNSbas^@YbTpH1*RFrBuATUR zt{oFWSk^$xU&kbFQ;MCX22RAN5F6eq9UfR$ut`Jw--p2YX)A*J69m^!oYfj2y7NYcH6&r+0~_sH^c^nzeN1AU4Ga7=FlR{S|Mm~MpzY0$Z+p2W(a={b-pR9EO1Rs zB%KY|@wLcAA@)KXi!d2_BxrkhDn`DT1=Dec}V!okd{$+wK z4E{n8R*xKyci1(CnNdhf$Dp2(Jpof0-0%-38X=Dd9PQgT+w%Lshx9+loPS~MOm%ZT zt%2B2iL_KU_ita%N>xjB!#71_3=3c}o zgeW~^U_ZTJQ2!PqXulQd=3b=XOQhwATK$y(9$#1jOQ4}4?~l#&nek)H(04f(Sr=s| zWv7Lu1=%WGk4FSw^;;!8&YPM)pQDCY9DhU`hMty1@sq1=Tj7bFsOOBZOFlpR`W>-J$-(kezWJj;`?x-v>ev{*8V z8p|KXJPV$HyQr1A(9LVrM47u-XpcrIyO`yWvx1pVYc&?154aneRpLqgx)EMvRaa#|9?Wwqs2+W8n5~79G z(}iCiLk;?enn}ew`HzhG+tu+Ru@T+K5juvZN)wY;x6HjvqD!&!)$$;1VAh~7fg0K| zEha#aN=Yv|3^~YFH}cc38ovVb%L|g@9W6fo(JtT6$fa?zf@Ct88e}m?i)b*Jgc{fl zExfdvw-BYDmH6>(4QMt#p0;FUIQqkhD}aH?a7)_%JtA~soqj{ppP_82yi9kaxuK>~ ze_)Zt>1?q=ZH*kF{1iq9sr*tVuy=u>Zev}!gEZx@O6-fjyu9X00gpIl-fS_pzjpqJ z1yqBmf9NF!jaF<+YxgH6oXBdK)sH(>VZ)1siyA$P<#KDt;8NT*l_0{xit~5j1P)FN zI8hhYKhQ)i z37^aP13B~u65?sg+_@2Kr^iWHN=U;EDSZ@2W2!5ALhGNWXnFBY%7W?1 z=HI9JzQ-pLKZDYTv<0-lt|6c-RwhxZ)mU2Os{bsX_i^@*fKUj8*aDO5pks=qn3Dv6 zwggpKLuyRCTVPwmw1r}B#AS}?X7b837UlXwp~E2|PJw2SGVueL7){Y&z!jL!XN=0i zU^Eig`S2`{+gU$68aRdWx?BZ{sU_f=8sn~>s~M?GU~`fH5kCc; z8ICp+INM3(3{#k32RZdv6b9MQYdZXNuk7ed8;G?S2nT+NZBG=Tar^KFl2SvhW$bGW#kdWL-I)s_IqVnCDDM9fm8g;P;8 z7t4yZn3^*NQfx7SwmkzP$=fwdC}bafQSEF@pd&P8@H#`swGy_rz;Z?Ty5mkS%>m#% zp_!m9e<()sfKiY(nF<1zBz&&`ZlJf6QLvLhl`_``%RW&{+O>Xhp;lwSsyRqGf=RWd zpftiR`={2(siiPAS|p}@q=NhVc0ELprt%=fMXO3B)4ryC2LT(o=sLM7hJC!}T1@)E zA3^J$3&1*M6Xq>03FX`R&w*NkrZE?FwU+Muut;>qNhj@bX17ZJxnOlPSZ=Zeiz~T_ zOu#yc3t6ONHB;?|r4w+pI)~KGN;HOGC)txxiUN8#mexj+W(cz%9a4sx|IRG=}ia zuEBuba3AHsV2feqw-3MvuL`I+2|`Ud4~7ZkN=JZ;L20|Oxna5vx1qbIh#k2O4$RQF zo`tL()zxaqibg^GbB+BS5#U{@K;WWQj~GcB1zb}zJkPwH|5hZ9iH2308!>_;%msji zJHSL~s)YHBR=Koa1mLEOHos*`gp=s8KA-C zu0aE+W!#iJ*0xqKm3A`fUGy#O+X+5W36myS>Uh2!R*s$aCU^`K&KKLCCDkejX2p=5 z%o7-fl03x`gaSNyr?3_JLv?2RLS3F*8ub>Jd@^Cc17)v8vYEK4aqo?OS@W9mt%ITJ z9=S2%R8M){CugT@k~~0x`}Vl!svYqX=E)c_oU6o}#Hb^%G1l3BudxA{F*tbjG;W_>=xV73pKY53v%>I)@D36I_@&p$h|Aw zonQS`07z_F#@T-%@-Tb|)7;;anoD_WH>9ewFy(ZcEOM$#Y)8>qi7rCnsH9GO-_7zF zu*C87{Df1P4TEOsnzZ@H%&lvV(3V@;Q!%+OYRp`g05PjY^gL$^$-t0Y>H*CDDs?FZly*oZ&dxvsxaUWF!{em4{A>n@vpXg$dwvt@_rgmHF z-MER`ABa8R-t_H*kv>}CzOpz;!>p^^9ztHMsHL|SRnS<-y5Z*r(_}c4=fXF`l^-i}>e7v!qs_jv zqvWhX^F=2sDNWA9c@P0?lUlr6ecrTKM%pNQ^?*Lq?p-0~?_j50xV%^(+H>sMul#Tw zeciF*1=?a7cI(}352%>LO96pD+?9!fNyl^9v3^v&Y4L)mNGK0FN43&Xf8jUlxW1Bw zyiu2;qW-aGNhs=zbuoxnxiwZ3{PFZM#Kw)9H@(hgX23h(`Wm~m4&TvoZoYp{plb^> z_#?vXcxd>r7K+1HKJvhed>gtK`TAbJUazUWQY6T~t2af%#<+Veyr%7-#*A#@&*;@g58{i|E%6yC_InGXCOd{L0;$)z#?n7M`re zh!kO{6=>7I?*}czyF7_frt#)s1CFJ_XE&VrDA?Dp3XbvF{qsEJgb&OLSNz_5g?HpK z9)8rsr4JN!Af3G9!#Qn(6zaUDqLN(g2g8*M)Djap?WMK9NKlkC)E2|-g|#-rp%!Gz zAHd%`iq|81efi93m3yTBw3g0j#;Yb2X{mhRAI?&KDmbGqou(2xiRNb^sV}%%Wu0?< z?($L>(#BO*)^)rSgyNRni$i`R4v;GhlCZ8$@e^ROX(p=2_v6Y!%^As zu022)fHdv_-~Yu_H6WVPLpHQx!W%^6j)cBhS`O3QBW#x(eX54d&I22op(N59b*&$v zFiSRY6rOc^(dgSV1>a7-5C;(5S5MvKcM2Jm-LD9TGqDpP097%52V+0>Xqq!! zq4e3vj53SE6i8J`XcQB|MZPP8j;PAOnpGnllH6#Ku~vS42xP*Nz@~y%db7Xi8s09P z1)e%8ys6&M8D=Dt6&t`iKG_4X=!kgRQoh%Z`dc&mlOUqXk-k`jKv9@(a^2-Upw>?< zt5*^DV~6Zedbec4NVl($2T{&b)zA@b#dUyd>`2JC0=xa_fIm8{5um zr-!ApXZhC8@=vC2WyxO|!@0Km)h8ep*`^he92$@YwP>VcdoS5OC^s38e#7RPsg4j+ zbVGG}WRSET&ZfrcR(x~k8n1rTP%CnfUNKUonD$P?FtNFF#cn!wEIab-;jU=B1dHK@ z(;(yAQJ`O$sMn>h;pf^8{JISW%d+@v6@CnXh9n5TXGC}?FI9i-D0OMaIg&mAg=0Kn zNJ7oz5*ReJukD55fUsMuaP+H4tDN&V9zfqF@ zr=#ecUk9wu{0;!+gl;3Bw=Vn^)z$ahVhhw)io!na&9}LmWurLb0zubxK=UEnU*{5P z+SP}&*(iBKSO4{alBHaY^)5Q=mZ+2OwIooJ7*Q5XJ+2|q`9#f?6myq!&oz?klihLq z4C)$XP!BNS0G_Z1&TM>?Jk{S~{F3n83ioli=IO6f%wkvCl(RFFw~j0tb{GvXTx>*sB0McY0s&SNvj4+^h`9nJ_wM>F!Uc>X}9PifQekn0sKI2SAJP!a4h z5cyGTuCj3ZBM^&{dRelIlT^9zcfaAuL5Y~bl!ppSf`wZbK$z#6U~rdclk``e+!qhe z6Qspo*%<)eu6?C;Bp<^VuW6JI|Ncvyn+LlSl;Mp22Bl7ARQ0Xc24%29(ZrdsIPw&-=yHQ7_Vle|5h>AST0 zUGX2Zk34vp?U~IHT|;$U86T+UUHl_NE4m|}>E~6q``7hccCaT^#y+?wD##Q%HwPd8 zV3x4L4|qqu`B$4(LXqDJngNy-{&@aFBvVsywt@X^}iH7P%>bR?ciC$I^U-4Foa`YKI^qDyGK7k%E%c_P=yzAi`YnxGA%DeNd++j3*h^ z=rn>oBd0|~lZ<6YvmkKY*ZJlJ;Im0tqgWu&E92eqt;+NYdxx`eS(4Hw_Jb5|yVvBg z*tbdY^!AN;luEyN4VRhS@-_DC{({ziH{&Z}iGElSV~qvT>L-8G%+yEL zX#MFOhj{InyKG=mvW-<1B@c-}x$vA(nU?>S>0*eN#!SLzQ)Ex7fvQ)S4D<8|I#N$3 zT5Ei`Z?cxBODHX8(Xp73v`IsAYC@9b;t}z0wxVuQSY1J^GRwDPN@qbM-ZF48T$GZ< z8WU+;Pqo?{ghI-KZ-i*ydXu`Ep0Xw^McH_KE9J0S7G;x8Fe`DVG?j3Pv=0YzJ}yZR z%2=oqHiUjvuk0~Ca>Kol4CFi0_xQT~;_F?=u+!kIDl-9g`#ZNZ9HCy17Ga1v^Jv9# z{T4Kb1-AzUxq*MutfOWWZgD*HnFfyYg0&e9f(5tZ>krPF6{VikNeHoc{linPPt#Si z&*g>(c54V8rT_AX!J&bNm-!umPvOR}vDai#`CX___J#=zeB*{4<&2WpaDncZsOkp* zsg<%@@rbrMkR_ux9?LsQxzoBa1s%$BBn6vk#{&&zUwcfzeCBJUwFYSF$08qDsB;gWQN*g!p8pxjofWbqNSZOEKOaTx@+* zwdt5*Q47@EOZ~EZL9s?1o?A%9TJT=Ob_13yyugvPg*e&ZU(r6^k4=2+D-@n=Hv5vu zSXG|hM(>h9^zn=eQ=$6`JO&70&2|%V5Lsx>)(%#;pcOfu>*nk_3HB_BNaH$`jM<^S zcSftDU1?nL;jy)+sfonQN}(}gUW?d_ikr*3=^{G)=tjBtEPe>TO|0ddVB zTklrSHiW+!#26frPXQQ(YN8DG$PZo?(po(QUCCf_OJC`pw*uey00%gmH!`WJkrKXj2!#6?`T25mTu9OJp2L8z3! z=arrL$ZqxuE{%yV)14Kd>k}j7pxZ6#$Dz8$@WV5p8kTqN<-7W)Q7Gt2{KoOPK_tZ| zf2WG~O5@{qPI+W<4f_;reuFVdO^5`ADC1!JQE|N`s3cq@(0WB!n0uh@*c{=LAd;~} zyGK@hbF-Oo+!nN)@i*O(`@FA#u?o=~e{`4O#5}z&=UkU*50fOrzi11D^&FOqe>wii z?*k+2|EcUs;Gx{!@KBT~>PAwLrIDT7Th=Utu?~?np@t^gFs?zgX=D${RwOY^WGh-+ z+#4$066ISh8eYW#FXWp~S`<*%O^ZuItL1Tyqt8#tZ zY120E;^VG`!lZn&3sPd$RkdHpU#|w+bYV)pJC|SH9g%|5IkxVTQcBA4CL0}$&}ef@ zW^Vtj%M;;_1xxP9x#ex17&4N*{ksO*_4O}xYu(p*JkL#yr}@7b)t5X?%CY<+s5_MJ zuiqt+N_;A(_)%lumoyRFixWa-M7qK_9s6<1X?JDa9fP!+_6u~~M$5L=ipB=7(j#f< zZ34J%=bs549%~_mA(|={uZNs_0?o7;-LBP(ZRnkd{-^|2|=4vUTmtByHL8 zEph`(LSEzQj68a+`d$V<45J7cyv^#|^|%fD#si1Nx!4NW*`l*{->HEWNh6-|g>-=r zXmQ|-i}Ku$ndUeHQ^&ieT!Lf}vf6GaqW9$DJ2NWrqwPY%%4nip$@vK$nRp*_C-v<| zuKz~ZyN&<%!NS26&x?jhy+@awJipMQ-8(X4#Ae5??U<1QMt1l9R=w9fAnEF}NYu$2 z>6}Vkc zIb*A?G*z8^IvibmBKn_u^5&T_1oey0gZS2~obf(#xk=erZGTEdQnt3DMGM+0oPwss zj5zXD;(oWhB_T@~Ig#9@v)AKtXu3>Inmgf@A|-lD-1U>cNyl3h?ADD9)GG4}zUGPk zZzaXe!~Kf?<~@$G?Uql3t8jy9{2!doq4=J}j9ktTxss{p6!9UdjyDERlA*xZ!=Q)KDs5O)phz>Vq3BNGoM(H|=1*Q4$^2fTZw z(%nq1P|5Rt81}SYJpEEzMPl5VJsV5&4e)ZWKDyoZ>1EwpkHx-AQVQc8%JMz;{H~p{=FXV>jIxvm4X*qv52e?Y-f%DJ zxEA165GikEASQ^fH6K#d!Tpu2HP{sFs%E=e$gYd$aj$+xue6N+Wc(rAz~wUsk2`(b z8Kvmyz%bKQxpP}~baG-rwYcYCvkHOi zlkR<=>ZBTU*8RF_d#Bl@zZsRIhx<%~Z@Z=ik z>adw3!DK(8R|q$vy{FTxw%#xliD~6qXmY^7_9kthVPTF~Xy1CfBqbU~?1QmxmU=+k z(ggxvEuA;0e&+ci-zQR{-f7aO{O(Pz_OsEjLh_K>MbvoZ4nxtk5u{g@nPv)cgW_R} z9}EA4K4@z0?7ue}Z(o~R(X&FjejUI2g~08PH1E4w>9o{)S(?1>Z0XMvTb|;&EuyOE zGvWNpYX)Nv<8|a^;1>bh#&znEcl-r!T#pn= z4$?Yudha6F%4b>*8@=BdtXXY4N+`U4Dmx$}>HeVJk-QdTG@t!tVT#0(LeV0gvqyyw z2sEp^9eY0N`u10Tm4n8No&A=)IeEC|gnmEXoNSzu!1<4R<%-9kY_8~5Ej?zRegMn78wuMs#;i&eUA0Zk_RXQ3b&TT} z;SCI=7-FUB@*&;8|n>(_g^HGf3@QODE3LpmX~ELnymQm{Sx9xrKS zK29p~?v@R$0=v6Dr5aW>-!{+h@?Q58|Kz8{{W`%J+lDAdb&M5VHrX_mDY;1-JLnf)ezmPau$)1;=`-FU=-r-83tX=C`S#}GZufju zQ>sXNT0Ny=k@nc%cFnvA_i4SC)?_ORXHq8B4D%el1uPX`c~uG#S1M7C+*MMqLw78E zhY2dI8@+N^qrMI1+;TUda(vGqGSRyU{Fnm`aqrr7bz42c5xsOO-~oZpkzorD1g}Y<6rk&3>PsSGy}W?MtqFky@A(X# zIuNZK0cK?^=;PUAu>j0#HtjbHCV*6?jzA&OoE$*Jlga*}LF`SF?WLhv1O|zqC<>*> zYB;#lsYKx0&kH@BFpW8n*yDcc6?;_zaJs<-jPSkCsSX-!aV=P5kUgF@Nu<{a%#K*F z134Q{9|YX7X(v$62_cY3^G%t~rD>Q0z@)1|zs)vjJ6Jq9;7#Ki`w+eS**En?7;n&7 zu==V3T&eFboN3ZiMx3D8qYc;VjFUk_H-WWCau(VFXSQf~viH0L$gwD$UfFHqNcgN`x}M+YQ6RnN<+@t>JUp#)9YOkqst-Ga?{FsDpEeX0(5v{0J~SEbWiL zXC2}M4?UH@u&|;%0y`eb33ldo4~z-x8zY!oVmV=c+f$m?RfDC35mdQ2E>Pze7KWP- z>!Bh<&57I+O_^s}9Tg^k)h7{xx@0a0IA~GAOt2yy!X%Q$1rt~LbTB6@Du!_0%HV>N zlf)QI1&gvERKwso23mJ!Ou6ZS#zCS5W`gxE5T>C#E|{i<1D35C222I33?Njaz`On7 zi<+VWFP6D{e-{yiN#M|Jgk<44u1TiMI78S5W`Sdb5f+{zu34s{CfWN7a3Cf^@L%!& zN$?|!!9j2c)j$~+R6n#891w-z8(!oBpL2K=+%a$r2|~8-(vQj5_XT`<0Ksf;oP+tz z9CObS!0m)Tgg`K#xBM8B(|Z)Wb&DYL{WTYv`;A=q6~Nnx2+!lTIXtj8J7dZE!P_{z z#f8w6F}^!?^KE#+ZDv+xd5O&3EmomZzsv?>E-~ygGum45fk!SBN&|eo1rKw^?aZJ4 E2O(~oYXATM diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37aef8d3..09523c0e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c7873..1aa94a42 100644 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +214,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index ac1b06f9..7101f8e4 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +41,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/settings.gradle b/settings.gradle index d5f27957..1ded021f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,5 +10,6 @@ pluginManagement { include("common") include("fabric") include("forge") +include ('neoforge') rootProject.name = "SimplySwords" From ce0474e6197822c567cda21c9dc232a954b421b6 Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Fri, 20 Sep 2024 10:53:38 +1000 Subject: [PATCH 02/37] 1.21 Port - Continue suffering, I mean porting to 1.21 --- .../effect/AstralShiftEffect.java | 13 +++----- .../effect/FatalFlickerEffect.java | 2 +- .../simplyswords/effect/FireVortexEffect.java | 6 ++++ .../simplyswords/effect/FlameSeedEffect.java | 6 ++++ .../simplyswords/effect/FreezeEffect.java | 2 +- .../simplyswords/effect/FrenzyEffect.java | 6 ++++ .../effect/FrostVortexEffect.java | 6 ++++ .../simplyswords/effect/MagislamEffect.java | 8 ++++- .../simplyswords/effect/OrbitingEffect.java | 5 ++- .../effect/VoidAssaultEffect.java | 6 ++++ .../simplyswords/effect/VoidcloakEffect.java | 6 ++++ .../SimplySwordsStatusEffectInstance.java | 3 +- .../item/ContainedRemnantItem.java | 1 - .../item/EmpoweredRemnantItem.java | 1 - .../simplyswords/item/GobberEndSwordItem.java | 2 ++ .../simplyswords/item/UniqueSwordItem.java | 5 +-- .../item/custom/ArcanethystSwordItem.java | 1 - .../item/custom/BrambleSwordItem.java | 10 ++++-- .../item/custom/CaelestisSwordItem.java | 8 +++-- .../item/custom/DormantRelicSwordItem.java | 6 +++- .../item/custom/DreadtideSwordItem.java | 14 +++++--- .../item/custom/EmberIreSwordItem.java | 11 +++---- .../item/custom/EmberlashSwordItem.java | 18 +++++++---- .../item/custom/EnigmaSwordItem.java | 8 +++-- .../item/custom/FireSwordItem.java | 6 +++- .../item/custom/FlamewindSwordItem.java | 10 ++++-- .../item/custom/FrostfallSwordItem.java | 22 +++++++------ .../item/custom/HarbingerSwordItem.java | 6 +++- .../item/custom/HasteSwordItem.java | 10 ++++-- .../item/custom/HiveheartSwordItem.java | 8 +++-- .../item/custom/IcewhisperSwordItem.java | 1 - .../item/custom/LichbladeSwordItem.java | 1 - .../item/custom/LivyatanSwordItem.java | 12 ++++--- .../item/custom/MagibladeSwordItem.java | 1 - .../item/custom/MagiscytheSwordItem.java | 12 ++++--- .../item/custom/MagispearSwordItem.java | 10 ++++-- .../item/custom/MoltenEdgeSwordItem.java | 16 ++++++---- .../item/custom/PlagueSwordItem.java | 6 +++- .../item/custom/RendSwordItem.java | 6 +++- .../item/custom/RibboncleaverSwordItem.java | 10 ++++-- .../item/custom/RighteousRelicSwordItem.java | 6 +++- .../item/custom/ShadowstingSwordItem.java | 8 +++-- .../item/custom/SoulPyreSwordItem.java | 8 +++-- .../item/custom/SoulSwordItem.java | 6 +++- .../item/custom/StarsEdgeSwordItem.java | 10 ++++-- .../item/custom/StealSwordItem.java | 8 +++-- .../item/custom/StormSwordItem.java | 3 +- .../item/custom/StormbringerSwordItem.java | 1 - .../item/custom/StormsEdgeSwordItem.java | 1 - .../item/custom/SunfireSwordItem.java | 6 +++- .../item/custom/TaintedRelicSwordItem.java | 6 +++- .../item/custom/TempestSwordItem.java | 19 +++++++---- .../item/custom/ThunderbrandSwordItem.java | 1 - .../item/custom/VolcanicFurySwordItem.java | 1 - .../item/custom/WatcherSwordItem.java | 6 +++- .../item/custom/WaxweaverSwordItem.java | 6 +++- .../item/custom/WhisperwindSwordItem.java | 8 +++-- .../item/custom/WickpiercerSwordItem.java | 12 ++++--- .../simplyswords/mixin/LivingEntityMixin.java | 2 +- .../mixin/ServerPlayerEntityMixin.java | 2 +- .../simplyswords/registry/EffectRegistry.java | 32 +++++++++---------- .../simplyswords/util/HelperMethods.java | 7 ++-- 62 files changed, 306 insertions(+), 144 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java index 52a25a46..f02cd42f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java @@ -2,7 +2,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; @@ -14,6 +13,7 @@ import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -29,8 +29,8 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { ServerWorld world = (ServerWorld) entity.getWorld(); if (entity instanceof PlayerEntity player) { - if (player.hasStatusEffect(this)) { - StatusEffectInstance effectInstance = player.getStatusEffect(this); + if (player.hasStatusEffect(EffectRegistry.ASTRAL_SHIFT)) { + StatusEffectInstance effectInstance = player.getStatusEffect(EffectRegistry.ASTRAL_SHIFT); if (effectInstance != null && effectInstance.getDuration() < 10) { double x = entity.getX(); @@ -64,7 +64,7 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { HelperMethods.spawnRainingParticles(world, ParticleTypes.EXPLOSION, target, 2, 1); } } - entity.removeStatusEffect(this); + entity.removeStatusEffect(EffectRegistry.ASTRAL_SHIFT); } } } @@ -78,9 +78,4 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } - - - @Override - public void onRemoved(LivingEntity entity, AttributeContainer attributes, int amplifier) { - } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java index 3da6d359..960e1acf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java @@ -43,7 +43,7 @@ public static void performDash(LivingEntity user, World world, int radius) { } for (Entity entity : entities) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - HelperMethods.incrementStatusEffect(le, EffectRegistry.ECHO.get(), 20, amplifier, maxAmplifier); + HelperMethods.incrementStatusEffect(le, EffectRegistry.ECHO, 20, amplifier, maxAmplifier); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java index c1f1d1af..62d0cd68 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.player.PlayerEntity; @@ -59,6 +60,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java index 7feab45b..fae2c962 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java @@ -2,6 +2,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.effect.StatusEffects; @@ -109,6 +110,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java index 1726864e..ae6f3083 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FreezeEffect.java @@ -16,7 +16,7 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { double y = pLivingEntity.getY(); double z = pLivingEntity.getZ(); - pLivingEntity.teleport(x, y, z); + pLivingEntity.teleport(x, y, z, false); pLivingEntity.setVelocity(0, 0, 0); } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java index fd5ba37c..a9942eb4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleTypes; import net.sweenus.simplyswords.item.custom.WickpiercerSwordItem; @@ -22,6 +23,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java index c134fcc1..310756b3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.player.PlayerEntity; @@ -59,6 +60,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java index e08ee29e..0b96ee78 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java @@ -2,6 +2,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.particle.ParticleTypes; @@ -59,7 +60,7 @@ else if (ability_timer <= 50) { } HelperMethods.spawnOrbitParticles((ServerWorld) player.getWorld(), player.getPos(), ParticleTypes.CAMPFIRE_COSY_SMOKE, 2, 8); HelperMethods.spawnOrbitParticles((ServerWorld) player.getWorld(), player.getPos(), ParticleTypes.EXPLOSION, 1, 3); - player.getWorld().playSoundFromEntity(null, player, SoundEvents.ENTITY_GENERIC_EXPLODE, + player.getWorld().playSoundFromEntity(null, player, SoundEvents.ENTITY_GENERIC_EXPLODE.value(), SoundCategory.PLAYERS, 0.9f, 1.1f); player.removeStatusEffect(EffectRegistry.MAGISLAM); player.removeStatusEffect(EffectRegistry.RESILIENCE); @@ -71,6 +72,11 @@ else if (ability_timer <= 50) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int duration, int amplifier) { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java index c03c8ce3..8039427d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/OrbitingEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleEffect; @@ -8,7 +9,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Vec3d; -public class OrbitingEffect extends StatusEffect { +public abstract class OrbitingEffect extends StatusEffect { protected ParticleEffect particleType = ParticleTypes.SMOKE; // Default particle type public OrbitingEffect(StatusEffectCategory statusEffectCategory, int color) { super (statusEffectCategory, color); @@ -58,6 +59,8 @@ protected void setParticleType(ParticleEffect particleType) { this.particleType = particleType; } + public abstract void onRemoved(LivingEntity entity, AttributeContainer attributes); + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java index 0e2a1208..cb9a8dd2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleTypes; @@ -45,6 +46,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java index 96b536b2..92e70d01 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidcloakEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleTypes; @@ -16,6 +17,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/instance/SimplySwordsStatusEffectInstance.java b/common/src/main/java/net/sweenus/simplyswords/effect/instance/SimplySwordsStatusEffectInstance.java index 8a9ba7e8..d07eb67f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/instance/SimplySwordsStatusEffectInstance.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/instance/SimplySwordsStatusEffectInstance.java @@ -3,13 +3,14 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.registry.entry.RegistryEntry; public class SimplySwordsStatusEffectInstance extends StatusEffectInstance { public LivingEntity sourceEntity; public int additionalData; - public SimplySwordsStatusEffectInstance(StatusEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { + public SimplySwordsStatusEffectInstance(RegistryEntry type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { super(type, duration, amplifier, ambient, showParticles, showIcon); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java index a5dd23c6..21f75233 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.item; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Style; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java index c9019bd6..f729f66e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Style; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index c5badcb0..b147a8d5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -39,6 +39,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { //Unbreakable weapon support for Gobber static boolean unbreakable = Config.getBoolean("compatGobberEndWeaponsUnbreakable", "General", ConfigDefaultValues.compatGobberEndWeaponsUnbreakable); + /* 1.21 @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { @@ -49,5 +50,6 @@ public void onCraft(ItemStack stack, World world, PlayerEntity player) stack.getOrCreateNbt().putBoolean("Unbreakable", true); } } + */ } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index 4f164300..7b7d1df1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -19,7 +18,7 @@ import java.util.List; -public class UniqueSwordItem extends SwordItem { +public abstract class UniqueSwordItem extends SwordItem { String iRarity = "UNIQUE"; @@ -27,6 +26,8 @@ public UniqueSwordItem(ToolMaterial toolMaterial, int attackDamage, float attack super(toolMaterial, attackDamage, attackSpeed, settings.fireproof()); } + public abstract int getMaxUseTime(ItemStack stack); + @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { SimplySwordsAPI.inventoryTickGemSocketLogic(stack, world, entity, 50, 50); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java index 54505e18..00a1060e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index 5b20b4b8..3b5c6dab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -23,6 +22,11 @@ public BrambleSwordItem(ToolMaterial toolMaterial, int attackDamage, float attac super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -32,8 +36,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack int fhitchance = (int) Config.getFloat("brambleChance", "UniqueEffects", ConfigDefaultValues.brambleChance); HelperMethods.playHitSounds(attacker, target); if (attacker.getRandom().nextInt(100) <= fhitchance) { - if (!attacker.hasStatusEffect(EffectRegistry.SPORE_SWARM.get())) - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.SPORE_SWARM.get(), 200, 2, false, false, true)); + if (!attacker.hasStatusEffect(EffectRegistry.SPORE_SWARM)) + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.SPORE_SWARM, 200, 2, false, false, true)); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java index 90455ba2..5bf7b837 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -28,6 +27,11 @@ public CaelestisSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -49,7 +53,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.ACTIVATE_PLINTH_03.get(), user.getSoundCategory(), 0.4f, 1.3f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ASTRAL_SHIFT.get(), + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ASTRAL_SHIFT, duration, 0, false, false, true)); user.addStatusEffect(new StatusEffectInstance(StatusEffects.DARKNESS, duration, 0, false, false, true)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index ddcbaf83..c6f00643 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.item.custom; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -27,6 +26,11 @@ public DormantRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, float super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index ac751ce6..dd7d6577 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.item.custom; import elocindev.necronomicon.api.text.TextAPI; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -36,6 +35,11 @@ public DreadtideSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -63,7 +67,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if ((closestEntity instanceof LivingEntity ee)) { if (HelperMethods.checkFriendlyFire(ee, user)) { - StatusEffectInstance voidcloakEffect = user.getStatusEffect(EffectRegistry.VOIDCLOAK.get()); + StatusEffectInstance voidcloakEffect = user.getStatusEffect(EffectRegistry.VOIDCLOAK); if (voidcloakEffect != null) { SoundEvent soundSelect = SoundRegistry.MAGIC_SHAMANIC_VOICE_04.get(); List sounds = new ArrayList<>(); @@ -86,12 +90,12 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.getSoundCategory(), 0.3f, 1.3f); SimplySwordsStatusEffectInstance voidAssaultEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.VOIDASSAULT.get(), voidcallerDuration, voidcloakEffect.getAmplifier(), false, + EffectRegistry.VOIDASSAULT, voidcallerDuration, voidcloakEffect.getAmplifier(), false, false, true); voidAssaultEffect.setSourceEntity(user); - voidAssaultEffect.setAdditionalData((int) (getAttackDamage() * voidcallerDamageModifier)); + voidAssaultEffect.setAdditionalData((int) (HelperMethods.getAttackDamage(this.getDefaultStack()) * voidcallerDamageModifier)); ee.addStatusEffect(voidAssaultEffect); - user.removeStatusEffect(EffectRegistry.VOIDCLOAK.get()); + user.removeStatusEffect(EffectRegistry.VOIDCLOAK); user.getItemCooldownManager().set(this, skillCooldown); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index cdf5e373..09697cda 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,8 +9,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; -import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleTypes; +import net.minecraft.particle.SimpleParticleType; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; @@ -36,9 +35,9 @@ public EmberIreSwordItem(ToolMaterial toolMaterial, int attackDamage, float atta } private static int stepMod = 0; - private static DefaultParticleType particleWalk = ParticleTypes.FALLING_LAVA; - private static DefaultParticleType particleSprint = ParticleTypes.FALLING_LAVA; - private static DefaultParticleType particlePassive = ParticleTypes.SMOKE; + private static SimpleParticleType particleWalk = ParticleTypes.FALLING_LAVA; + private static SimpleParticleType particleSprint = ParticleTypes.FALLING_LAVA; + private static SimpleParticleType particlePassive = ParticleTypes.SMOKE; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -100,7 +99,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int targetEntity.timeUntilRegen = 0; targetEntity.damage(damageSource, finalDamage); - world.playSound(null, targetEntity.getBlockPos(), SoundEvents.ENTITY_GENERIC_EXPLODE, + world.playSound(null, targetEntity.getBlockPos(), SoundEvents.ENTITY_GENERIC_EXPLODE.value(), user.getSoundCategory(), 0.4f, 1.1f); HelperMethods.spawnOrbitParticles((ServerWorld) world, targetEntity.getPos(), ParticleTypes.EXPLOSION, 1, 1 ); HelperMethods.spawnOrbitParticles((ServerWorld) world, targetEntity.getPos(), ParticleTypes.POOF, 1, 20 ); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index 001cd1e1..568f4cbc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -29,6 +28,11 @@ public EmberlashSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -37,9 +41,9 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); DamageSource damageSource = world.getDamageSources().generic(); - float abilityDamage = getAttackDamage(); + float abilityDamage = (float) HelperMethods.getAttackDamage(this.getDefaultStack()); float spellScalingModifier = Config.getFloat("smoulderSpellScaling", "UniqueEffects", ConfigDefaultValues.smoulderSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire") > getAttackDamage()) { + if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire") > HelperMethods.getAttackDamage(this.getDefaultStack())) { abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire"); scalesWithSpellPower = true; } @@ -50,15 +54,15 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack int maximum_stacks = (int) Config.getFloat("smoulderMaxStacks", "UniqueEffects", ConfigDefaultValues.smoulderMaxStacks); HelperMethods.playHitSounds(attacker, target); - if (target.hasStatusEffect(EffectRegistry.SMOULDERING.get())) { + if (target.hasStatusEffect(EffectRegistry.SMOULDERING)) { target.timeUntilRegen = 0; - StatusEffectInstance smoulderingEffect = target.getStatusEffect(EffectRegistry.SMOULDERING.get()); + StatusEffectInstance smoulderingEffect = target.getStatusEffect(EffectRegistry.SMOULDERING); if (smoulderingEffect != null) { float damageMultiplier = 0.15f * smoulderingEffect.getAmplifier(); target.damage(damageSource, abilityDamage * damageMultiplier); } } - HelperMethods.incrementStatusEffect(target, EffectRegistry.SMOULDERING.get(), 100, 1, maximum_stacks+1); + HelperMethods.incrementStatusEffect(target, EffectRegistry.SMOULDERING, 100, 1, maximum_stacks+1); } return super.postHit(stack, target, attacker); @@ -101,7 +105,7 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip3").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", getAttackDamage() * 0.20f).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", HelperMethods.getAttackDamage(this.getDefaultStack()) * 0.20f).setStyle(TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip6").setStyle(TEXT)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index 9617a927..f583fc8e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -3,7 +3,6 @@ import dev.architectury.platform.Platform; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; @@ -38,6 +37,11 @@ public EnigmaSwordItem(ToolMaterial toolMaterial, int attackDamage, float attack super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -71,7 +75,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); banner.setCustomNameVisible(false); banner.setInvisible(true); - banner.addStatusEffect( new StatusEffectInstance(EffectRegistry.ELEMENTAL_VORTEX.get(), 900, 11, false, false, false)); + banner.addStatusEffect( new StatusEffectInstance(EffectRegistry.ELEMENTAL_VORTEX, 900, 11, false, false, false)); } user.getItemCooldownManager().set(this.getDefaultStack().getItem(), (int) Config.getFloat("enigmaCooldown", "UniqueEffects", ConfigDefaultValues.enigmaCooldown)); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java index 9f413338..77cb81a1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -25,6 +24,11 @@ public FireSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSp super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index 9c9a8844..587468b2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -32,6 +31,11 @@ public FlamewindSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -60,7 +64,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (closestEntity != null) { if ((closestEntity instanceof LivingEntity ee)) { - if (HelperMethods.checkFriendlyFire(ee, user) && !ee.hasStatusEffect(EffectRegistry.FLAMESEED.get())) { + if (HelperMethods.checkFriendlyFire(ee, user) && !ee.hasStatusEffect(EffectRegistry.FLAMESEED)) { SoundEvent soundSelect = SoundRegistry.SPELL_FIRE.get(); int particleCount = 20; // Number of particles along the line @@ -69,7 +73,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.getSoundCategory(), 0.3f, 1.3f); SimplySwordsStatusEffectInstance flamSeedEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.FLAMESEED.get(), flameSeedDuration, 0, false, + EffectRegistry.FLAMESEED, flameSeedDuration, 0, false, false, true); flamSeedEffect.setSourceEntity(user); flamSeedEffect.setAdditionalData(flameSeedSpreadCap); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 2346dbaa..8eda0c54 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -34,6 +33,11 @@ public FrostfallSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -60,7 +64,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target.getX() - radius, target.getY() - radius, target.getZ() - radius); for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE.get(), shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), le.getSoundCategory(), 0.1f, 3f); @@ -94,7 +98,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han double zpos = user.getZ() - 2; user.setVelocity(0, 0, 0); // Stop player in place user.velocityModified = true; - user.teleport(lastX, lastY, lastZ); //Ensure they don't end up stuck inside a block + user.teleport(lastX, lastY, lastZ, false); // Ensure they don't end up stuck inside a block for (int i = 3; i > 0; i--) { for (int j = 3; j > 0; j--) { @@ -109,22 +113,22 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han BlockState currentState4 = world.getBlockState(poscheck4); BlockState state = Blocks.ICE.getDefaultState(); if (i + j != 4) { - if (currentState == Blocks.AIR.getDefaultState() || currentState == Blocks.SNOW.getDefaultState() || currentState == Blocks.GRASS.getDefaultState() + if (currentState == Blocks.AIR.getDefaultState() || currentState == Blocks.SNOW.getDefaultState() || currentState == Blocks.GRASS_BLOCK.getDefaultState() || currentState == Blocks.LARGE_FERN.getDefaultState() || currentState == Blocks.FERN.getDefaultState()) world.setBlockState(poscheck, state); - if (currentState2 == Blocks.AIR.getDefaultState() || currentState2 == Blocks.SNOW.getDefaultState() || currentState2 == Blocks.GRASS.getDefaultState() + if (currentState2 == Blocks.AIR.getDefaultState() || currentState2 == Blocks.SNOW.getDefaultState() || currentState2 == Blocks.GRASS_BLOCK.getDefaultState() || currentState2 == Blocks.LARGE_FERN.getDefaultState() || currentState2 == Blocks.FERN.getDefaultState()) world.setBlockState(poscheck2, state); } - if (currentState3 == Blocks.AIR.getDefaultState() || currentState3 == Blocks.SNOW.getDefaultState() || currentState3 == Blocks.GRASS.getDefaultState() + if (currentState3 == Blocks.AIR.getDefaultState() || currentState3 == Blocks.SNOW.getDefaultState() || currentState3 == Blocks.GRASS_BLOCK.getDefaultState() || currentState3 == Blocks.LARGE_FERN.getDefaultState() || currentState3 == Blocks.FERN.getDefaultState()) world.setBlockState(poscheck3, state); - if (currentState4 == Blocks.AIR.getDefaultState() || currentState4 == Blocks.SNOW.getDefaultState() || currentState4 == Blocks.GRASS.getDefaultState() + if (currentState4 == Blocks.AIR.getDefaultState() || currentState4 == Blocks.SNOW.getDefaultState() || currentState4 == Blocks.GRASS_BLOCK.getDefaultState() || currentState4 == Blocks.LARGE_FERN.getDefaultState() || currentState4 == Blocks.FERN.getDefaultState()) world.setBlockState(poscheck4, state); } } - user.teleport(lastX, lastY, lastZ); + user.teleport(lastX, lastY, lastZ, false); user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, shatter_timer_max, 4), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, shatter_timer_max, 4), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max, 4), user); @@ -150,7 +154,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, for (Entity otherEntity : world.getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { //Ice shatter if (otherEntity instanceof LivingEntity le) { - if (le.hasStatusEffect(EffectRegistry.FREEZE.get())) { + if (le.hasStatusEffect(EffectRegistry.FREEZE)) { world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); le.damage(player.getDamageSources().indirectMagic(entity, entity), abilityDamage); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index edcd7f5f..cb39861d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; @@ -38,6 +37,11 @@ public HarbingerSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java index 576e410c..eaef0fc5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -28,6 +27,11 @@ public HasteSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackS super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -78,8 +82,8 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { if (stepMod > 0) stepMod--; if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENTITY_EFFECT, - ParticleTypes.ENTITY_EFFECT, ParticleTypes.ENTITY_EFFECT, false); + HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ASH, + ParticleTypes.ASH, ParticleTypes.ASH, false); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index c76664a9..1ea42ac7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; @@ -32,6 +31,11 @@ public HiveheartSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -54,7 +58,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack beeEntity.shouldAngerAt(target); beeEntity.setInvulnerable(true); beeEntity.setOwner(attacker); - double attackDamage = (1 + skillDamage * this.getAttackDamage()); + double attackDamage = (1 + skillDamage * HelperMethods.getAttackDamage(this.getDefaultStack())); EntityAttributeInstance attackAttribute = beeEntity.getAttributeInstance(EntityAttributes.GENERIC_ATTACK_DAMAGE); if (attackAttribute != null) attackAttribute.setBaseValue(attackDamage); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java index 5b37fe13..5db5a6cb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java index 63dc9d68..8bc29f84 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index 1b7d1da9..9a71e00d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -34,6 +33,11 @@ public LivyatanSwordItem(ToolMaterial toolMaterial, int attackDamage, float atta super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; int radius = (int) Config.getFloat("frostShatterRadius", "UniqueEffects", ConfigDefaultValues.frostShatterRadius); @@ -59,7 +63,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target.getX() - radius, target.getY() - radius, target.getZ() - radius); for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE.get(), shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), le.getSoundCategory(), 0.1f, 3f); @@ -101,8 +105,8 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, for (Entity otherEntity : world.getOtherEntities(entity, box, EntityPredicates.VALID_LIVING_ENTITY)) { //Ice shatter if (otherEntity instanceof LivingEntity le) { - if (le.hasStatusEffect(EffectRegistry.FREEZE.get())) { - le.removeStatusEffect(EffectRegistry.FREEZE.get()); + if (le.hasStatusEffect(EffectRegistry.FREEZE)) { + le.removeStatusEffect(EffectRegistry.FREEZE); le.removeStatusEffect(StatusEffects.RESISTANCE); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index fcca2f9c..9ca8c388 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index b9058605..62850c4b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -30,6 +29,11 @@ public MagiscytheSwordItem(ToolMaterial toolMaterial, int attackDamage, float at super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -39,14 +43,14 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack HelperMethods.playHitSounds(attacker, target); ServerWorld world = (ServerWorld) attacker.getWorld(); - if (attacker.hasStatusEffect(EffectRegistry.MAGISTORM.get())) { + if (attacker.hasStatusEffect(EffectRegistry.MAGISTORM)) { world.playSound(null, attacker.getBlockPos(), SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_03.get(), attacker.getSoundCategory(), 0.1f, 1.9f); float repairChance = Config.getFloat("magistormRepairChance", "UniqueEffects", ConfigDefaultValues.magistormRepairChance); Random random = new Random(); for (EquipmentSlot slot : EquipmentSlot.values()) { - if (slot.getType() == EquipmentSlot.Type.ARMOR || slot == EquipmentSlot.MAINHAND || slot == EquipmentSlot.OFFHAND) { + if (slot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR || slot == EquipmentSlot.MAINHAND || slot == EquipmentSlot.OFFHAND) { ItemStack item = attacker.getEquippedStack(slot); if (!item.isEmpty() && random.nextFloat() < repairChance && item.getDamage() > 0) { item.setDamage((int) (item.getDamage() - HelperMethods.getAttackDamage(stack))); @@ -66,7 +70,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_22.get(), user.getSoundCategory(), 0.2f, 1.1f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISTORM.get(), baseEffectDuration, 1)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISTORM, baseEffectDuration, 1)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index d9ffa443..7013847a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -29,6 +28,11 @@ public MagispearSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -56,8 +60,8 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_27.get(), user.getSoundCategory(), 0.2f, 1.1f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISLAM.get(), 62, 1)); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE.get(), 64, 3)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISLAM, 62, 1)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE, 64, 3)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index e7f814e3..1754a704 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -9,8 +8,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; -import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleTypes; +import net.minecraft.particle.SimpleParticleType; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -33,10 +32,15 @@ public MoltenEdgeSwordItem(ToolMaterial toolMaterial, int attackDamage, float at super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; - private static DefaultParticleType particleWalk = ParticleTypes.FALLING_LAVA; - private static DefaultParticleType particleSprint = ParticleTypes.FALLING_LAVA; - private static DefaultParticleType particlePassive = ParticleTypes.SMOKE; + private static SimpleParticleType particleWalk = ParticleTypes.FALLING_LAVA; + private static SimpleParticleType particleSprint = ParticleTypes.FALLING_LAVA; + private static SimpleParticleType particlePassive = ParticleTypes.SMOKE; private final int abilityCooldown = (int) Config.getFloat("moltenRoarCooldown", "UniqueEffects", ConfigDefaultValues.moltenRoarCooldown); int radius = (int) Config.getFloat("moltenRoarRadius", "UniqueEffects", ConfigDefaultValues.moltenRoarRadius); @@ -81,7 +85,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), user.getSoundCategory(), 0.7f, 1.5f); int duration = roar_timer_max * amp / 2; - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT.get(), duration, 0), user); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 3), user); user.getItemCooldownManager().set(this, abilityCooldown); particlePassive = ParticleTypes.LARGE_SMOKE; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index 87d2f869..5ffda3cb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -23,6 +22,11 @@ public PlagueSwordItem(ToolMaterial toolMaterial, int attackDamage, float attack super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java index d53a0618..ebdd6f77 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -30,6 +29,11 @@ public RendSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSp super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + float abilityDamage = Config.getFloat("soulrendDamageMulti", "UniqueEffects", ConfigDefaultValues.soulrendDamageMulti); float spellScalingModifier = Config.getFloat("soulrendDamageSpellScaling", "UniqueEffects", ConfigDefaultValues.soulrendDamageSpellScaling); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index ce21f522..761f7939 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -2,7 +2,6 @@ import dev.architectury.platform.Platform; import net.minecraft.block.BlockState; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -33,6 +32,11 @@ public RibboncleaverSwordItem(ToolMaterial toolMaterial, int attackDamage, float super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -59,9 +63,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.setVelocity(user.getRotationVector().multiply(+1.7)); user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent user flying to the heavens user.velocityModified = true; - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONCLEAVE.get(), + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONCLEAVE, 60, 0, false, false, true)); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE.get(), + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE, 15, resilienceAmplifier, false, false, true)); user.getItemCooldownManager().set(this, skillCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index 06495b3e..bc42caf3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -30,6 +29,11 @@ public RighteousRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, floa super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java index 74951c35..96efd905 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -38,6 +37,11 @@ public ShadowstingSwordItem(ToolMaterial toolMaterial, int attackDamage, float a super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -91,7 +95,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han BlockState currentStateHigh = world.getBlockState(user.getBlockPos().up(1).offset(user.getMovementDirection(), 5)); BlockState state = Blocks.AIR.getDefaultState(); if (currentStateLow == state && currentStateHigh == state) { - user.teleport(targetPositionX, targetPositionY, targetPositionZ); + user.teleport(targetPositionX, targetPositionY, targetPositionZ, false); } return super.use(world, user, hand); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index d52fd257..940a96f1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -30,6 +29,11 @@ public SoulPyreSwordItem(ToolMaterial toolMaterial, int attackDamage, float atta super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private int relocationTimer; private static int stepMod = 0; private final int relocationDuration = (int) Config.getFloat("soultetherDuration", "UniqueEffects", ConfigDefaultValues.soultetherDuration); @@ -71,7 +75,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, relocationDuration, 3), user); - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE.get(), relocationDuration - 10, 0), user); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, relocationDuration - 10, 0), user); canRelocate = true; relocationTimer = relocationDuration; //AOE ignite & pull diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java index 9f5ce336..aab9d506 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -30,6 +29,11 @@ public SoulSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSp super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index f74d0795..0cd41633 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -29,6 +28,11 @@ public StarsEdgeSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -38,7 +42,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack float skillLifestealModifier = Config.getFloat("celestialSurgeLifestealModifier", "UniqueEffects", ConfigDefaultValues.celestialSurgeLifestealModifier); ServerWorld world = (ServerWorld) attacker.getWorld(); DamageSource damageSource = world.getDamageSources().generic(); - float abilityDamage = getAttackDamage(); + float abilityDamage = (float) HelperMethods.getAttackDamage(this.getDefaultStack()); if (attacker instanceof PlayerEntity player) damageSource = attacker.getDamageSources().playerAttack(player); @@ -108,7 +112,7 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip1").setStyle(ABILITY)); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", getAttackDamage() * skillDamageModifier).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", HelperMethods.getAttackDamage(this.getDefaultStack()) * skillDamageModifier).setStyle(TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip4").setStyle(TEXT)); tooltip.add(Text.literal("")); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index ae86d9b5..cb161e17 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.item.custom; import net.minecraft.block.BlockState; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -32,6 +31,11 @@ public StealSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackS super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; float abilityDamage = 5; @@ -89,7 +93,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (le.hasStatusEffect(StatusEffects.SLOWNESS) && le.hasStatusEffect(StatusEffects.GLOWING)) { if (le.distanceTo(user) > 5) { //can we check target here? le.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, bduration, 1), user); - user.teleport(le.getX(), le.getY(), le.getZ()); + user.teleport(le.getX(), le.getY(), le.getZ(), false); sworld.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_SWORD_SCIFI_ATTACK_03.get(), le.getSoundCategory(), 0.3f, 1.5f); le.damage(user.getDamageSources().freeze(), abilityDamage); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index 3bbdba14..73e3b604 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -39,7 +38,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack int phitchance = (int) Config.getFloat("stormChance", "UniqueEffects", ConfigDefaultValues.stormChance); if (attacker.getRandom().nextInt(100) <= phitchance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.STORM.get(), 2, 1), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.STORM, 2, 1), attacker); } } return super.postHit(stack, target, attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java index 2941c783..f76e8251 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java index 10514a7a..5b7abbc6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java index 44883cb9..00dfe53e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; @@ -38,6 +37,11 @@ public SunfireSwordItem(ToolMaterial toolMaterial, int attackDamage, float attac super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index 04a739f4..d1fed780 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -31,6 +30,11 @@ public TaintedRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, float super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 1f81e315..690d5708 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -35,6 +35,11 @@ public TempestSwordItem(ToolMaterial toolMaterial, int attackDamage, float attac super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -82,7 +87,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target, statusSelect, 500, 1, vortexMaxStacks); effect.setSourceEntity(attacker); - effect.setAdditionalData((int) getAttackDamage() / 3); + effect.setAdditionalData((int) HelperMethods.getAttackDamage(this.getDefaultStack()) / 3); target.addStatusEffect(effect); } @@ -102,9 +107,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han for (Entity entity : serverWorld.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - if (le.hasStatusEffect(EffectRegistry.FIRE_VORTEX.get()) && le.hasStatusEffect(EffectRegistry.FROST_VORTEX.get())) { - StatusEffectInstance frostVortex = le.getStatusEffect(EffectRegistry.FROST_VORTEX.get()); - StatusEffectInstance fireVortex = le.getStatusEffect(EffectRegistry.FIRE_VORTEX.get()); + if (le.hasStatusEffect(EffectRegistry.FIRE_VORTEX) && le.hasStatusEffect(EffectRegistry.FROST_VORTEX)) { + StatusEffectInstance frostVortex = le.getStatusEffect(EffectRegistry.FROST_VORTEX); + StatusEffectInstance fireVortex = le.getStatusEffect(EffectRegistry.FIRE_VORTEX); int totalAmplifier = 0; if (fireVortex != null && frostVortex != null) totalAmplifier = fireVortex.getAmplifier() + frostVortex.getAmplifier(); @@ -117,11 +122,11 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han soundHasPlayed = true; } - SimplySwordsStatusEffectInstance status = HelperMethods.incrementSimplySwordsStatusEffect(user, EffectRegistry.ELEMENTAL_VORTEX.get(), vortexDuration, totalAmplifier, vortexMaxSize); + SimplySwordsStatusEffectInstance status = HelperMethods.incrementSimplySwordsStatusEffect(user, EffectRegistry.ELEMENTAL_VORTEX, vortexDuration, totalAmplifier, vortexMaxSize); status.setAdditionalData(Math.max(1, totalAmplifier)); status.setSourceEntity(user); - le.removeStatusEffect(EffectRegistry.FIRE_VORTEX.get()); - le.removeStatusEffect(EffectRegistry.FROST_VORTEX.get()); + le.removeStatusEffect(EffectRegistry.FIRE_VORTEX); + le.removeStatusEffect(EffectRegistry.FROST_VORTEX); user.getItemCooldownManager().set(this, skillCooldown); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java index bc8c36fe..e08e102d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java index b975b61b..32f8b325 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index 23c25a22..4157f6ae 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; @@ -26,6 +25,11 @@ public WatcherSwordItem(ToolMaterial toolMaterial, int attackDamage, float attac super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java index 5740c041..8e185d79 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffects; @@ -25,6 +24,11 @@ public WaxweaverSwordItem(ToolMaterial toolMaterial, int attackDamage, float att super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 6bef0596..646831e9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -32,6 +31,11 @@ public WhisperwindSwordItem(ToolMaterial toolMaterial, int attackDamage, float a super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -49,7 +53,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack public TypedActionResult use(World world, PlayerEntity user, Hand hand) { world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_01.get(), user.getSoundCategory(), 0.6f, 1.0f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FATAL_FLICKER.get(), 12)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FATAL_FLICKER, 12)); user.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 100)); user.getItemCooldownManager().set(this.getDefaultStack().getItem(), skillCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index 660f3d5b..b4fe32a7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -29,6 +28,11 @@ public WickpiercerSwordItem(ToolMaterial toolMaterial, int attackDamage, float a super(toolMaterial, attackDamage, attackSpeed, settings); } + @Override + public int getMaxUseTime(ItemStack stack) { + return 0; + } + private static int stepMod = 0; @Override @@ -42,9 +46,9 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (attacker instanceof PlayerEntity player) damageSource = attacker.getDamageSources().playerAttack(player); - if (attacker.hasStatusEffect(EffectRegistry.FRENZY.get())) { + if (attacker.hasStatusEffect(EffectRegistry.FRENZY)) { target.timeUntilRegen = 0; - target.damage(damageSource, this.getAttackDamage() * damageModifier); + target.damage(damageSource, (float) (HelperMethods.getAttackDamage(this.getDefaultStack()) * damageModifier)); world.playSound(null, attacker.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), attacker.getSoundCategory(), 0.2f, 1.9f); } @@ -66,7 +70,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), user.getSoundCategory(), 0.5f, 1.0f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FRENZY.get(), effectDuration, 0)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FRENZY, effectDuration, 0)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java index 7b478791..3d1be124 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java @@ -66,7 +66,7 @@ public abstract class LivingEntityMixin { int amplifier = voidcloakEffect.getAmplifier(); float reductionFactor = 1 - (amplifier + 1) * 0.10f; // +1 because amplifier starts at 0 amount *= reductionFactor; - HelperMethods.decrementStatusEffect(livingEntity, EffectRegistry.VOIDCLOAK.get()); + HelperMethods.decrementStatusEffect(livingEntity, EffectRegistry.VOIDCLOAK); } if (ribbonwrathEffect != null) { float reductionFactor = 0.85f; diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index a2aca24c..fdad6144 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -50,7 +50,7 @@ public abstract class ServerPlayerEntityMixin { //Effect Resilience if (serverPlayer.hasStatusEffect(EffectRegistry.RESILIENCE)) { - HelperMethods.decrementStatusEffect(serverPlayer, EffectRegistry.RESILIENCE.get()); + HelperMethods.decrementStatusEffect(serverPlayer, EffectRegistry.RESILIENCE); cir.setReturnValue(false); if (!player.hasStatusEffect(EffectRegistry.MAGISLAM)) serverPlayer.getWorld().playSoundFromEntity(null, serverPlayer, SoundRegistry.MAGIC_SWORD_PARRY_03.get(), diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java index 0415ae7d..722de38a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java @@ -47,33 +47,33 @@ public class EffectRegistry { public static final RegistrySupplier VOIDCLOAK = EFFECT.register("voidcloak", () -> new VoidcloakEffect(StatusEffectCategory.BENEFICIAL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ATTACK_SPEED, - "d07f34ad-6367-4a86-b47a-736947e2c008", + Identifier.of("d07f34ad-6367-4a86-b47a-736947e2c008"), 0.1, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL)); + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); public static final RegistrySupplier VOIDASSAULT = EFFECT.register("void_assault", () -> new VoidAssaultEffect(StatusEffectCategory.HARMFUL, 1124687)); public static final RegistrySupplier FIRE_VORTEX = EFFECT.register("fire_vortex", () -> new FireVortexEffect(StatusEffectCategory.HARMFUL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ARMOR, - "f20d79bc-5f73-49d3-9e3f-30bf9a8da15a", + Identifier.of("f20d79bc-5f73-49d3-9e3f-30bf9a8da15a"), -0.01, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL) + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) .addAttributeModifier(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, - "3f68cd63-6fc5-4a23-87bd-c5902579d9db", + Identifier.of("3f68cd63-6fc5-4a23-87bd-c5902579d9db"), 85, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL)); + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); public static final RegistrySupplier FROST_VORTEX = EFFECT.register("frost_vortex", () -> new FrostVortexEffect(StatusEffectCategory.HARMFUL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_MOVEMENT_SPEED, - "d0814391-9325-441e-bc7e-ace3f8f89a21", + Identifier.of("d0814391-9325-441e-bc7e-ace3f8f89a21"), -0.01, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL) + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) .addAttributeModifier(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, - "8b1fc18c-9539-4718-af61-224d0ccd274f", + Identifier.of("8b1fc18c-9539-4718-af61-224d0ccd274f"), 85, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL)); + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); public static final RegistrySupplier ELEMENTAL_VORTEX = EFFECT.register("elemental_vortex", () -> new ElementalVortexEffect(StatusEffectCategory.BENEFICIAL, 1124687)); @@ -84,20 +84,20 @@ public class EffectRegistry { public static final RegistrySupplier RIBBONWRATH = EFFECT.register("ribbonwrath", () -> new RibbonwrathEffect(StatusEffectCategory.HARMFUL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_MOVEMENT_SPEED, - "325de159-03bd-421c-8dd0-53e0090857ed", + Identifier.of("325de159-03bd-421c-8dd0-53e0090857ed"), -0.05, - EntityAttributeModifier.Operation.MULTIPLY_TOTAL)); + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); public static final RegistrySupplier RIBBONCLEAVE = EFFECT.register("ribboncleave", () -> new RibboncleaveEffect(StatusEffectCategory.BENEFICIAL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ATTACK_DAMAGE, - "c8fb5e9f-c446-4475-b73f-a2290196210f", + Identifier.of("c8fb5e9f-c446-4475-b73f-a2290196210f"), Config.getFloat("ribbonwrathDamageBonusPercent", "UniqueEffects", ConfigDefaultValues.ribbonwrathDamageBonusPercent), - EntityAttributeModifier.Operation.MULTIPLY_TOTAL) + EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) .addAttributeModifier(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, - "1b147b80-6598-48d4-917f-7da3032c070f", + Identifier.of("1b147b80-6598-48d4-917f-7da3032c070f"), 1, - EntityAttributeModifier.Operation.ADDITION)); + EntityAttributeModifier.Operation.ADD_VALUE)); public static final RegistrySupplier RESILIENCE = EFFECT.register("resilience", () -> new ResilienceEffect(StatusEffectCategory.BENEFICIAL, 1124687)); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 7bb53923..ce780ba5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -18,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.SimpleParticleType; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.scoreboard.AbstractTeam; import net.minecraft.server.world.ServerWorld; @@ -378,7 +379,7 @@ public static SimplySwordsStatusEffectInstance incrementSimplySwordsStatusEffect return statusReturn; } - public static void decrementStatusEffect(LivingEntity livingEntity, StatusEffect statusEffect) { + public static void decrementStatusEffect(LivingEntity livingEntity, RegistryEntry statusEffect) { if (livingEntity.hasStatusEffect(statusEffect)) { int currentAmplifier = livingEntity.getStatusEffect(statusEffect).getAmplifier(); @@ -396,8 +397,8 @@ public static void decrementStatusEffect(LivingEntity livingEntity, StatusEffect } // createFootfalls - creates weapon footfall particle effects (footsteps) - public static void createFootfalls(Entity entity, ItemStack stack, World world, int stepMod, DefaultParticleType particle, - DefaultParticleType sprintParticle, DefaultParticleType passiveParticle, boolean passiveParticles) { + public static void createFootfalls(Entity entity, ItemStack stack, World world, int stepMod, SimpleParticleType particle, + SimpleParticleType sprintParticle, SimpleParticleType passiveParticle, boolean passiveParticles) { if ((entity instanceof PlayerEntity player) && Config.getBoolean("enableWeaponFootfalls", "General",ConfigDefaultValues.enableWeaponFootfalls) && player.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { if (isWalking(player) && !player.isSwimming() && player.isOnGround()) { if (stepMod == 6) { From ad411d6830f554be0c299bf215e8e1d5af028b73 Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Fri, 20 Sep 2024 17:09:49 +1000 Subject: [PATCH 03/37] 1.21 Port - Continue suffering, I mean porting to 1.21 --- .../net/sweenus/simplyswords/effect/FlameSeedEffect.java | 2 +- .../sweenus/simplyswords/item/ContainedRemnantItem.java | 4 ++-- .../sweenus/simplyswords/item/EmpoweredRemnantItem.java | 4 ++-- .../sweenus/simplyswords/item/NetherfusedGemItem.java | 4 ++-- .../net/sweenus/simplyswords/item/RunefusedGemItem.java | 4 ++-- .../net/sweenus/simplyswords/item/RunicSwordItem.java | 4 ++-- .../net/sweenus/simplyswords/item/RunicTabletItem.java | 5 ++--- .../sweenus/simplyswords/item/SimplySwordsSwordItem.java | 7 +++---- .../net/sweenus/simplyswords/item/UniqueSwordItem.java | 4 ++-- .../simplyswords/item/custom/ArcanethystSwordItem.java | 5 +++-- .../simplyswords/item/custom/BrambleSwordItem.java | 5 +++-- .../simplyswords/item/custom/CaelestisSwordItem.java | 5 +++-- .../simplyswords/item/custom/DormantRelicSwordItem.java | 5 +++-- .../simplyswords/item/custom/DreadtideSwordItem.java | 9 +++++---- .../simplyswords/item/custom/EmberIreSwordItem.java | 5 +++-- .../simplyswords/item/custom/EmberlashSwordItem.java | 5 +++-- .../simplyswords/item/custom/EnigmaSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/FireSwordItem.java | 5 +++-- .../simplyswords/item/custom/FlamewindSwordItem.java | 5 +++-- .../simplyswords/item/custom/FrostfallSwordItem.java | 5 +++-- .../simplyswords/item/custom/HarbingerSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/HasteSwordItem.java | 5 +++-- .../simplyswords/item/custom/HiveheartSwordItem.java | 5 +++-- .../simplyswords/item/custom/IcewhisperSwordItem.java | 5 +++-- .../simplyswords/item/custom/LichbladeSwordItem.java | 5 +++-- .../simplyswords/item/custom/LivyatanSwordItem.java | 5 +++-- .../simplyswords/item/custom/MagibladeSwordItem.java | 5 +++-- .../simplyswords/item/custom/MagiscytheSwordItem.java | 5 +++-- .../simplyswords/item/custom/MagispearSwordItem.java | 5 +++-- .../simplyswords/item/custom/MoltenEdgeSwordItem.java | 5 +++-- .../simplyswords/item/custom/PlagueSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/RendSwordItem.java | 5 +++-- .../simplyswords/item/custom/RibboncleaverSwordItem.java | 5 +++-- .../item/custom/RighteousRelicSwordItem.java | 5 +++-- .../simplyswords/item/custom/ShadowstingSwordItem.java | 5 +++-- .../simplyswords/item/custom/SoulPyreSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/SoulSwordItem.java | 5 +++-- .../simplyswords/item/custom/StarsEdgeSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/StealSwordItem.java | 5 +++-- .../sweenus/simplyswords/item/custom/StormSwordItem.java | 5 +++-- .../simplyswords/item/custom/StormbringerSwordItem.java | 5 +++-- .../simplyswords/item/custom/StormsEdgeSwordItem.java | 5 +++-- .../simplyswords/item/custom/SunfireSwordItem.java | 5 +++-- .../simplyswords/item/custom/TaintedRelicSwordItem.java | 5 +++-- .../simplyswords/item/custom/TempestSwordItem.java | 6 +++--- .../simplyswords/item/custom/ThunderbrandSwordItem.java | 5 +++-- .../simplyswords/item/custom/VolcanicFurySwordItem.java | 5 +++-- .../simplyswords/item/custom/WatcherSwordItem.java | 5 +++-- .../simplyswords/item/custom/WaxweaverSwordItem.java | 5 +++-- .../simplyswords/item/custom/WhisperwindSwordItem.java | 5 +++-- .../simplyswords/item/custom/WickpiercerSwordItem.java | 5 +++-- .../src/main/resources/simplyswords-common.mixins.json | 2 +- fabric/src/main/resources/simplyswords.mixins.json | 2 +- forge/src/main/resources/simplyswords.mixins.json | 2 +- 54 files changed, 149 insertions(+), 110 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java index fae2c962..8c5032a4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java @@ -77,7 +77,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!le.hasStatusEffect(EffectRegistry.FLAMESEED) && additionalData > 0) { additionalData -= 1; SimplySwordsStatusEffectInstance flamSeedEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.FLAMESEED.get(), 101, 0, false, + EffectRegistry.FLAMESEED, 101, 0, false, false, true); flamSeedEffect.setSourceEntity(sourceEntity); flamSeedEffect.setAdditionalData(additionalData); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java index 21f75233..7463e14d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java @@ -3,11 +3,11 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -28,7 +28,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.contained_remnant_description").formatted(Formatting.GRAY)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java index f729f66e..85a9024f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java @@ -2,11 +2,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; @@ -26,7 +26,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.remnant_description").formatted(Formatting.GRAY, Formatting.ITALIC)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index 8258c5f8..bf5faed4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -1,10 +1,10 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -52,7 +52,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style LEGENDARY = HelperMethods.getStyle("legendary"); Style TEXT = HelperMethods.getStyle("text"); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index 40804699..cd697e76 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -1,10 +1,10 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -49,7 +49,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RUNIC = HelperMethods.getStyle("runic"); Style TEXT = HelperMethods.getStyle("text"); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index f03d303a..af6bb53b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,6 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Style; @@ -181,7 +181,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style RUNIC = HelperMethods.getStyle("runic"); Style TEXT = HelperMethods.getStyle("text"); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java index c89f0b97..34a4837f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java @@ -1,13 +1,12 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; @@ -27,7 +26,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.runic_tablet.tooltip").formatted(Formatting.GRAY, Formatting.ITALIC)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java index 49b57a6d..41e705fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java @@ -1,17 +1,16 @@ package net.sweenus.simplyswords.item; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.Registries; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.text.TextColor; import net.minecraft.util.Identifier; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; @@ -48,7 +47,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { int rgbPrometheum = 0x3A6A56; @@ -61,7 +60,7 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, else if (this.getName(itemStack).getString().contains("Carmot")) tooltip.add(Text.translatable("item.simplyswords.compat.mythicmetals.looting").setStyle(CARMOT)); - super.appendTooltip(itemStack,world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index 7b7d1df1..69350056 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -74,8 +75,7 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext - tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { SimplySwordsAPI.appendTooltipGemSocketLogic(itemStack, tooltip); } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java index 00a1060e..bdd2ce2b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -105,7 +106,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -123,6 +124,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleArcane")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index 3b5c6dab..cb6b0652 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -5,6 +5,7 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -54,7 +55,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -69,6 +70,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip7").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip8").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java index 5bf7b837..fd623765 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -74,7 +75,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -97,6 +98,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip11").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip12").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index c6f00643..4a84fc96 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -52,7 +53,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); @@ -68,6 +69,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, } } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index dd7d6577..d629f27e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -123,14 +124,14 @@ public Text getName(ItemStack stack) { } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style CORRUPTED_LIGHT = HelperMethods.getStyle("corrupted_light"); Style CORRUPTED_ABILITY = HelperMethods.getStyle("corrupted_ability"); Style TEXT = HelperMethods.getStyle("corrupted_text"); MutableText ability_icon = Text.empty().append("\uA996 "); - MutableText type = TextAPI.Styles.getGradient(Text.translatable("item.eldritch_end.corrupted_item.type"), 1, 6043781, 9326287, 1.0F); + MutableText types = TextAPI.Styles.getGradient(Text.translatable("item.eldritch_end.corrupted_item.type"), 1, 6043781, 9326287, 1.0F); - tooltip.add(Text.literal("\uA999 ").append(type.fillStyle(type.getStyle().withUnderline(true)))); + tooltip.add(Text.literal("\uA999 ").append(types.fillStyle(types.getStyle().withUnderline(true)))); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip1").setStyle(CORRUPTED_ABILITY)); tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip2").setStyle(TEXT)); @@ -150,6 +151,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("\uA999 ").append(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip12").setStyle(HelperMethods.getStyle("corrupted")))); tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip13").setStyle(HelperMethods.getStyle("corrupted"))); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index 09697cda..4d3a2b65 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.particle.SimpleParticleType; import net.minecraft.server.world.ServerWorld; @@ -151,7 +152,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -173,6 +174,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip10").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip11").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index 568f4cbc..ddf40e1a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -94,7 +95,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -115,6 +116,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index f583fc8e..1eab202c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.BlockStateParticleEffect; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; @@ -127,7 +128,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -144,6 +145,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip7").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip8").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java index 77cb81a1..e145c27f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -86,7 +87,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style TEXT = HelperMethods.getStyle("text"); Style ABILITY = HelperMethods.getStyle("ability"); @@ -94,6 +95,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip1").setStyle(ABILITY)); tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip2").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index 587468b2..dbd15342 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -5,6 +5,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -100,7 +101,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -126,6 +127,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 8eda0c54..648d939c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -232,7 +233,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -250,6 +251,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index cb39861d..ce73bc1f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -92,7 +93,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -110,6 +111,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java index eaef0fc5..bba26eb3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -88,7 +89,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -103,6 +104,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip5").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip6").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index 1ea42ac7..27b068ff 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -93,7 +94,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -112,6 +113,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip8").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip9").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip10").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java index 5db5a6cb..5a39e2ea 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Style; @@ -150,7 +151,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -168,6 +169,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java index 8bc29f84..9756688b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Style; @@ -181,7 +182,7 @@ public void inventoryTick(ItemStack stack, World world, Entity user, int slot, b } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -214,6 +215,6 @@ else if (itemStack.isOf(ItemsRegistry.WAKING_LICHBLADE.get())) tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index 9a71e00d..5ea422ac 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -151,7 +152,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -169,6 +170,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index 9ca8c388..7ecba318 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvents; @@ -105,7 +106,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -123,6 +124,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip8").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip9").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index 62850c4b..93c55018 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -89,7 +90,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -114,6 +115,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.compat.scaleArcane")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index 7013847a..3e8095d4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -77,7 +78,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -95,6 +96,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip8").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip9").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 1754a704..79f8abc1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.particle.SimpleParticleType; import net.minecraft.predicate.entity.EntityPredicates; @@ -131,7 +132,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -148,6 +149,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip6").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip7", roar_timer_max / 20).setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index 5ffda3cb..73c39206 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -121,7 +122,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -130,6 +131,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip2").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip3").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java index ebdd6f77..5c2bcf0b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -138,7 +139,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -156,6 +157,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index 761f7939..d4a48fb2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.BlockStateParticleEffect; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; @@ -118,7 +119,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -137,6 +138,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip9").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip10").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index bc42caf3..49e96eed 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -60,7 +61,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -70,6 +71,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java index 96efd905..9bf324c2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java @@ -9,6 +9,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Style; @@ -110,7 +111,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -124,6 +125,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip4").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip5").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index 940a96f1..03f8bed6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Style; @@ -125,7 +126,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -144,6 +145,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip8").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip9").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java index aab9d506..820d5998 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -103,7 +104,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -118,6 +119,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip5").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip6").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index 0cd41633..c24c3397 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -103,7 +104,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -123,6 +124,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip7").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip8").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index cb161e17..359fe21f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -131,7 +132,7 @@ public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -154,6 +155,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index 73e3b604..f507605c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -85,7 +86,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -100,6 +101,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip5").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip6").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java index f76e8251..cde86f54 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Style; @@ -145,7 +146,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -170,6 +171,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleLightning")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java index 5b7abbc6..3a7c8851 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -97,7 +98,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -111,6 +112,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip4").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip5").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java index 00dfe53e..93195fd5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -92,7 +93,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -111,6 +112,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleHealing")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index d1fed780..7209bc61 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -61,7 +62,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -71,6 +72,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 690d5708..85c4bb5c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffect; @@ -8,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; @@ -152,7 +152,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -178,6 +178,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java index e08e102d..adb07efb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -107,7 +108,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -127,6 +128,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleLightning")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java index 32f8b325..e87b2ae9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -150,7 +151,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -172,6 +173,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index 4157f6ae..1d425351 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -4,6 +4,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -91,7 +92,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -106,6 +107,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip6").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip7").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java index 8e185d79..bf6e6f92 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -62,7 +63,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -80,6 +81,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip8").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip9", Config.getFloat("waxweaveCooldown", "UniqueEffects", ConfigDefaultValues.waxweaveCooldown) / 20).setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 646831e9..8636efe4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -70,7 +71,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -86,6 +87,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip6").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip7").setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index b4fe32a7..deba0ef8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Style; @@ -86,7 +87,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style ABILITY = HelperMethods.getStyle("ability"); Style TEXT = HelperMethods.getStyle("text"); @@ -108,6 +109,6 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip5").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip6", Config.getFloat("flickerFuryDuration", "UniqueEffects", ConfigDefaultValues.flickerFuryDuration) / 20).setStyle(TEXT)); - super.appendTooltip(itemStack, world, tooltip, tooltipContext); + super.appendTooltip(itemStack, tooltipContext, tooltip, type); } } diff --git a/common/src/main/resources/simplyswords-common.mixins.json b/common/src/main/resources/simplyswords-common.mixins.json index cd6b58d4..5f7fd0d2 100644 --- a/common/src/main/resources/simplyswords-common.mixins.json +++ b/common/src/main/resources/simplyswords-common.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "net.sweenus.simplyswords.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "client": [ ], "mixins": [ diff --git a/fabric/src/main/resources/simplyswords.mixins.json b/fabric/src/main/resources/simplyswords.mixins.json index b39ffe55..fd0bc594 100644 --- a/fabric/src/main/resources/simplyswords.mixins.json +++ b/fabric/src/main/resources/simplyswords.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "net.sweenus.simplyswords.fabric.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "plugin": "net.sweenus.simplyswords.fabric.mixin.SimplySwordsMixinPlugin", "client": [ ], diff --git a/forge/src/main/resources/simplyswords.mixins.json b/forge/src/main/resources/simplyswords.mixins.json index 9364a78e..763a103c 100644 --- a/forge/src/main/resources/simplyswords.mixins.json +++ b/forge/src/main/resources/simplyswords.mixins.json @@ -2,7 +2,7 @@ "required": false, "minVersion": "0.8", "package": "net.sweenus.simplyswords.forge.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_21", "client": [ ], "mixins": [ From 7f3108808dfb8fc3882a7c0d403716ffaf72050f Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Sat, 21 Sep 2024 00:08:33 +1000 Subject: [PATCH 04/37] 1.21 Port - Continue suffering, I mean porting to 1.21 --- .../entity/BattleStandardEntity.java | 48 +- .../simplyswords/item/GobberEndSwordItem.java | 7 +- .../item/GobberNetherSwordItem.java | 5 +- .../simplyswords/item/ModToolMaterial.java | 11 +- .../simplyswords/item/RunicSwordItem.java | 4 +- .../item/SimplySwordsNetheriteSwordItem.java | 6 +- .../item/SimplySwordsSwordItem.java | 6 +- .../simplyswords/item/UniqueSwordItem.java | 4 +- .../item/custom/ArcanethystSwordItem.java | 4 +- .../item/custom/BrambleSwordItem.java | 4 +- .../item/custom/CaelestisSwordItem.java | 4 +- .../item/custom/DormantRelicSwordItem.java | 4 +- .../item/custom/DreadtideSwordItem.java | 4 +- .../item/custom/EmberIreSwordItem.java | 4 +- .../item/custom/EmberlashSwordItem.java | 4 +- .../item/custom/EnigmaSwordItem.java | 4 +- .../item/custom/FireSwordItem.java | 4 +- .../item/custom/FlamewindSwordItem.java | 4 +- .../item/custom/FrostfallSwordItem.java | 4 +- .../item/custom/HarbingerSwordItem.java | 4 +- .../item/custom/HasteSwordItem.java | 4 +- .../item/custom/HiveheartSwordItem.java | 4 +- .../item/custom/IcewhisperSwordItem.java | 4 +- .../item/custom/LichbladeSwordItem.java | 4 +- .../item/custom/LivyatanSwordItem.java | 4 +- .../item/custom/MagibladeSwordItem.java | 4 +- .../item/custom/MagiscytheSwordItem.java | 4 +- .../item/custom/MagispearSwordItem.java | 4 +- .../item/custom/MoltenEdgeSwordItem.java | 4 +- .../item/custom/PlagueSwordItem.java | 4 +- .../item/custom/RendSwordItem.java | 4 +- .../item/custom/RibboncleaverSwordItem.java | 4 +- .../item/custom/RighteousRelicSwordItem.java | 4 +- .../item/custom/ShadowstingSwordItem.java | 4 +- .../item/custom/SoulPyreSwordItem.java | 4 +- .../item/custom/SoulSwordItem.java | 4 +- .../item/custom/StarsEdgeSwordItem.java | 4 +- .../item/custom/StealSwordItem.java | 4 +- .../item/custom/StormSwordItem.java | 4 +- .../item/custom/StormbringerSwordItem.java | 4 +- .../item/custom/StormsEdgeSwordItem.java | 4 +- .../item/custom/SunfireSwordItem.java | 4 +- .../item/custom/TaintedRelicSwordItem.java | 4 +- .../item/custom/TempestSwordItem.java | 17 +- .../item/custom/ThunderbrandSwordItem.java | 4 +- .../item/custom/VolcanicFurySwordItem.java | 4 +- .../item/custom/WatcherSwordItem.java | 4 +- .../item/custom/WaxweaverSwordItem.java | 4 +- .../item/custom/WhisperwindSwordItem.java | 4 +- .../item/custom/WickpiercerSwordItem.java | 4 +- .../simplyswords/registry/ItemsRegistry.java | 1314 +++++++++-------- .../simplyswords/util/HelperMethods.java | 1 - .../forge/compat/GobberCompat.java | 11 +- .../events/SimplySwordsClientEvents.java | 45 - 54 files changed, 818 insertions(+), 825 deletions(-) delete mode 100644 forge/src/main/java/net/sweenus/simplyswords/forge/events/SimplySwordsClientEvents.java diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java index fa9ddff0..f02b8c45 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java @@ -9,7 +9,6 @@ import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.mob.MobEntity; @@ -17,6 +16,7 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.registry.Registries; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.minecraft.util.math.Box; import net.minecraft.world.World; @@ -96,7 +96,7 @@ public void baseTick() { if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "fire") > 0) { abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "fire"); } - //AOE Aura + // AOE Aura if (this.age % 10 == 0) { Box box = new Box(this.getX() + radius, this.getY() + (float) radius / 3, this.getZ() + radius, this.getX() - radius, this.getY() - (float) radius / 3, this.getZ() - radius); @@ -105,21 +105,20 @@ public void baseTick() { && le != ownerEntity && !(le instanceof BattleStandardEntity) && !(le instanceof BattleStandardDarkEntity)) { - //Sunfire negative effects + // Sunfire negative effects switch (standardType) { case "sunfire" -> { le.damage(ownerEntity.getDamageSources().magic(), abilityDamage); le.setOnFireFor(1); le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 1), this); } - //Nullification negative effects + // Nullification negative effects case "nullification" -> { for (StatusEffectInstance statusEffectInstance : le.getStatusEffects()) { StatusEffect statusEffect = statusEffectInstance.getEffectType().value(); - if (statusEffect != null && statusEffect.isBeneficial()) { - le.removeStatusEffect(statusEffectInstance.getEffectType()); - break; - } + if (statusEffect != null && statusEffect.isBeneficial()) { + le.removeStatusEffect(statusEffectInstance.getEffectType()); + break; } } } @@ -129,9 +128,8 @@ public void baseTick() { le.damage(ownerEntity.getDamageSources().magic(), abilityDamage); if (negativeEffect != null) { try { - le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(Identifier.of(negativeEffect)), - 20, negativeEffectAmplifier), this); + RegistryEntry negativeEffectEntry = Registries.STATUS_EFFECT.getEntry(Identifier.of(negativeEffect)).orElseThrow(); + le.addStatusEffect(new StatusEffectInstance(negativeEffectEntry, 20, negativeEffectAmplifier), this); } catch (Exception e) { errorCatch(negativeEffect); this.setHealth(this.getHealth() - 1000); @@ -139,9 +137,8 @@ public void baseTick() { } if (negativeEffectSecondary != null) { try { - le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(Identifier.of(negativeEffectSecondary)), - 20, negativeEffectAmplifier), this); + RegistryEntry negativeEffectSecondaryEntry = Registries.STATUS_EFFECT.getEntry(Identifier.of(negativeEffectSecondary)).orElseThrow(); + le.addStatusEffect(new StatusEffectInstance(negativeEffectSecondaryEntry, 20, negativeEffectAmplifier), this); } catch (Exception e) { errorCatch(negativeEffectSecondary); this.setHealth(this.getHealth() - 1000); @@ -155,6 +152,7 @@ public void baseTick() { 0, 0, 0); } + //Landing effects if (this.getHealth() > this.getMaxHealth() - 2 && this.isOnGround()) { HelperMethods.spawnParticle(getWorld(), ParticleTypes.LAVA, @@ -189,12 +187,14 @@ public void baseTick() { le.heal(abilityHeal); le.addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, 90, 1), this); } - //Nullification positive effects +// Nullification positive effects case "nullification" -> { - for (StatusEffectInstance statusEffect : le.getStatusEffects()) { - if (statusEffect != null && !statusEffect.getEffectType().isBeneficial() - && !Objects.equals(statusEffect.getEffectType(), EffectRegistry.BATTLE_FATIGUE.get())) { - le.removeStatusEffect(statusEffect.getEffectType()); + for (StatusEffectInstance statusEffectInstance : le.getStatusEffects()) { + RegistryEntry effectEntry = statusEffectInstance.getEffectType(); + StatusEffect effect = effectEntry.value(); + if (effect != null && !effect.isBeneficial() + && !Objects.equals(effectEntry, EffectRegistry.BATTLE_FATIGUE.get())) { + le.removeStatusEffect(effectEntry); break; } } @@ -205,9 +205,8 @@ public void baseTick() { le.heal(abilityHeal); if (positiveEffect != null) { try { - le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(Identifier.of(positiveEffect)), - 85, positiveEffectAmplifier), this); + RegistryEntry positiveEffectEntry = Registries.STATUS_EFFECT.getEntry(Identifier.of(positiveEffect)).orElseThrow(); + le.addStatusEffect(new StatusEffectInstance(positiveEffectEntry, 85, positiveEffectAmplifier), this); } catch (Exception e) { errorCatch(positiveEffect); this.setHealth(this.getHealth() - 1000); @@ -215,9 +214,8 @@ public void baseTick() { } if (positiveEffectSecondary != null) { try { - le.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.get(Identifier.of(positiveEffectSecondary)), - 85, positiveEffectAmplifier), this); + RegistryEntry positiveEffectSecondaryEntry = Registries.STATUS_EFFECT.getEntry(Identifier.of(positiveEffectSecondary)).orElseThrow(); + le.addStatusEffect(new StatusEffectInstance(positiveEffectSecondaryEntry, 85, positiveEffectAmplifier), this); } catch (Exception e) { errorCatch(positiveEffectSecondary); this.setHealth(this.getHealth() - 1000); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index b147a8d5..c0365cf5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -1,13 +1,11 @@ package net.sweenus.simplyswords.item; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; @@ -19,9 +17,8 @@ public class GobberEndSwordItem extends SwordItem { String[] repairIngredient; - public GobberEndSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, String... repairIngredient) { - super(toolMaterial, attackDamage, attackSpeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS)); + public GobberEndSwordItem(ToolMaterial toolMaterial, String... repairIngredient) { + super(toolMaterial, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS)); this.repairIngredient = repairIngredient; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java index 53f31115..da2c6a08 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberNetherSwordItem.java @@ -16,9 +16,8 @@ public class GobberNetherSwordItem extends SwordItem { String[] repairIngredient; - public GobberNetherSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, String... repairIngredient) { - super(toolMaterial, attackDamage, attackSpeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS)); + public GobberNetherSwordItem(ToolMaterial toolMaterial, String... repairIngredient) { + super(toolMaterial, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS)); this.repairIngredient = repairIngredient; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/ModToolMaterial.java b/common/src/main/java/net/sweenus/simplyswords/item/ModToolMaterial.java index 969cc490..68dfb483 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/ModToolMaterial.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/ModToolMaterial.java @@ -1,18 +1,19 @@ package net.sweenus.simplyswords.item; import com.google.common.base.Suppliers; -import net.fabricmc.yarn.constants.MiningLevels; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.item.ToolMaterial; import net.minecraft.recipe.Ingredient; +import net.minecraft.registry.tag.TagKey; import net.sweenus.simplyswords.registry.ItemsRegistry; import java.util.function.Supplier; public enum ModToolMaterial implements ToolMaterial { - RUNIC(MiningLevels.NETHERITE, 2031, 9.0f, 5.0f, 25, Items.NETHERITE_INGOT), - UNIQUE(MiningLevels.NETHERITE, 3270, 15.0f, 5.0f, 30, ItemsRegistry.RUNIC_TABLET.get()), + RUNIC(4, 2031, 9.0f, 5.0f, 25, Items.NETHERITE_INGOT), + UNIQUE(4, 3270, 15.0f, 5.0f, 30, ItemsRegistry.RUNIC_TABLET.get()), //MYTHIC METALS ADAMANTITE(4, 1024, 7.0F, 5F, 16, Items.DIAMOND), @@ -80,8 +81,8 @@ public float getAttackDamage() { } @Override - public int getMiningLevel() { - return this.miningLevel; + public TagKey getInverseTag() { + return null; } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index af6bb53b..1d3eaaab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -29,8 +29,8 @@ public class RunicSwordItem extends SwordItem { public static int maxUseTime; - public RunicSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings.fireproof()); + public RunicSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings.fireproof()); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java index 36f6ce4d..71911821 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsNetheriteSwordItem.java @@ -7,7 +7,6 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; import java.util.ArrayList; @@ -17,9 +16,8 @@ public class SimplySwordsNetheriteSwordItem extends SwordItem { String[] repairIngredient; - public SimplySwordsNetheriteSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, String... repairIngredient) { - super(toolMaterial, attackDamage, attackSpeed, - new Settings().arch$tab(SimplySwords.SIMPLYSWORDS).fireproof()); + public SimplySwordsNetheriteSwordItem(ToolMaterial toolMaterial, Settings settings, String... repairIngredient) { + super(toolMaterial, settings); this.repairIngredient = repairIngredient; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java index 41e705fc..1aed6ad2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/SimplySwordsSwordItem.java @@ -11,7 +11,6 @@ import net.minecraft.text.Text; import net.minecraft.text.TextColor; import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; import java.util.ArrayList; @@ -21,9 +20,8 @@ public class SimplySwordsSwordItem extends SwordItem { String[] repairIngredient; - public SimplySwordsSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, String... repairIngredient) { - super(toolMaterial, attackDamage, attackSpeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS)); + public SimplySwordsSwordItem(ToolMaterial toolMaterial, Settings settings, String... repairIngredient) { + super(toolMaterial, settings); this.repairIngredient = repairIngredient; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index 69350056..db388fa6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -23,8 +23,8 @@ public abstract class UniqueSwordItem extends SwordItem { String iRarity = "UNIQUE"; - public UniqueSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings.fireproof()); + public UniqueSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings.fireproof()); } public abstract int getMaxUseTime(ItemStack stack); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java index bdd2ce2b..82015069 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java @@ -26,8 +26,8 @@ import java.util.List; public class ArcanethystSwordItem extends UniqueSwordItem { - public ArcanethystSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public ArcanethystSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index cb6b0652..0f558871 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -19,8 +19,8 @@ import java.util.List; public class BrambleSwordItem extends UniqueSwordItem { - public BrambleSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public BrambleSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java index fd623765..d16af978 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java @@ -24,8 +24,8 @@ import java.util.List; public class CaelestisSwordItem extends UniqueSwordItem { - public CaelestisSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public CaelestisSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index 4a84fc96..28c236e1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -23,8 +23,8 @@ public class DormantRelicSwordItem extends UniqueSwordItem { private static int stepMod = 0; - public DormantRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public DormantRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index d629f27e..d9515c40 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -32,8 +32,8 @@ import java.util.List; public class DreadtideSwordItem extends UniqueSwordItem { - public DreadtideSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public DreadtideSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index 4d3a2b65..d1d4a397 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -31,8 +31,8 @@ import java.util.Optional; public class EmberIreSwordItem extends UniqueSwordItem { - public EmberIreSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public EmberIreSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index ddf40e1a..b84d5282 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -25,8 +25,8 @@ import java.util.List; public class EmberlashSwordItem extends UniqueSwordItem { - public EmberlashSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public EmberlashSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index 1eab202c..624307a1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -34,8 +34,8 @@ import java.util.List; public class EnigmaSwordItem extends UniqueSwordItem { - public EnigmaSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public EnigmaSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java index e145c27f..2cc0035f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java @@ -21,8 +21,8 @@ import java.util.List; public class FireSwordItem extends UniqueSwordItem { - public FireSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public FireSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index dbd15342..b8e42704 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -28,8 +28,8 @@ import java.util.List; public class FlamewindSwordItem extends UniqueSwordItem { - public FlamewindSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public FlamewindSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 648d939c..94fb234b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -30,8 +30,8 @@ import java.util.List; public class FrostfallSwordItem extends UniqueSwordItem { - public FrostfallSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public FrostfallSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index ce73bc1f..072cfd96 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -34,8 +34,8 @@ public class HarbingerSwordItem extends UniqueSwordItem { int skillCooldown = (int) Config.getFloat("abyssalStandardCooldown", "UniqueEffects", ConfigDefaultValues.abyssalStandardCooldown); int abilityChance = (int) Config.getFloat("abyssalStandardChance", "UniqueEffects", ConfigDefaultValues.abyssalStandardChance); - public HarbingerSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public HarbingerSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java index bba26eb3..46aef902 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java @@ -24,8 +24,8 @@ import java.util.List; public class HasteSwordItem extends UniqueSwordItem { - public HasteSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public HasteSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index 27b068ff..a0db0983 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -28,8 +28,8 @@ import java.util.List; public class HiveheartSwordItem extends UniqueSwordItem { - public HiveheartSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public HiveheartSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java index 5a39e2ea..79c1563b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java @@ -28,8 +28,8 @@ import java.util.List; public class IcewhisperSwordItem extends UniqueSwordItem { - public IcewhisperSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public IcewhisperSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java index 9756688b..51d2684d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java @@ -29,8 +29,8 @@ import java.util.List; public class LichbladeSwordItem extends UniqueSwordItem { - public LichbladeSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public LichbladeSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index 5ea422ac..72c1d0ea 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -30,8 +30,8 @@ import java.util.List; public class LivyatanSwordItem extends UniqueSwordItem { - public LivyatanSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public LivyatanSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index 7ecba318..016a4f32 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -24,8 +24,8 @@ import java.util.List; public class MagibladeSwordItem extends UniqueSwordItem { - public MagibladeSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public MagibladeSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index 93c55018..b07eb7a5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -26,8 +26,8 @@ import java.util.Random; public class MagiscytheSwordItem extends UniqueSwordItem { - public MagiscytheSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public MagiscytheSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index 3e8095d4..1203a5ad 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -25,8 +25,8 @@ import java.util.Random; public class MagispearSwordItem extends UniqueSwordItem { - public MagispearSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public MagispearSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 79f8abc1..5d5f8c9a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -29,8 +29,8 @@ import java.util.List; public class MoltenEdgeSwordItem extends UniqueSwordItem { - public MoltenEdgeSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public MoltenEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index 73c39206..93ed6eca 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -19,8 +19,8 @@ import java.util.List; public class PlagueSwordItem extends UniqueSwordItem { - public PlagueSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public PlagueSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java index 5c2bcf0b..ea904d39 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java @@ -26,8 +26,8 @@ import java.util.List; public class RendSwordItem extends UniqueSwordItem { - public RendSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public RendSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index d4a48fb2..1486b297 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -29,8 +29,8 @@ import java.util.List; public class RibboncleaverSwordItem extends UniqueSwordItem { - public RibboncleaverSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public RibboncleaverSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index 49e96eed..e1a06243 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -26,8 +26,8 @@ public class RighteousRelicSwordItem extends UniqueSwordItem { private static int stepMod = 0; int abilityChance = (int) Config.getFloat("righteousStandardChance", "UniqueEffects", ConfigDefaultValues.righteousStandardChance); - public RighteousRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public RighteousRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java index 9bf324c2..b47bdf59 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java @@ -34,8 +34,8 @@ public class ShadowstingSwordItem extends UniqueSwordItem { int blindDuration = (int) Config.getFloat("shadowmistBlindDuration", "UniqueEffects", ConfigDefaultValues.shadowmistBlindDuration); int radius = (int) Config.getFloat("shadowmistRadius", "UniqueEffects", ConfigDefaultValues.shadowmistRadius); - public ShadowstingSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public ShadowstingSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index 03f8bed6..3b843284 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -26,8 +26,8 @@ import java.util.List; public class SoulPyreSwordItem extends UniqueSwordItem { - public SoulPyreSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public SoulPyreSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java index 820d5998..80e7e1ff 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java @@ -26,8 +26,8 @@ import java.util.List; public class SoulSwordItem extends UniqueSwordItem { - public SoulSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public SoulSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index c24c3397..1a665c10 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -25,8 +25,8 @@ import java.util.List; public class StarsEdgeSwordItem extends UniqueSwordItem { - public StarsEdgeSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public StarsEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index 359fe21f..5553e56a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -28,8 +28,8 @@ import java.util.List; public class StealSwordItem extends UniqueSwordItem { - public StealSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public StealSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index f507605c..142486c1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -25,8 +25,8 @@ import java.util.List; public class StormSwordItem extends UniqueSwordItem { - public StormSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public StormSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java index cde86f54..2d781188 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java @@ -38,8 +38,8 @@ public class StormbringerSwordItem extends UniqueSwordItem { boolean parrySuccess; int parrySuccession; - public StormbringerSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public StormbringerSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java index 3a7c8851..df1075f1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java @@ -32,8 +32,8 @@ public class StormsEdgeSwordItem extends UniqueSwordItem { int skillCooldown = (int) Config.getFloat("stormJoltCooldown", "UniqueEffects", ConfigDefaultValues.stormJoltCooldown); int chargeChance = (int) Config.getFloat("stormJoltChance", "UniqueEffects", ConfigDefaultValues.stormJoltChance); - public StormsEdgeSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public StormsEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java index 93195fd5..684acc1b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java @@ -34,8 +34,8 @@ public class SunfireSwordItem extends UniqueSwordItem { int skillCooldown = (int) Config.getFloat("righteousStandardCooldown", "UniqueEffects", ConfigDefaultValues.righteousStandardCooldown); int abilityChance = (int) Config.getFloat("righteousStandardChance", "UniqueEffects", ConfigDefaultValues.righteousStandardChance); - public SunfireSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public SunfireSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index 7209bc61..eabd82e2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -27,8 +27,8 @@ public class TaintedRelicSwordItem extends UniqueSwordItem { private static int stepMod = 0; int abilityChance = (int) Config.getFloat("abyssalStandardChance", "UniqueEffects", ConfigDefaultValues.abyssalStandardChance); - public TaintedRelicSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public TaintedRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 85c4bb5c..282b82db 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.registry.registries.RegistrySupplier; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffect; @@ -31,8 +32,8 @@ import java.util.List; public class TempestSwordItem extends UniqueSwordItem { - public TempestSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public TempestSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override @@ -52,7 +53,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack HelperMethods.playHitSounds(attacker, target); SoundEvent soundSelect; ParticleEffect particleSelect; - StatusEffect statusSelect; + RegistrySupplier statusSelect; List sounds = new ArrayList<>(); sounds.add(SoundRegistry.SPELL_FIRE.get()); @@ -66,11 +67,11 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack particles.add(ParticleTypes.SMOKE); particles.add(ParticleTypes.CLOUD); - List status = new ArrayList<>(); - status.add(EffectRegistry.FIRE_VORTEX.get()); - status.add(EffectRegistry.FROST_VORTEX.get()); - status.add(EffectRegistry.FIRE_VORTEX.get()); - status.add(EffectRegistry.FROST_VORTEX.get()); + List> status = new ArrayList<>(); + status.add(EffectRegistry.FIRE_VORTEX); + status.add(EffectRegistry.FROST_VORTEX); + status.add(EffectRegistry.FIRE_VORTEX); + status.add(EffectRegistry.FROST_VORTEX); int random = attacker.getRandom().nextInt(3); soundSelect = sounds.get(random); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java index adb07efb..2cd9f43c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java @@ -26,8 +26,8 @@ import java.util.List; public class ThunderbrandSwordItem extends UniqueSwordItem { - public ThunderbrandSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public ThunderbrandSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java index e87b2ae9..4c4f1f32 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java @@ -29,8 +29,8 @@ import java.util.List; public class VolcanicFurySwordItem extends UniqueSwordItem { - public VolcanicFurySwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public VolcanicFurySwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } private static int stepMod = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index 1d425351..c798e52f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -22,8 +22,8 @@ import java.util.List; public class WatcherSwordItem extends UniqueSwordItem { - public WatcherSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public WatcherSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java index bf6e6f92..56559997 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java @@ -21,8 +21,8 @@ import java.util.List; public class WaxweaverSwordItem extends UniqueSwordItem { - public WaxweaverSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public WaxweaverSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 8636efe4..0d6ccebf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -28,8 +28,8 @@ public class WhisperwindSwordItem extends UniqueSwordItem { int skillCooldown = (int) Config.getFloat("fatalFlickerCooldown", "UniqueEffects", ConfigDefaultValues.fatalFlickerCooldown); int abilityChance = (int) Config.getFloat("fatalFlickerChance", "UniqueEffects", ConfigDefaultValues.fatalFlickerChance); - public WhisperwindSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public WhisperwindSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index deba0ef8..5d632594 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -25,8 +25,8 @@ import java.util.List; public class WickpiercerSwordItem extends UniqueSwordItem { - public WickpiercerSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, Settings settings) { - super(toolMaterial, attackDamage, attackSpeed, settings); + public WickpiercerSwordItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java index e958d007..f9267ad7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java @@ -21,7 +21,6 @@ public class ItemsRegistry { static float netherite_modifier = Config.getFloat("netherite_damageModifier", "WeaponAttributes", ConfigDefaultValues.netherite_damageModifier); static float runic_modifier = Config.getFloat("runic_damageModifier", "WeaponAttributes", ConfigDefaultValues.runic_damageModifier); - static float longsword_positive_modifier = Config.getFloat("longsword_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_positiveDamageModifier); static float twinblade_positive_modifier = Config.getFloat("twinblade_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_positiveDamageModifier); static float rapier_positive_modifier = Config.getFloat("rapier_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_positiveDamageModifier); @@ -111,8 +110,6 @@ public class ItemsRegistry { static float magiblade_attackspeed = Config.getFloat("magiblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.magiblade_attackSpeed); static float caelestis_attackspeed = Config.getFloat("caelestis_attackSpeed", "WeaponAttributes", ConfigDefaultValues.caelestis_attackSpeed); - - static float brimstone_damage_modifier = Config.getFloat("brimstone_damageModifier", "WeaponAttributes", ConfigDefaultValues.brimstone_damageModifier); static float thewatcher_damage_modifier = Config.getFloat("thewatcher_damageModifier", "WeaponAttributes", ConfigDefaultValues.thewatcher_damageModifier); static float stormsedge_damage_modifier = Config.getFloat("stormsedge_damageModifier", "WeaponAttributes", ConfigDefaultValues.stormsedge_damageModifier); @@ -154,10 +151,8 @@ public class ItemsRegistry { static float magiblade_damage_modifier = Config.getFloat("magiblade_damageModifier", "WeaponAttributes", ConfigDefaultValues.magiblade_damageModifier); static float caelestis_damage_modifier = Config.getFloat("caelestis_damageModifier", "WeaponAttributes", ConfigDefaultValues.caelestis_damageModifier); - public static final DeferredRegister ITEM = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.ITEM); - public static final RegistrySupplier RUNIC_TABLET = ITEM.register("runic_tablet", RunicTabletItem::new); public static final RegistrySupplier RUNEFUSED_GEM = ITEM.register("runefused_gem", RunefusedGemItem::new); public static final RegistrySupplier NETHERFUSED_GEM = ITEM.register("netherfused_gem", NetherfusedGemItem::new); @@ -168,795 +163,852 @@ public class ItemsRegistry { public static final RegistrySupplier IRON_LONGSWORD = ITEM.register("iron_longsword", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + longsword_positive_modifier - longsword_negative_modifier), - longsword_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_TWINBLADE = ITEM.register( "iron_twinblade", () -> + public static final RegistrySupplier IRON_TWINBLADE = ITEM.register("iron_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + twinblade_positive_modifier - twinblade_negative_modifier), - twinblade_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_RAPIER = ITEM.register( "iron_rapier", () -> + public static final RegistrySupplier IRON_RAPIER = ITEM.register("iron_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + rapier_positive_modifier - rapier_negative_modifier), - rapier_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_KATANA = ITEM.register( "iron_katana", () -> + public static final RegistrySupplier IRON_KATANA = ITEM.register("iron_katana", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + katana_positive_modifier - katana_negative_modifier), - katana_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_SAI = ITEM.register( "iron_sai", () -> + public static final RegistrySupplier IRON_SAI = ITEM.register("iron_sai", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + sai_positive_modifier - sai_negative_modifier), - sai_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_SPEAR = ITEM.register( "iron_spear", () -> + public static final RegistrySupplier IRON_SPEAR = ITEM.register("iron_spear", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + spear_positive_modifier - spear_negative_modifier), - spear_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_GLAIVE = ITEM.register( "iron_glaive", () -> + public static final RegistrySupplier IRON_GLAIVE = ITEM.register("iron_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + glaive_positive_modifier - glaive_negative_modifier), - glaive_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_WARGLAIVE = ITEM.register( "iron_warglaive", () -> + public static final RegistrySupplier IRON_WARGLAIVE = ITEM.register("iron_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + warglaive_positive_modifier - warglaive_negative_modifier), - warglaive_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_CUTLASS = ITEM.register( "iron_cutlass", () -> + public static final RegistrySupplier IRON_CUTLASS = ITEM.register("iron_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + cutlass_positive_modifier - cutlass_negative_modifier), - cutlass_attackspeed, - "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_CLAYMORE = ITEM.register( "iron_claymore", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:iron_ingot")); + + public static final RegistrySupplier IRON_CLAYMORE = ITEM.register("iron_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + claymore_positive_modifier - claymore_negative_modifier), - claymore_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_GREATHAMMER = ITEM.register( "iron_greathammer", () -> + public static final RegistrySupplier IRON_GREATHAMMER = ITEM.register("iron_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + greathammer_positive_modifier - greathammer_negative_modifier), - greathammer_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_GREATAXE = ITEM.register( "iron_greataxe", () -> + public static final RegistrySupplier IRON_GREATAXE = ITEM.register("iron_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + greataxe_positive_modifier - greataxe_negative_modifier), - greataxe_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_CHAKRAM = ITEM.register( "iron_chakram", () -> + public static final RegistrySupplier IRON_CHAKRAM = ITEM.register("iron_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + chakram_positive_modifier - chakram_negative_modifier), - chakram_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_SCYTHE = ITEM.register( "iron_scythe", () -> + public static final RegistrySupplier IRON_SCYTHE = ITEM.register("iron_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + scythe_positive_modifier - scythe_negative_modifier), - scythe_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:iron_ingot")); - public static final RegistrySupplier IRON_HALBERD = ITEM.register( "iron_halberd", () -> + public static final RegistrySupplier IRON_HALBERD = ITEM.register("iron_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, - (int) (iron_modifier + halberd_positive_modifier - halberd_negative_modifier), - halberd_attackspeed, - "minecraft:iron_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, + (int) (iron_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:iron_ingot")); - //GOLD - public static final RegistrySupplier GOLD_LONGSWORD = ITEM.register( "gold_longsword", () -> + // GOLD + public static final RegistrySupplier GOLD_LONGSWORD = ITEM.register("gold_longsword", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + longsword_positive_modifier - longsword_negative_modifier), - longsword_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_TWINBLADE = ITEM.register( "gold_twinblade", () -> + public static final RegistrySupplier GOLD_TWINBLADE = ITEM.register("gold_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + twinblade_positive_modifier - twinblade_negative_modifier), - twinblade_attackspeed, - "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_RAPIER = ITEM.register( "gold_rapier", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:gold_ingot")); + + public static final RegistrySupplier GOLD_RAPIER = ITEM.register("gold_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + rapier_positive_modifier - rapier_negative_modifier), - rapier_attackspeed, - "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_KATANA = ITEM.register( "gold_katana", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:gold_ingot")); + + public static final RegistrySupplier GOLD_KATANA = ITEM.register("gold_katana", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + katana_positive_modifier - katana_negative_modifier), - katana_attackspeed, - "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_SAI = ITEM.register( "gold_sai", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:gold_ingot")); + + public static final RegistrySupplier GOLD_SAI = ITEM.register("gold_sai", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + sai_positive_modifier - sai_negative_modifier), - sai_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_SPEAR = ITEM.register( "gold_spear", () -> + public static final RegistrySupplier GOLD_SPEAR = ITEM.register("gold_spear", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + spear_positive_modifier - spear_negative_modifier), - spear_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_GLAIVE = ITEM.register( "gold_glaive", () -> + public static final RegistrySupplier GOLD_GLAIVE = ITEM.register("gold_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + glaive_positive_modifier - glaive_negative_modifier), - glaive_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_WARGLAIVE = ITEM.register( "gold_warglaive", () -> + public static final RegistrySupplier GOLD_WARGLAIVE = ITEM.register("gold_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + warglaive_positive_modifier - warglaive_negative_modifier), - warglaive_attackspeed, - "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_CUTLASS = ITEM.register( "gold_cutlass", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:gold_ingot")); + + public static final RegistrySupplier GOLD_CUTLASS = ITEM.register("gold_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + cutlass_positive_modifier - cutlass_negative_modifier), - cutlass_attackspeed, - "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_CLAYMORE = ITEM.register( "gold_claymore", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:gold_ingot")); + + public static final RegistrySupplier GOLD_CLAYMORE = ITEM.register("gold_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + claymore_positive_modifier - claymore_negative_modifier), - claymore_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_GREATHAMMER = ITEM.register( "gold_greathammer", () -> + public static final RegistrySupplier GOLD_GREATHAMMER = ITEM.register("gold_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + greathammer_positive_modifier - greathammer_negative_modifier), - greathammer_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_GREATAXE = ITEM.register( "gold_greataxe", () -> + public static final RegistrySupplier GOLD_GREATAXE = ITEM.register("gold_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + greataxe_positive_modifier - greataxe_negative_modifier), - greataxe_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_CHAKRAM = ITEM.register( "gold_chakram", () -> + public static final RegistrySupplier GOLD_CHAKRAM = ITEM.register("gold_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + chakram_positive_modifier - chakram_negative_modifier), - chakram_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_SCYTHE = ITEM.register( "gold_scythe", () -> + public static final RegistrySupplier GOLD_SCYTHE = ITEM.register("gold_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + scythe_positive_modifier - scythe_negative_modifier), - scythe_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:gold_ingot")); - public static final RegistrySupplier GOLD_HALBERD = ITEM.register( "gold_halberd", () -> + public static final RegistrySupplier GOLD_HALBERD = ITEM.register("gold_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, - (int) (gold_modifier + halberd_positive_modifier - halberd_negative_modifier), - halberd_attackspeed, - "minecraft:gold_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, + (int) (gold_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:gold_ingot")); - //DIAMOND - public static final RegistrySupplier DIAMOND_LONGSWORD = ITEM.register( "diamond_longsword", () -> + // DIAMOND + public static final RegistrySupplier DIAMOND_LONGSWORD = ITEM.register("diamond_longsword", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + longsword_positive_modifier - longsword_negative_modifier), - longsword_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_TWINBLADE = ITEM.register( "diamond_twinblade", () -> + public static final RegistrySupplier DIAMOND_TWINBLADE = ITEM.register("diamond_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + twinblade_positive_modifier - twinblade_negative_modifier), - twinblade_attackspeed, - "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_RAPIER = ITEM.register( "diamond_rapier", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:diamond")); + + public static final RegistrySupplier DIAMOND_RAPIER = ITEM.register("diamond_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + rapier_positive_modifier - rapier_negative_modifier), - rapier_attackspeed, - "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_KATANA = ITEM.register( "diamond_katana", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:diamond")); + + public static final RegistrySupplier DIAMOND_KATANA = ITEM.register("diamond_katana", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + katana_positive_modifier - katana_negative_modifier), - katana_attackspeed, - "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_SAI = ITEM.register( "diamond_sai", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:diamond")); + + public static final RegistrySupplier DIAMOND_SAI = ITEM.register("diamond_sai", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + sai_positive_modifier - sai_negative_modifier), - sai_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_SPEAR = ITEM.register( "diamond_spear", () -> + public static final RegistrySupplier DIAMOND_SPEAR = ITEM.register("diamond_spear", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + spear_positive_modifier - spear_negative_modifier), - spear_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_GLAIVE = ITEM.register( "diamond_glaive", () -> + public static final RegistrySupplier DIAMOND_GLAIVE = ITEM.register("diamond_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + glaive_positive_modifier - glaive_negative_modifier), - glaive_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_WARGLAIVE = ITEM.register( "diamond_warglaive", () -> + public static final RegistrySupplier DIAMOND_WARGLAIVE = ITEM.register("diamond_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + warglaive_positive_modifier - warglaive_negative_modifier), - warglaive_attackspeed, - "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_CUTLASS = ITEM.register( "diamond_cutlass", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:diamond")); + + public static final RegistrySupplier DIAMOND_CUTLASS = ITEM.register("diamond_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + cutlass_positive_modifier - cutlass_negative_modifier), - cutlass_attackspeed, - "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_CLAYMORE = ITEM.register( "diamond_claymore", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:diamond")); + + public static final RegistrySupplier DIAMOND_CLAYMORE = ITEM.register("diamond_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + claymore_positive_modifier - claymore_negative_modifier), - claymore_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_GREATHAMMER = ITEM.register( "diamond_greathammer", () -> + public static final RegistrySupplier DIAMOND_GREATHAMMER = ITEM.register("diamond_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + greathammer_positive_modifier - greathammer_negative_modifier), - greathammer_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_GREATAXE = ITEM.register( "diamond_greataxe", () -> + public static final RegistrySupplier DIAMOND_GREATAXE = ITEM.register("diamond_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + greataxe_positive_modifier - greataxe_negative_modifier), - greataxe_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_CHAKRAM = ITEM.register( "diamond_chakram", () -> + public static final RegistrySupplier DIAMOND_CHAKRAM = ITEM.register("diamond_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + chakram_positive_modifier - chakram_negative_modifier), - chakram_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_SCYTHE = ITEM.register( "diamond_scythe", () -> + public static final RegistrySupplier DIAMOND_SCYTHE = ITEM.register("diamond_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + scythe_positive_modifier - scythe_negative_modifier), - scythe_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:diamond")); - public static final RegistrySupplier DIAMOND_HALBERD = ITEM.register( "diamond_halberd", () -> + public static final RegistrySupplier DIAMOND_HALBERD = ITEM.register("diamond_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, - (int) (diamond_modifier + halberd_positive_modifier - halberd_negative_modifier), - halberd_attackspeed, - "minecraft:diamond")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, + (int) (diamond_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:diamond")); - //NETHERITE - - public static final RegistrySupplier NETHERITE_LONGSWORD = ITEM.register( "netherite_longsword", () -> - new SimplySwordsNetheriteSwordItem(ToolMaterials.NETHERITE, - (int) (netherite_modifier + longsword_positive_modifier - longsword_negative_modifier), - longsword_attackspeed, - "minecraft:netherite_ingot")); + // NETHERITE + public static final RegistrySupplier NETHERITE_LONGSWORD = ITEM.register("netherite_longsword", () -> + new SimplySwordsNetheriteSwordItem( + ToolMaterials.NETHERITE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_TWINBLADE = ITEM.register( "netherite_twinblade", () -> + public static final RegistrySupplier NETHERITE_TWINBLADE = ITEM.register("netherite_twinblade", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + twinblade_positive_modifier - twinblade_negative_modifier), - twinblade_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_RAPIER = ITEM.register( "netherite_rapier", () -> + public static final RegistrySupplier NETHERITE_RAPIER = ITEM.register("netherite_rapier", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (iron_modifier + rapier_positive_modifier - rapier_negative_modifier), - rapier_attackspeed, - "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_KATANA = ITEM.register( "netherite_katana", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:netherite_ingot")); + + public static final RegistrySupplier NETHERITE_KATANA = ITEM.register("netherite_katana", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + katana_positive_modifier - katana_negative_modifier), - katana_attackspeed, - "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_SAI = ITEM.register( "netherite_sai", () -> + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:netherite_ingot")); + + public static final RegistrySupplier NETHERITE_SAI = ITEM.register("netherite_sai", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + sai_positive_modifier - sai_negative_modifier), - sai_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_SPEAR = ITEM.register( "netherite_spear", () -> + public static final RegistrySupplier NETHERITE_SPEAR = ITEM.register("netherite_spear", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + spear_positive_modifier - spear_negative_modifier), - spear_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_GLAIVE = ITEM.register( "netherite_glaive", () -> + public static final RegistrySupplier NETHERITE_GLAIVE = ITEM.register("netherite_glaive", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + glaive_positive_modifier - glaive_negative_modifier), - glaive_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_WARGLAIVE = ITEM.register( "netherite_warglaive", () -> + public static final RegistrySupplier NETHERITE_WARGLAIVE = ITEM.register("netherite_warglaive", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + warglaive_positive_modifier - warglaive_negative_modifier), - warglaive_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_CUTLASS = ITEM.register( "netherite_cutlass", () -> + public static final RegistrySupplier NETHERITE_CUTLASS = ITEM.register("netherite_cutlass", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + cutlass_positive_modifier - cutlass_negative_modifier), - cutlass_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_CLAYMORE = ITEM.register( "netherite_claymore", () -> + public static final RegistrySupplier NETHERITE_CLAYMORE = ITEM.register("netherite_claymore", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + claymore_positive_modifier - claymore_negative_modifier), - claymore_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_GREATHAMMER = ITEM.register( "netherite_greathammer", () -> + public static final RegistrySupplier NETHERITE_GREATHAMMER = ITEM.register("netherite_greathammer", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + greathammer_positive_modifier - greathammer_negative_modifier), - greathammer_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_GREATAXE = ITEM.register( "netherite_greataxe", () -> + public static final RegistrySupplier NETHERITE_GREATAXE = ITEM.register("netherite_greataxe", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + greataxe_positive_modifier - greataxe_negative_modifier), - greataxe_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_CHAKRAM = ITEM.register( "netherite_chakram", () -> + public static final RegistrySupplier NETHERITE_CHAKRAM = ITEM.register("netherite_chakram", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + chakram_positive_modifier - chakram_negative_modifier), - chakram_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_SCYTHE = ITEM.register( "netherite_scythe", () -> + public static final RegistrySupplier NETHERITE_SCYTHE = ITEM.register("netherite_scythe", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + scythe_positive_modifier - scythe_negative_modifier), - scythe_attackspeed, - "minecraft:netherite_ingot")); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:netherite_ingot")); - public static final RegistrySupplier NETHERITE_HALBERD = ITEM.register( "netherite_halberd", () -> + public static final RegistrySupplier NETHERITE_HALBERD = ITEM.register("netherite_halberd", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, - (int) (netherite_modifier + halberd_positive_modifier - halberd_negative_modifier), - halberd_attackspeed, - "minecraft:netherite_ingot")); - - - //RUNIC - public static final RegistrySupplier RUNIC_LONGSWORD = ITEM.register( "runic_longsword", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + longsword_positive_modifier - longsword_negative_modifier), - longsword_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_TWINBLADE = ITEM.register( "runic_twinblade", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + twinblade_positive_modifier - twinblade_negative_modifier), - twinblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_RAPIER = ITEM.register( "runic_rapier", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + rapier_positive_modifier - rapier_negative_modifier), - rapier_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_KATANA = ITEM.register( "runic_katana", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + katana_positive_modifier - katana_negative_modifier), - katana_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_SAI = ITEM.register( "runic_sai", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + sai_positive_modifier - sai_negative_modifier), - sai_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_SPEAR = ITEM.register( "runic_spear", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + spear_positive_modifier - spear_negative_modifier), - spear_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_GLAIVE = ITEM.register( "runic_glaive", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + glaive_positive_modifier - glaive_negative_modifier), - glaive_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_CUTLASS = ITEM.register( "runic_cutlass", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + cutlass_positive_modifier - cutlass_negative_modifier), - cutlass_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - public static final RegistrySupplier RUNIC_CLAYMORE = ITEM.register( "runic_claymore", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + claymore_positive_modifier - claymore_negative_modifier), - claymore_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_CHAKRAM = ITEM.register( "runic_chakram", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + chakram_positive_modifier - chakram_negative_modifier), - chakram_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_GREATAXE = ITEM.register( "runic_greataxe", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + greataxe_positive_modifier - greataxe_negative_modifier), - greataxe_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_GREATHAMMER = ITEM.register( "runic_greathammer", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + greathammer_positive_modifier - greathammer_negative_modifier), - greathammer_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - public static final RegistrySupplier RUNIC_WARGLAIVE = ITEM.register( "runic_warglaive", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + warglaive_positive_modifier - warglaive_negative_modifier), - warglaive_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_SCYTHE = ITEM.register( "runic_scythe", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + scythe_positive_modifier - scythe_negative_modifier), - scythe_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - public static final RegistrySupplier RUNIC_HALBERD = ITEM.register( "runic_halberd", () -> - new RunicSwordItem(ModToolMaterial.RUNIC, - (int) (runic_modifier + halberd_positive_modifier - halberd_negative_modifier), - halberd_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE))); - - //SPECIAL - public static final RegistrySupplier BRIMSTONE_CLAYMORE = ITEM.register( "brimstone_claymore", () -> - new FireSwordItem(ModToolMaterial.UNIQUE, - (int) (brimstone_damage_modifier), - brimstone_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WATCHER_CLAYMORE = ITEM.register( "watcher_claymore", () -> - new WatcherSwordItem(ModToolMaterial.UNIQUE, - (int) (thewatcher_damage_modifier), - thewatcher_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier STORMS_EDGE = ITEM.register( "storms_edge", () -> - new StormsEdgeSwordItem(ModToolMaterial.UNIQUE, - (int) (stormsedge_damage_modifier), - stormsedge_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier STORMBRINGER = ITEM.register( "stormbringer", () -> - new StormbringerSwordItem(ModToolMaterial.UNIQUE, - (int) (stormbringer_damage_modifier), - stormbringer_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SWORD_ON_A_STICK = ITEM.register( "sword_on_a_stick", () -> - new SwordItem(ToolMaterials.WOOD, - (int) (swordonastick_damage_modifier), - swordonastick_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC))); - - public static final RegistrySupplier BRAMBLETHORN = ITEM.register( "bramblethorn", () -> - new BrambleSwordItem(ModToolMaterial.UNIQUE, - (int) (bramblethorn_damage_modifier), - bramblethorn_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WATCHING_WARGLAIVE = ITEM.register( "watching_warglaive", () -> - new WatcherSwordItem(ModToolMaterial.UNIQUE, - (int) (watchingwarglaive_damage_modifier), - watchingwarglaive_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - public static final RegistrySupplier TOXIC_LONGSWORD = ITEM.register( "toxic_longsword", () -> - new PlagueSwordItem(ModToolMaterial.UNIQUE, - (int) (longswordofplague_damage_modifier), - longswordofplague_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier EMBERBLADE = ITEM.register( "emberblade", () -> - new EmberIreSwordItem(ModToolMaterial.UNIQUE, - (int) (emberblade_damage_modifier), - emberblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier HEARTHFLAME = ITEM.register( "hearthflame", () -> - new VolcanicFurySwordItem(ModToolMaterial.UNIQUE, - (int) (hearthflame_damage_modifier), - hearthflame_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SOULKEEPER = ITEM.register( "soulkeeper", () -> - new SoulSwordItem(ModToolMaterial.UNIQUE, - (int) (soulkeeper_damage_modifier), - soulkeeper_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier TWISTED_BLADE = ITEM.register( "twisted_blade", () -> - new HasteSwordItem(ModToolMaterial.UNIQUE, - (int) (twistedblade_damage_modifier), - twistedblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, + (int) (netherite_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:netherite_ingot")); + + // RUNIC + public static final RegistrySupplier RUNIC_LONGSWORD = ITEM.register("runic_longsword", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)))); + + public static final RegistrySupplier RUNIC_TWINBLADE = ITEM.register("runic_twinblade", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)))); + + public static final RegistrySupplier RUNIC_RAPIER = ITEM.register("runic_rapier", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)))); + + public static final RegistrySupplier RUNIC_KATANA = ITEM.register("runic_katana", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)))); + + public static final RegistrySupplier RUNIC_SAI = ITEM.register("runic_sai", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)))); + + public static final RegistrySupplier RUNIC_SPEAR = ITEM.register("runic_spear", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)))); + + public static final RegistrySupplier RUNIC_GLAIVE = ITEM.register("runic_glaive", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)))); + + public static final RegistrySupplier RUNIC_WARGLAIVE = ITEM.register("runic_warglaive", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)))); + + public static final RegistrySupplier RUNIC_CUTLASS = ITEM.register("runic_cutlass", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)))); + + public static final RegistrySupplier RUNIC_CLAYMORE = ITEM.register("runic_claymore", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)))); + + public static final RegistrySupplier RUNIC_CHAKRAM = ITEM.register("runic_chakram", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)))); + + public static final RegistrySupplier RUNIC_GREATAXE = ITEM.register("runic_greataxe", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)))); + + public static final RegistrySupplier RUNIC_GREATHAMMER = ITEM.register("runic_greathammer", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)))); + + public static final RegistrySupplier RUNIC_SCYTHE = ITEM.register("runic_scythe", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)))); + + public static final RegistrySupplier RUNIC_HALBERD = ITEM.register("runic_halberd", () -> + new RunicSwordItem( + ModToolMaterial.RUNIC, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, + (int) (runic_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)))); + + // SPECIAL + public static final RegistrySupplier BRIMSTONE_CLAYMORE = ITEM.register("brimstone_claymore", () -> + new FireSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) brimstone_damage_modifier, brimstone_attackspeed)))); + + public static final RegistrySupplier WATCHER_CLAYMORE = ITEM.register("watcher_claymore", () -> + new WatcherSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) thewatcher_damage_modifier, thewatcher_attackspeed)))); + + public static final RegistrySupplier STORMS_EDGE = ITEM.register("storms_edge", () -> + new StormsEdgeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) stormsedge_damage_modifier, stormsedge_attackspeed)))); + + public static final RegistrySupplier STORMBRINGER = ITEM.register("stormbringer", () -> + new StormbringerSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) stormbringer_damage_modifier, stormbringer_attackspeed)))); + + public static final RegistrySupplier SWORD_ON_A_STICK = ITEM.register("sword_on_a_stick", () -> + new SwordItem( + ToolMaterials.WOOD, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) + .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.WOOD, + (int) swordonastick_damage_modifier, swordonastick_attackspeed)))); + + public static final RegistrySupplier BRAMBLETHORN = ITEM.register("bramblethorn", () -> + new BrambleSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) bramblethorn_damage_modifier, bramblethorn_attackspeed)))); + + public static final RegistrySupplier WATCHING_WARGLAIVE = ITEM.register("watching_warglaive", () -> + new WatcherSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) watchingwarglaive_damage_modifier, watchingwarglaive_attackspeed)))); + + public static final RegistrySupplier TOXIC_LONGSWORD = ITEM.register("toxic_longsword", () -> + new PlagueSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) longswordofplague_damage_modifier, longswordofplague_attackspeed)))); + + public static final RegistrySupplier EMBERBLADE = ITEM.register("emberblade", () -> + new EmberIreSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) emberblade_damage_modifier, emberblade_attackspeed)))); + + public static final RegistrySupplier HEARTHFLAME = ITEM.register("hearthflame", () -> + new VolcanicFurySwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) hearthflame_damage_modifier, hearthflame_attackspeed)))); + + public static final RegistrySupplier SOULKEEPER = ITEM.register("soulkeeper", () -> + new SoulSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) soulkeeper_damage_modifier, soulkeeper_attackspeed)))); + + public static final RegistrySupplier TWISTED_BLADE = ITEM.register("twisted_blade", () -> + new HasteSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) twistedblade_damage_modifier, twistedblade_attackspeed)))); public static final RegistrySupplier SOULSTEALER = ITEM.register("soulstealer", () -> - new StealSwordItem(ModToolMaterial.UNIQUE, - (int) (soulstealer_damage_modifier), - soulstealer_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SOULRENDER = ITEM.register( "soulrender", () -> - new RendSwordItem(ModToolMaterial.UNIQUE, - (int) (soulrender_damage_modifier), - soulrender_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SOULPYRE = ITEM.register( "soulpyre", () -> - new SoulPyreSwordItem(ModToolMaterial.UNIQUE, - (int) (soulpyre_damage_modifier), - soulpyre_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier FROSTFALL = ITEM.register( "frostfall", () -> - new FrostfallSwordItem(ModToolMaterial.UNIQUE, - (int) (frostfall_damage_modifier), - frostfall_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier MOLTEN_EDGE = ITEM.register( "molten_edge", () -> - new MoltenEdgeSwordItem(ModToolMaterial.UNIQUE, - (int) (moltenedge_damage_modifier), - moltenedge_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier LIVYATAN = ITEM.register( "livyatan", () -> - new LivyatanSwordItem(ModToolMaterial.UNIQUE, - (int) (livyatan_damage_modifier), - livyatan_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier ICEWHISPER = ITEM.register( "icewhisper", () -> - new IcewhisperSwordItem(ModToolMaterial.UNIQUE, - (int) (icewhisper_damage_modifier), - icewhisper_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - public static final RegistrySupplier ARCANETHYST = ITEM.register( "arcanethyst", () -> - new ArcanethystSwordItem(ModToolMaterial.UNIQUE, - (int) (arcanethyst_damage_modifier), - arcanethyst_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier THUNDERBRAND = ITEM.register( "thunderbrand", () -> - new ThunderbrandSwordItem(ModToolMaterial.UNIQUE, - (int) (thunderbrand_damage_modifier), - thunderbrand_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - /* - public static final RegistrySupplier THE_DISPATCHER = ITEM.register( "the_dispatcher", () -> - new RendSwordItem(ModToolMaterial.UNIQUE, - (int) (thedispatcher_damage_modifier), - thedispatcher_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - */ - - public static final RegistrySupplier MJOLNIR = ITEM.register( "mjolnir", () -> - new StormSwordItem(ModToolMaterial.UNIQUE, - (int) (mjolnir_damage_modifier), - mjolnir_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SLUMBERING_LICHBLADE = ITEM.register( "slumbering_lichblade", () -> - new LichbladeSwordItem(ModToolMaterial.UNIQUE, - (int) (lichblade_damage_modifier), - lichblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WAKING_LICHBLADE = ITEM.register( "waking_lichblade", () -> - new LichbladeSwordItem(ModToolMaterial.UNIQUE, - (int) (lichblade_damage_modifier), - lichblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier AWAKENED_LICHBLADE = ITEM.register( "awakened_lichblade", () -> - new LichbladeSwordItem(ModToolMaterial.UNIQUE, - (int) (lichblade_damage_modifier), - lichblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SHADOWSTING = ITEM.register( "shadowsting", () -> - new ShadowstingSwordItem(ModToolMaterial.UNIQUE, - (int) (shadowsting_damage_modifier), - shadowsting_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier DORMANT_RELIC = ITEM.register( "dormant_relic", () -> - new DormantRelicSwordItem(ModToolMaterial.UNIQUE, - (int) (sunfire_damage_modifier), - sunfire_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier RIGHTEOUS_RELIC = ITEM.register( "righteous_relic", () -> - new RighteousRelicSwordItem(ModToolMaterial.UNIQUE, - (int) (sunfire_damage_modifier), - sunfire_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier TAINTED_RELIC = ITEM.register( "tainted_relic", () -> - new TaintedRelicSwordItem(ModToolMaterial.UNIQUE, - (int) (harbinger_damage_modifier), - harbinger_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier SUNFIRE = ITEM.register( "sunfire", () -> - new SunfireSwordItem(ModToolMaterial.UNIQUE, - (int) (sunfire_damage_modifier), - sunfire_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier HARBINGER = ITEM.register( "harbinger", () -> - new HarbingerSwordItem(ModToolMaterial.UNIQUE, - (int) (harbinger_damage_modifier), - harbinger_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WHISPERWIND = ITEM.register( "whisperwind", () -> - new WhisperwindSwordItem(ModToolMaterial.UNIQUE, - (int) (whisperwind_damage_modifier), - whisperwind_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - -/* - public static final RegistrySupplier STORMSCALE = ITEM.register( "stormscale", () -> - new TaintedRelicSwordItem(ModToolMaterial.UNIQUE, - (int) (harbinger_damage_modifier), - harbinger_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - -*/ - - public static final RegistrySupplier EMBERLASH = ITEM.register( "emberlash", () -> - new EmberlashSwordItem(ModToolMaterial.UNIQUE, - (int) (emberlash_damage_modifier), - emberlash_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WAXWEAVER = ITEM.register( "waxweaver", () -> - new WaxweaverSwordItem(ModToolMaterial.UNIQUE, - (int) (waxweaver_damage_modifier), - waxweaver_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier HIVEHEART = ITEM.register( "hiveheart", () -> - new HiveheartSwordItem(ModToolMaterial.UNIQUE, - (int) (hiveheart_damage_modifier), - hiveheart_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier STARS_EDGE = ITEM.register( "stars_edge", () -> - new StarsEdgeSwordItem(ModToolMaterial.UNIQUE, - (int) (starsedge_damage_modifier), - starsedge_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier WICKPIERCER = ITEM.register( "wickpiercer", () -> - new WickpiercerSwordItem(ModToolMaterial.UNIQUE, - (int) (wickpiercer_damage_modifier), - wickpiercer_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier TEMPEST = ITEM.register( "tempest", () -> - new TempestSwordItem(ModToolMaterial.UNIQUE, - (int) (tempest_damage_modifier), - tempest_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier FLAMEWIND = ITEM.register( "flamewind", () -> - new FlamewindSwordItem(ModToolMaterial.UNIQUE, - (int) (flamewind_damage_modifier), - flamewind_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier RIBBONCLEAVER = ITEM.register( "ribboncleaver", () -> - new RibboncleaverSwordItem(ModToolMaterial.UNIQUE, - (int) (ribboncleaver_damage_modifier), - ribboncleaver_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); + new StealSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) soulstealer_damage_modifier, soulstealer_attackspeed)))); + + public static final RegistrySupplier SOULRENDER = ITEM.register("soulrender", () -> + new RendSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) soulrender_damage_modifier, soulrender_attackspeed)))); + + public static final RegistrySupplier SOULPYRE = ITEM.register("soulpyre", () -> + new SoulPyreSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) soulpyre_damage_modifier, soulpyre_attackspeed)))); + + public static final RegistrySupplier FROSTFALL = ITEM.register("frostfall", () -> + new FrostfallSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) frostfall_damage_modifier, frostfall_attackspeed)))); + + public static final RegistrySupplier MOLTEN_EDGE = ITEM.register("molten_edge", () -> + new MoltenEdgeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) moltenedge_damage_modifier, moltenedge_attackspeed)))); + + public static final RegistrySupplier LIVYATAN = ITEM.register("livyatan", () -> + new LivyatanSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) livyatan_damage_modifier, livyatan_attackspeed)))); + + public static final RegistrySupplier ICEWHISPER = ITEM.register("icewhisper", () -> + new IcewhisperSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) icewhisper_damage_modifier, icewhisper_attackspeed)))); + + public static final RegistrySupplier ARCANETHYST = ITEM.register("arcanethyst", () -> + new ArcanethystSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) arcanethyst_damage_modifier, arcanethyst_attackspeed)))); + + public static final RegistrySupplier THUNDERBRAND = ITEM.register("thunderbrand", () -> + new ThunderbrandSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) thunderbrand_damage_modifier, thunderbrand_attackspeed)))); + + public static final RegistrySupplier MJOLNIR = ITEM.register("mjolnir", () -> + new StormSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) mjolnir_damage_modifier, mjolnir_attackspeed)))); + + public static final RegistrySupplier SLUMBERING_LICHBLADE = ITEM.register("slumbering_lichblade", () -> + new LichbladeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) lichblade_damage_modifier, lichblade_attackspeed)))); + + public static final RegistrySupplier WAKING_LICHBLADE = ITEM.register("waking_lichblade", () -> + new LichbladeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) lichblade_damage_modifier, lichblade_attackspeed)))); + + public static final RegistrySupplier AWAKENED_LICHBLADE = ITEM.register("awakened_lichblade", () -> + new LichbladeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) lichblade_damage_modifier, lichblade_attackspeed)))); + + public static final RegistrySupplier SHADOWSTING = ITEM.register("shadowsting", () -> + new ShadowstingSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) shadowsting_damage_modifier, shadowsting_attackspeed)))); + + public static final RegistrySupplier DORMANT_RELIC = ITEM.register("dormant_relic", () -> + new DormantRelicSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) sunfire_damage_modifier, sunfire_attackspeed)))); + + public static final RegistrySupplier RIGHTEOUS_RELIC = ITEM.register("righteous_relic", () -> + new RighteousRelicSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) sunfire_damage_modifier, sunfire_attackspeed)))); + + public static final RegistrySupplier TAINTED_RELIC = ITEM.register("tainted_relic", () -> + new TaintedRelicSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) harbinger_damage_modifier, harbinger_attackspeed)))); + + public static final RegistrySupplier SUNFIRE = ITEM.register("sunfire", () -> + new SunfireSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) sunfire_damage_modifier, sunfire_attackspeed)))); + + public static final RegistrySupplier HARBINGER = ITEM.register("harbinger", () -> + new HarbingerSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) harbinger_damage_modifier, harbinger_attackspeed)))); + + public static final RegistrySupplier WHISPERWIND = ITEM.register("whisperwind", () -> + new WhisperwindSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) whisperwind_damage_modifier, whisperwind_attackspeed)))); + + public static final RegistrySupplier EMBERLASH = ITEM.register("emberlash", () -> + new EmberlashSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) emberlash_damage_modifier, emberlash_attackspeed)))); + + public static final RegistrySupplier WAXWEAVER = ITEM.register("waxweaver", () -> + new WaxweaverSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) waxweaver_damage_modifier, waxweaver_attackspeed)))); + + public static final RegistrySupplier HIVEHEART = ITEM.register("hiveheart", () -> + new HiveheartSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) hiveheart_damage_modifier, hiveheart_attackspeed)))); + + public static final RegistrySupplier STARS_EDGE = ITEM.register("stars_edge", () -> + new StarsEdgeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) starsedge_damage_modifier, starsedge_attackspeed)))); + + public static final RegistrySupplier WICKPIERCER = ITEM.register("wickpiercer", () -> + new WickpiercerSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) wickpiercer_damage_modifier, wickpiercer_attackspeed)))); + + public static final RegistrySupplier TEMPEST = ITEM.register("tempest", () -> + new TempestSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) tempest_damage_modifier, tempest_attackspeed)))); + + public static final RegistrySupplier FLAMEWIND = ITEM.register("flamewind", () -> + new FlamewindSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) flamewind_damage_modifier, flamewind_attackspeed)))); + + public static final RegistrySupplier RIBBONCLEAVER = ITEM.register("ribboncleaver", () -> + new RibboncleaverSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) ribboncleaver_damage_modifier, ribboncleaver_attackspeed)))); public static final RegistrySupplier DECAYING_RELIC = ITEM.register( "decaying_relic", () -> - new DormantRelicSwordItem(ModToolMaterial.UNIQUE, - (int) (magiscythe_damage_modifier), - magiscythe_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier MAGISCYTHE = ITEM.register( "magiscythe", () -> - new MagiscytheSwordItem(ModToolMaterial.UNIQUE, - (int) (magiscythe_damage_modifier), - magiscythe_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier ENIGMA = ITEM.register( "enigma", () -> - new EnigmaSwordItem(ModToolMaterial.UNIQUE, - (int) (enigma_damage_modifier), - enigma_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier MAGISPEAR = ITEM.register( "magispear", () -> - new MagispearSwordItem(ModToolMaterial.UNIQUE, - (int) (magispear_damage_modifier), - magispear_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier MAGIBLADE = ITEM.register( "magiblade", () -> - new MagibladeSwordItem(ModToolMaterial.UNIQUE, - (int) (magiblade_damage_modifier), - magiblade_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - public static final RegistrySupplier CAELESTIS = ITEM.register( "caelestis", () -> - new CaelestisSwordItem(ModToolMaterial.UNIQUE, - (int) (caelestis_damage_modifier), - caelestis_attackspeed, - new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof())); - - -} + new DormantRelicSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) magiscythe_damage_modifier, magiscythe_attackspeed)))); + + public static final RegistrySupplier MAGISCYTHE = ITEM.register("magiscythe", () -> + new MagiscytheSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) magiscythe_damage_modifier, magiscythe_attackspeed)))); + + public static final RegistrySupplier ENIGMA = ITEM.register("enigma", () -> + new EnigmaSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) enigma_damage_modifier, enigma_attackspeed)))); + + public static final RegistrySupplier MAGISPEAR = ITEM.register("magispear", () -> + new MagispearSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) magispear_damage_modifier, magispear_attackspeed)))); + + public static final RegistrySupplier MAGIBLADE = ITEM.register("magiblade", () -> + new MagibladeSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) magiblade_damage_modifier, magiblade_attackspeed)))); + + public static final RegistrySupplier CAELESTIS = ITEM.register("caelestis", () -> + new CaelestisSwordItem( + ModToolMaterial.UNIQUE, + new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, + (int) caelestis_damage_modifier, caelestis_attackspeed)))); +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index ce780ba5..dcaaac7f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -16,7 +16,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.ProjectileUtil; import net.minecraft.item.ItemStack; -import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.SimpleParticleType; import net.minecraft.registry.entry.RegistryEntry; diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java index f26dad75..58cd559f 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java @@ -1,14 +1,6 @@ package net.sweenus.simplyswords.forge.compat; -import net.minecraft.item.Item; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.item.GobberEndSwordItem; -import net.sweenus.simplyswords.item.GobberNetherSwordItem; -import net.sweenus.simplyswords.item.ModToolMaterial; -import net.sweenus.simplyswords.item.SimplySwordsSwordItem; public class GobberCompat { @@ -81,6 +73,7 @@ public class GobberCompat { static int gobber_end_modifier = (int) SimplySwords.weaponAttributesConfig.gobberEnd_damageModifier; //GOBBER + /* 1.21 public static final DeferredRegister GOBBER_ITEM = DeferredRegister.create(ForgeRegistries.ITEMS, SimplySwords.MOD_ID); @@ -272,4 +265,6 @@ public static void registerModItems() { SimplySwords.LOGGER.info("Registering Gobber compat Items for " + SimplySwords.MOD_ID); } + */ + } diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/events/SimplySwordsClientEvents.java b/forge/src/main/java/net/sweenus/simplyswords/forge/events/SimplySwordsClientEvents.java deleted file mode 100644 index c1a58d20..00000000 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/events/SimplySwordsClientEvents.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.sweenus.simplyswords.forge.events; - -import net.minecraft.resource.ResourcePackProfile; -import net.minecraft.resource.ResourcePackSource; -import net.minecraft.resource.ResourceType; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.event.AddPackFindersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.forgespi.locating.IModFile; -import net.minecraftforge.resource.PathPackResources; -import net.sweenus.simplyswords.SimplySwords; - -@Mod.EventBusSubscriber(modid = SimplySwords.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) -public class SimplySwordsClientEvents { - @SubscribeEvent - public static void simplySwords$addPackFinder(AddPackFindersEvent event) { - if (event.getPackType() == ResourceType.CLIENT_RESOURCES) { - //simplySwords$registerResourcePack(event, new Identifier("simplyswords", "classic"), false); - } - } - - //Deprecated - resourcepack no longer bundled - private static void simplySwords$registerResourcePack(AddPackFindersEvent event, Identifier identifier, boolean alwaysEnabled) { - event.addRepositorySource((profileAdder -> { - IModFile file = ModList.get().getModFileById(identifier.getNamespace()).getFile(); - try (PathPackResources packResources = new PathPackResources( - identifier.toString(), - true, - file.findResource("resourcepacks/" + identifier.getPath()))) { - profileAdder.accept(ResourcePackProfile.create( - identifier.toString(), - Text.of(identifier.getNamespace()+"/"+identifier.getPath()), - alwaysEnabled, - a -> packResources, - ResourceType.CLIENT_RESOURCES, - ResourcePackProfile.InsertionPosition.TOP, - ResourcePackSource.BUILTIN)); - } catch (NullPointerException e) {e.printStackTrace();} - })); - } -} \ No newline at end of file From c161b1e546e7157c64dd319d9a3953e82b97d6e4 Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Sat, 21 Sep 2024 18:32:01 +1000 Subject: [PATCH 05/37] 1.21 Port - Continue suffering, I mean porting to 1.21 --- .../sweenus/simplyswords/compat/GobberCompat.java | 12 +++--------- .../eldritch_end/EldritchEndCompatRegistry.java | 8 +++----- .../simplyswords/effect/MagislamEffect.java | 2 +- .../item/custom/DreadtideSwordItem.java | 2 +- .../item/custom/EmberIreSwordItem.java | 4 ++-- .../item/custom/EmberlashSwordItem.java | 7 ++++--- .../simplyswords/item/custom/FireSwordItem.java | 2 +- .../item/custom/HiveheartSwordItem.java | 2 +- .../item/custom/MagibladeSwordItem.java | 2 +- .../item/custom/MagiscytheSwordItem.java | 2 +- .../item/custom/MagispearSwordItem.java | 2 +- .../item/custom/StarsEdgeSwordItem.java | 4 ++-- .../item/custom/TempestSwordItem.java | 2 +- .../item/custom/WickpiercerSwordItem.java | 2 +- .../sweenus/simplyswords/util/HelperMethods.java | 15 +++++++-------- .../simplyswords/fabric/SimplySwordsFabric.java | 5 ++--- .../fabric/compat/MythicMetalsCompat.java | 11 +++-------- .../fabric/item/PrometheumSwordItem.java | 11 ----------- 18 files changed, 35 insertions(+), 60 deletions(-) delete mode 100644 fabric/src/main/java/net/sweenus/simplyswords/fabric/item/PrometheumSwordItem.java diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java index 10b914d1..844b262a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java @@ -1,16 +1,7 @@ package net.sweenus.simplyswords.compat; -import net.minecraft.item.Item; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.item.GobberEndSwordItem; -import net.sweenus.simplyswords.item.GobberNetherSwordItem; -import net.sweenus.simplyswords.item.ModToolMaterial; -import net.sweenus.simplyswords.item.SimplySwordsSwordItem; public class GobberCompat { @@ -81,6 +72,7 @@ public class GobberCompat { static int gobber_modifier = (int) Config.getFloat("gobber_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobber_damageModifier); static int gobber_nether_modifier = (int) Config.getFloat("gobberNether_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobberNether_damageModifier); static int gobber_end_modifier = (int) Config.getFloat("gobberEnd_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobberEnd_damageModifier); + /* 1.21 //GOBBER @@ -278,4 +270,6 @@ public static void registerModItems() { SimplySwords.LOGGER.info("Registering Gobber compat Items for " + SimplySwords.MOD_ID); } + + */ } diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java index a7cb013c..f61cbc6e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatRegistry.java @@ -1,19 +1,15 @@ package net.sweenus.simplyswords.compat.eldritch_end; import dev.architectury.registry.registries.DeferredRegister; -import dev.architectury.registry.registries.RegistrySupplier; -import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffectCategory; -import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; public class EldritchEndCompatRegistry { public static final DeferredRegister EFFECT = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.STATUS_EFFECT); + /* 1.21 public static final RegistrySupplier VOIDHUNGER = EFFECT.register("voidhunger", () -> new VoidhungerEffect(StatusEffectCategory.HARMFUL, 1124687) .addAttributeModifier(Registries.ATTRIBUTE.get(Identifier.of("eldritch_end:corruption")), @@ -21,5 +17,7 @@ public class EldritchEndCompatRegistry { 1.0, EntityAttributeModifier.Operation.ADD_VALUE)); + */ + } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java index 0b96ee78..d8da0161 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java @@ -37,7 +37,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { double height = 0.9; double descentVelocity = 1; double damage_multiplier = Config.getFloat("magislamDamageModifier", "UniqueEffects", ConfigDefaultValues.magislamDamageModifier); - double damage = (HelperMethods.getAttackDamage(livingEntity.getMainHandStack()) * damage_multiplier); + double damage = (HelperMethods.getEntityAttackDamage(livingEntity) * damage_multiplier); if (ability_timer >= 60) { player.setVelocity(livingEntity.getRotationVector().multiply(+leapVelocity)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index d9515c40..859a0f37 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -94,7 +94,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han EffectRegistry.VOIDASSAULT, voidcallerDuration, voidcloakEffect.getAmplifier(), false, false, true); voidAssaultEffect.setSourceEntity(user); - voidAssaultEffect.setAdditionalData((int) (HelperMethods.getAttackDamage(this.getDefaultStack()) * voidcallerDamageModifier)); + voidAssaultEffect.setAdditionalData((int) (HelperMethods.getEntityAttackDamage(user) * voidcallerDamageModifier)); ee.addStatusEffect(voidAssaultEffect); user.removeStatusEffect(EffectRegistry.VOIDCLOAK); user.getItemCooldownManager().set(this, skillCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index d1d4a397..659227bc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -76,7 +76,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { Optional targetEntityReturn = HelperMethods.findClosestTarget(user, 18, 3); - double damageAmount = HelperMethods.getAttackDamage(stack) * 0.3; + double damageAmount = HelperMethods.getEntityAttackDamage(user) * 0.3; if (targetEntityReturn.isPresent() && HelperMethods.checkFriendlyFire(targetEntityReturn.get(), user)) { LivingEntity targetEntity = targetEntityReturn.get(); SoundEvent soundSelect = SoundRegistry.ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03.get(); @@ -93,7 +93,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } final float minAdditionalDamage = 0.0f; - final float maxAdditionalDamage = (float) (HelperMethods.getAttackDamage(stack) * 3); + final float maxAdditionalDamage = (float) (HelperMethods.getEntityAttackDamage(user) * 3); float chargeRatio = 1.0f - ((float) remainingUseTicks / getMaxUseTime(stack)); float additionalDamage = minAdditionalDamage + (maxAdditionalDamage - minAdditionalDamage) * chargeRatio; float finalDamage = (float) damageAmount + additionalDamage; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index b84d5282..a47cc08b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -36,15 +36,16 @@ public int getMaxUseTime(ItemStack stack) { private static int stepMod = 0; public static boolean scalesWithSpellPower; + public static float tooltipEffectDamage = 0.20f; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); DamageSource damageSource = world.getDamageSources().generic(); - float abilityDamage = (float) HelperMethods.getAttackDamage(this.getDefaultStack()); + float abilityDamage = (float) HelperMethods.getEntityAttackDamage(attacker); float spellScalingModifier = Config.getFloat("smoulderSpellScaling", "UniqueEffects", ConfigDefaultValues.smoulderSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire") > HelperMethods.getAttackDamage(this.getDefaultStack())) { + if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire") > HelperMethods.getEntityAttackDamage(attacker)) { abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire"); scalesWithSpellPower = true; } @@ -106,7 +107,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip3").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", HelperMethods.getAttackDamage(this.getDefaultStack()) * 0.20f).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", tooltipEffectDamage).setStyle(TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip6").setStyle(TEXT)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java index 2cc0035f..6f98f9ec 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java @@ -55,7 +55,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack livingEntity.setOnFireFor(3); livingEntity.takeKnockback(1, 0.1, 0.1); livingEntity.timeUntilRegen = 0; - livingEntity.damage(damageSource, (float) HelperMethods.getAttackDamage(stack)); + livingEntity.damage(damageSource, (float) HelperMethods.getEntityAttackDamage(attacker)); livingEntity.timeUntilRegen = 0; } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index a0db0983..46dcf017 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -59,7 +59,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack beeEntity.shouldAngerAt(target); beeEntity.setInvulnerable(true); beeEntity.setOwner(attacker); - double attackDamage = (1 + skillDamage * HelperMethods.getAttackDamage(this.getDefaultStack())); + double attackDamage = (1 + skillDamage * HelperMethods.getEntityAttackDamage(attacker)); EntityAttributeInstance attackAttribute = beeEntity.getAttributeInstance(EntityAttributes.GENERIC_ATTACK_DAMAGE); if (attackAttribute != null) attackAttribute.setBaseValue(attackDamage); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index 016a4f32..499e6213 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -79,7 +79,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int if (!user.getWorld().isClient() && user instanceof PlayerEntity player) { int skillCooldown = (int) Config.getFloat("magibladeCooldown", "UniqueEffects", ConfigDefaultValues.magibladeCooldown); float damageModifier = Config.getFloat("magibladeDamageModifier", "UniqueEffects", ConfigDefaultValues.magibladeDamageModifier); - float damage = (float) (HelperMethods.getAttackDamage(stack) * damageModifier); + float damage = (float) (HelperMethods.getEntityAttackDamage(user) * damageModifier); float distance = Config.getFloat("magibladeSonicDistance", "UniqueEffects", ConfigDefaultValues.magibladeSonicDistance); DamageSource damageSource = player.getDamageSources().playerAttack(player); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index b07eb7a5..e73491c0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -54,7 +54,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (slot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR || slot == EquipmentSlot.MAINHAND || slot == EquipmentSlot.OFFHAND) { ItemStack item = attacker.getEquippedStack(slot); if (!item.isEmpty() && random.nextFloat() < repairChance && item.getDamage() > 0) { - item.setDamage((int) (item.getDamage() - HelperMethods.getAttackDamage(stack))); + item.setDamage((int) (item.getDamage() - HelperMethods.getEntityAttackDamage(attacker))); break; } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index 1203a5ad..e794648e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -44,7 +44,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack float hitChance = Config.getFloat("magislamMagicChance", "UniqueEffects", ConfigDefaultValues.magislamMagicChance); int random = new Random().nextInt(100); if (random < hitChance) { - float damage = (float) (HelperMethods.getAttackDamage(stack) * Config.getFloat("magislamMagicModifier", "UniqueEffects", ConfigDefaultValues.magislamMagicModifier)); + float damage = (float) (HelperMethods.getEntityAttackDamage(attacker) * Config.getFloat("magislamMagicModifier", "UniqueEffects", ConfigDefaultValues.magislamMagicModifier)); target.timeUntilRegen = 0; target.damage(attacker.getDamageSources().indirectMagic(attacker, attacker), damage); target.timeUntilRegen = 0; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index 1a665c10..32b8dca2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -43,7 +43,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack float skillLifestealModifier = Config.getFloat("celestialSurgeLifestealModifier", "UniqueEffects", ConfigDefaultValues.celestialSurgeLifestealModifier); ServerWorld world = (ServerWorld) attacker.getWorld(); DamageSource damageSource = world.getDamageSources().generic(); - float abilityDamage = (float) HelperMethods.getAttackDamage(this.getDefaultStack()); + float abilityDamage = (float) HelperMethods.getEntityAttackDamage(attacker); if (attacker instanceof PlayerEntity player) damageSource = attacker.getDamageSources().playerAttack(player); @@ -113,7 +113,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip1").setStyle(ABILITY)); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", HelperMethods.getAttackDamage(this.getDefaultStack()) * skillDamageModifier).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", skillDamageModifier).setStyle(TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip4").setStyle(TEXT)); tooltip.add(Text.literal("")); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 282b82db..51532303 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -88,7 +88,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target, statusSelect, 500, 1, vortexMaxStacks); effect.setSourceEntity(attacker); - effect.setAdditionalData((int) HelperMethods.getAttackDamage(this.getDefaultStack()) / 3); + effect.setAdditionalData((int) HelperMethods.getEntityAttackDamage(attacker) / 3); target.addStatusEffect(effect); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index 5d632594..da6c2726 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -49,7 +49,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (attacker.hasStatusEffect(EffectRegistry.FRENZY)) { target.timeUntilRegen = 0; - target.damage(damageSource, (float) (HelperMethods.getAttackDamage(this.getDefaultStack()) * damageModifier)); + target.damage(damageSource, (float) (HelperMethods.getEntityAttackDamage(attacker) * damageModifier)); world.playSound(null, attacker.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), attacker.getSoundCategory(), 0.2f, 1.9f); } diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index dcaaac7f..9224dbfc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -6,7 +6,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.Tameable; import net.minecraft.entity.attribute.EntityAttributeInstance; -import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.decoration.ArmorStandEntity; @@ -540,13 +539,13 @@ public static List getNearbyLivingEntities(World world, Vec3d posi return world.getEntitiesByClass(LivingEntity.class, searchBox, entity -> true); } - //Get Item attack damage - public static double getAttackDamage(ItemStack stack){ - return stack.getItem().getAttributeModifiers(EquipmentSlot.MAINHAND) - .get(EntityAttributes.GENERIC_ATTACK_DAMAGE) - .stream() - .mapToDouble(EntityAttributeModifier::getValue) - .sum(); + //Get entity attack damage + public static double getEntityAttackDamage(LivingEntity livingEntity){ + EntityAttributeInstance attackDamageAttribute = livingEntity.getAttributeInstance(EntityAttributes.GENERIC_ATTACK_DAMAGE); + if (attackDamageAttribute != null) { + return attackDamageAttribute.getValue(); + } + return 0; } public static void applyDamageWithoutKnockback(LivingEntity target, DamageSource source, float amount) { diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java index 4c43efb9..9509f00d 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java @@ -3,7 +3,6 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.compat.GobberCompat; import net.sweenus.simplyswords.fabric.compat.MythicMetalsCompat; public class SimplySwordsFabric implements ModInitializer { @@ -17,12 +16,12 @@ public void onInitialize() { if (FabricLoader.getInstance().isModLoaded("quilt_loader") && FabricLoader.getInstance().isModLoaded("gobber2") && FabricLoader.getInstance().isModLoaded("mythicmetals")) { System.out.println("SimplySwords: Detected Quilt Loader. Mythic Metals and Gobber compatibility fix is being applied."); - GobberCompat.registerModItems(); + //GobberCompat.registerModItems(); 1.21 MythicMetalsCompat.registerModItems(); } else { if (FabricLoader.getInstance().isModLoaded("gobber2")) { - GobberCompat.registerModItems(); + //GobberCompat.registerModItems(); 1.21 } if (FabricLoader.getInstance().isModLoaded("mythicmetals")) { MythicMetalsCompat.registerModItems(); diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java index d0f7078b..045848e9 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java @@ -1,15 +1,7 @@ package net.sweenus.simplyswords.fabric.compat; -import net.minecraft.item.Item; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.fabric.item.PrometheumSwordItem; -import net.sweenus.simplyswords.item.ModToolMaterial; -import net.sweenus.simplyswords.item.SimplySwordsSwordItem; public class MythicMetalsCompat { @@ -100,6 +92,7 @@ public class MythicMetalsCompat { static int celestium_modifier = (int) Config.getFloat("celestium_damageModifier", "WeaponAttributes", ConfigDefaultValues.celestium_damageModifier); static int metallurgium_modifier = (int) Config.getFloat("metallurgium_damageModifier", "WeaponAttributes", ConfigDefaultValues.metallurgium_damageModifier); + /* 1.21 //ADAMANTITE public static final Item ADAMANTITE_LONGSWORD = registerItem( "mythicmetals_compat/adamantite/adamantite_longsword", @@ -1239,4 +1232,6 @@ public static void registerModItems() { SimplySwords.LOGGER.info("Registering Mythic Metals compat Items for " + SimplySwords.MOD_ID); } + */ + } diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/item/PrometheumSwordItem.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/item/PrometheumSwordItem.java deleted file mode 100644 index cb0dd5b3..00000000 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/item/PrometheumSwordItem.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.sweenus.simplyswords.fabric.item; - -import net.minecraft.item.ToolMaterial; -import net.sweenus.simplyswords.item.SimplySwordsSwordItem; -import nourl.mythicmetals.item.tools.AutoRepairable; - -public class PrometheumSwordItem extends SimplySwordsSwordItem implements AutoRepairable { - public PrometheumSwordItem(ToolMaterial toolMaterial, int attackDamage, float attackSpeed, String... repairIngredient) { - super(toolMaterial, attackDamage, attackSpeed, repairIngredient); - } -} From 215b536427aa51a0c1178c9f21624089949639b0 Mon Sep 17 00:00:00 2001 From: Sweenus <48658188+Sweenus@users.noreply.github.com> Date: Sat, 21 Sep 2024 19:03:19 +1000 Subject: [PATCH 06/37] 1.21 Port - Continue suffering, I mean porting to 1.21 --- .../simplyswords/api/SimplySwordsAPI.java | 20 +++-- .../simplyswords/effect/ImmolationEffect.java | 4 +- .../effect/RibboncleaveEffect.java | 6 ++ .../simplyswords/item/NetherfusedGemItem.java | 11 ++- .../simplyswords/item/RunefusedGemItem.java | 11 ++- .../simplyswords/item/RunicSwordItem.java | 25 +----- .../util/ModLootTableModifiers.java | 11 +-- fabric/build.gradle | 88 ++++++++++--------- .../fabric/SimplySwordsFabric.java | 7 +- .../fabric/compat/DynamicLightsCompat.java | 4 +- fabric/src/main/resources/fabric.mod.json | 2 +- 11 files changed, 99 insertions(+), 90 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java index e7f60f9e..190ca62a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java +++ b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java @@ -2,28 +2,19 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.Entity; -import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundEvents; import net.minecraft.text.Style; import net.minecraft.text.Text; -import net.minecraft.util.Formatting; import net.minecraft.world.World; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.registry.EntityRegistry; -import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; -import net.sweenus.simplyswords.util.RunicMethods; import java.util.List; @@ -78,6 +69,7 @@ public static BattleStandardEntity spawnBattleStandard(PlayerEntity user, int de // Performs postHit socket effects public static void postHitGemSocketLogic(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { + /* 1.21 temp switch (stack.getOrCreateNbt().getString("runic_power")) { case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); @@ -110,6 +102,7 @@ public static void postHitGemSocketLogic(ItemStack stack, LivingEntity target, L case "onslaught" -> RunicMethods.postHitNetherOnslaught(target, attacker); case "nullification" -> RunicMethods.postHitNetherNullification(attacker); } + */ } } @@ -119,6 +112,7 @@ public static void appendTooltipGemSocketLogic(ItemStack itemStack, List t Style RUNIC = HelperMethods.getStyle("runic"); Style NETHERFUSED = HelperMethods.getStyle("legendary"); Style TEXT = HelperMethods.getStyle("text"); + /* 1.21 temp NbtCompound nbt = itemStack.getOrCreateNbt(); if (!nbt.getString("runic_power").equals("no_socket") || !nbt.getString("nether_power").equals("no_socket")) { @@ -325,10 +319,13 @@ public static void appendTooltipGemSocketLogic(ItemStack itemStack, List t } else if (!nbt.getString("runic_power").equals("no_socket") || !nbt.getString("nether_power").equals("no_socket")) { tooltip.add(Text.translatable("item.simplyswords.common.showtooltip").formatted(Formatting.GRAY)); } + + */ } // Allows for the socketing of gems public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStack, PlayerEntity player) { + /* 1.21 temp if (Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { String powerType = null; @@ -346,11 +343,14 @@ public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStac otherStack.decrement(1); } } + + */ } // netherSocketChance & runeSocketChance determine how likely these sockets are to appear on the item. An int of 50 = 50% chance for the socket to appear. public static void inventoryTickGemSocketLogic (ItemStack stack, World world, Entity entity, int runeSocketChance, int netherSocketChance) { + /* 1.21 temp NbtCompound nbt = stack.getOrCreateNbt(); @@ -373,6 +373,8 @@ public static void inventoryTickGemSocketLogic (ItemStack stack, World world, En } } + */ + } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java index eceeb463..71050a99 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java @@ -6,7 +6,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; -import net.minecraft.nbt.NbtCompound; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.sound.SoundCategory; @@ -42,6 +41,7 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { ItemStack checkOffStack = player.getOffHandStack(); if (checkMainStack.getItem() instanceof SwordItem || checkOffStack.getItem() instanceof SwordItem) { + /* 1.21 temp //Check mainhand for immolation effect. Remove effect if not present if (player.getMainHandStack().hasNbt()) { @@ -63,6 +63,8 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { } } } + + */ } else {player.removeStatusEffect(EffectRegistry.IMMOLATION);} diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java index e5d7da16..cccc59c6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java @@ -1,6 +1,7 @@ package net.sweenus.simplyswords.effect; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.AttributeContainer; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleTypes; import net.sweenus.simplyswords.item.custom.RibboncleaverSwordItem; @@ -22,6 +23,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { return false; } + @Override + public void onRemoved(LivingEntity entity, AttributeContainer attributes) { + + } + @Override public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index bf5faed4..af3e3e7b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -9,9 +9,7 @@ import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ClickType; -import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; @@ -26,6 +24,7 @@ public NetherfusedGemItem() { @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { + /* 1.21 temp if (stack.getOrCreateNbt().getString("nether_power").isEmpty()) { @@ -33,9 +32,12 @@ public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, Click stack.getOrCreateNbt().putString("nether_power", netherfusedPowerSelection); } + */ + return false; } + /* 1.21 temp @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; @@ -45,6 +47,8 @@ public void onCraft(ItemStack stack, World world, PlayerEntity player) { } + */ + @Override public Text getName(ItemStack stack) { Style LEGENDARY = HelperMethods.getStyle("legendary"); @@ -57,6 +61,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); + /* 1.21 temp if (itemStack.getOrCreateNbt().getString("nether_power").isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.netherfused_gem.tooltip1").setStyle(LEGENDARY)); @@ -178,5 +183,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); + + */ } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index cd697e76..ce0618b2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -9,9 +9,7 @@ import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ClickType; -import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; -import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; @@ -26,14 +24,18 @@ public RunefusedGemItem() { @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { + /* 1.21 temp if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { String runefusedPowerSelection = HelperMethods.chooseRunefusedPower(); stack.getOrCreateNbt().putString("runic_power", runefusedPowerSelection); } + + */ return false; } + /* 1.21 temp @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; @@ -42,6 +44,8 @@ public void onCraft(ItemStack stack, World world, PlayerEntity player) { stack.getOrCreateNbt().putString("runic_power", runefusedPowerSelection); } + */ + @Override public Text getName(ItemStack stack) { Style RUNIC = HelperMethods.getStyle("runic"); @@ -54,6 +58,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); + /* 1.21 temp if (itemStack.getOrCreateNbt().getString("runic_power").isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); @@ -142,5 +147,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); + + */ } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index 1d3eaaab..b6d5a32e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -1,29 +1,7 @@ package net.sweenus.simplyswords.item; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.StackReference; -import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; -import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.particle.ParticleTypes; -import net.minecraft.screen.slot.Slot; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.*; -import net.minecraft.world.World; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.registry.EffectRegistry; -import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.util.HelperMethods; -import net.sweenus.simplyswords.util.RunicMethods; - -import java.util.List; public class RunicSwordItem extends SwordItem { @@ -33,6 +11,7 @@ public RunicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings.fireproof()); } + /* 1.21 temp @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { @@ -294,4 +273,6 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } } } + + */ } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java index 766a6c1f..bd9dbb02 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java @@ -1,15 +1,7 @@ package net.sweenus.simplyswords.util; -import dev.architectury.event.events.common.LootEvent; -import net.minecraft.loot.LootPool; -import net.minecraft.loot.condition.RandomChanceLootCondition; -import net.minecraft.loot.entry.ItemEntry; -import net.minecraft.loot.function.EnchantRandomlyLootFunction; -import net.minecraft.loot.provider.number.ConstantLootNumberProvider; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.config.SimplySwordsConfig; -import net.sweenus.simplyswords.registry.ItemsRegistry; public class ModLootTableModifiers { @@ -19,6 +11,7 @@ public static void init() { float rareLootWeight = Config.getFloat("rareLootTableWeight", "Loot", ConfigDefaultValues.rareLootTableWeight); float runicLootWeight = Config.getFloat("runicLootTableWeight", "Loot", ConfigDefaultValues.runicLootTableWeight); float uniqueLootWeight = Config.getFloat("uniqueLootTableWeight", "Loot", ConfigDefaultValues.uniqueLootTableWeight); + /* 1.21 temp //STANDARD @@ -284,5 +277,7 @@ public static void init() { } })); + */ + } } \ No newline at end of file diff --git a/fabric/build.gradle b/fabric/build.gradle index 57c2bc18..2a027dd0 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -52,79 +52,81 @@ dependencies { modCompileOnly("com.terraformersmc:modmenu:${rootProject.mod_menu_version}") { transitive false } // Mythic Metals - modImplementation "curse.maven:mythicmetals-410127:5660718" - // slug / curseforge project ID / file ID "check url" +/* 1.21 temp +modImplementation "curse.maven:mythicmetals-410127:5660718" + */ - modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" - //modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 - //include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 - modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { - exclude(group: "net.fabricmc.fabric-api") - } - //modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 - // Amethyst Imbuement - //modImplementation "curse.maven:amethyst-imbuement-608261:4514358" +modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" +//modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 +//include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 +modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { + exclude(group: "net.fabricmc.fabric-api") +} +//modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 + +// Amethyst Imbuement +//modImplementation "curse.maven:amethyst-imbuement-608261:4514358" - // Patchouli - modImplementation "vazkii.patchouli:Patchouli:1.21-87-FABRIC" +// Patchouli +modImplementation "vazkii.patchouli:Patchouli:1.21-87-FABRIC" - //modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) 1.21 +//modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) 1.21 - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } +common(project(path: ":common", configuration: "namedElements")) { transitive false } +shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } } processResources { - inputs.property "version", project.version +inputs.property "version", project.version - filesMatching("fabric.mod.json") { - expand "version": project.version - } +filesMatching("fabric.mod.json") { + expand "version": project.version +} } shadowJar { - exclude "architectury.common.json" +exclude "architectury.common.json" - configurations = [project.configurations.shadowCommon] - archiveClassifier.set("dev-shadow") +configurations = [project.configurations.shadowCommon] +archiveClassifier.set("dev-shadow") } remapJar { - injectAccessWidener = true - inputFile.set shadowJar.archiveFile - dependsOn shadowJar - archiveClassifier.set(null) +injectAccessWidener = true +inputFile.set shadowJar.archiveFile +dependsOn shadowJar +archiveClassifier.set(null) } jar { - archiveClassifier.set("dev") +archiveClassifier.set("dev") } sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } +def commonSources = project(":common").sourcesJar +dependsOn commonSources +from commonSources.archiveFile.map { zipTree(it) } } components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } +withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() +} } publishing { - publications { - mavenFabric(MavenPublication) { - artifactId = rootProject.archives_base_name + "-" + project.name - from components.java - } +publications { + mavenFabric(MavenPublication) { + artifactId = rootProject.archives_base_name + "-" + project.name + from components.java } +} - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - } +// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. +repositories { + // Add repositories to publish to here. +} } diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java index 9509f00d..8a01d2b3 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsFabric.java @@ -3,7 +3,6 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.fabric.compat.MythicMetalsCompat; public class SimplySwordsFabric implements ModInitializer { @Override @@ -17,14 +16,20 @@ public void onInitialize() { && FabricLoader.getInstance().isModLoaded("mythicmetals")) { System.out.println("SimplySwords: Detected Quilt Loader. Mythic Metals and Gobber compatibility fix is being applied."); //GobberCompat.registerModItems(); 1.21 + /* 1.21 temp MythicMetalsCompat.registerModItems(); + + */ } else { if (FabricLoader.getInstance().isModLoaded("gobber2")) { //GobberCompat.registerModItems(); 1.21 } if (FabricLoader.getInstance().isModLoaded("mythicmetals")) { + /* 1.21 temp MythicMetalsCompat.registerModItems(); + + */ } } } diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/DynamicLightsCompat.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/DynamicLightsCompat.java index 99ab93f1..fe795447 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/DynamicLightsCompat.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/DynamicLightsCompat.java @@ -1,5 +1,5 @@ package net.sweenus.simplyswords.fabric.compat; - +/* 1.21 temp import dev.lambdaurora.lambdynlights.api.DynamicLightsInitializer; public class DynamicLightsCompat implements DynamicLightsInitializer { @@ -8,3 +8,5 @@ public void onInitializeDynamicLights() { } } + + */ diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index c2ab3ec4..5857b756 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -42,7 +42,7 @@ ], "depends": { "fabric": "*", - "minecraft": ">=1.20 <=1.20.1", + "minecraft": ">=1.21.1 <=1.21.1", "architectury": ">=7.1.0", "cloth-config": ">=11.1.106" }, From 723ba543680417adc7f74a9f102aaa87668aba05 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Mon, 7 Oct 2024 21:40:45 -0400 Subject: [PATCH 07/37] Gem Power work 1 --- common/build.gradle | 8 +- .../sweenus/simplyswords/SimplySwords.java | 7 +- .../sweenus/simplyswords/config/Config.java | 5 +- .../simplyswords/config/GemPowersConfig.java | 22 +++++ .../simplyswords/item/RunicSwordItem.java | 2 +- .../simplyswords/item/TwoHandedWeapon.java | 4 + .../simplyswords/item/UniqueSwordItem.java | 5 +- .../item/custom/ArcanethystSwordItem.java | 7 +- .../item/custom/BrambleSwordItem.java | 9 +- ...rdItem.java => BrimstoneClaymoreItem.java} | 14 +-- .../item/custom/CaelestisSwordItem.java | 9 +- .../item/custom/DormantRelicSwordItem.java | 9 +- .../item/custom/DreadtideSwordItem.java | 9 +- .../item/custom/EmberIreSwordItem.java | 8 +- .../item/custom/EmberlashSwordItem.java | 9 +- .../item/custom/EnigmaSwordItem.java | 9 +- .../item/custom/FlamewindSwordItem.java | 9 +- .../item/custom/FrostfallSwordItem.java | 9 +- .../item/custom/HarbingerSwordItem.java | 9 +- ...ordItem.java => HearthflameSwordItem.java} | 9 +- .../item/custom/HiveheartSwordItem.java | 9 +- .../item/custom/IcewhisperSwordItem.java | 7 +- .../item/custom/LichbladeSwordItem.java | 7 +- .../item/custom/LivyatanSwordItem.java | 9 +- .../item/custom/MagibladeSwordItem.java | 8 +- .../item/custom/MagiscytheSwordItem.java | 9 +- .../item/custom/MagispearSwordItem.java | 9 +- .../item/custom/MoltenEdgeSwordItem.java | 9 +- .../item/custom/PlagueSwordItem.java | 9 +- .../item/custom/RibboncleaverSwordItem.java | 7 +- .../item/custom/RighteousRelicSwordItem.java | 7 +- .../item/custom/ShadowstingSwordItem.java | 7 +- .../item/custom/SoulPyreSwordItem.java | 10 +- ...wordItem.java => SoulkeeperSwordItem.java} | 12 +-- ...wordItem.java => SoulrenderSwordItem.java} | 12 +-- .../item/custom/StarsEdgeSwordItem.java | 7 +- .../item/custom/StealSwordItem.java | 7 +- .../item/custom/StormSwordItem.java | 4 +- .../item/custom/StormbringerSwordItem.java | 6 +- .../item/custom/StormsEdgeSwordItem.java | 4 +- .../item/custom/SunfireSwordItem.java | 7 +- .../item/custom/TaintedRelicSwordItem.java | 7 +- .../item/custom/TempestSwordItem.java | 7 +- .../item/custom/ThunderbrandSwordItem.java | 7 +- ...teSwordItem.java => TwistedBladeItem.java} | 14 +-- .../item/custom/WatcherClaymoreItem.java | 11 +++ .../item/custom/WatcherSwordItem.java | 7 +- .../item/custom/WatchingWarglaiveItem.java | 11 +++ .../item/custom/WaxweaverSwordItem.java | 7 +- .../item/custom/WhisperwindSwordItem.java | 10 +- .../item/custom/WickpiercerSwordItem.java | 7 +- .../sweenus/simplyswords/power/GemPower.java | 56 +++++++++++ .../simplyswords/power/GemPowerComponent.java | 94 +++++++++++++++++++ .../simplyswords/power/NetherGemPower.java | 9 ++ .../sweenus/simplyswords/power/PowerType.java | 21 +++++ .../simplyswords/power/RunefusedGemPower.java | 16 ++++ .../simplyswords/power/RunicGemPower.java | 26 +++++ .../power/powers/ActiveDefencePower.java | 72 ++++++++++++++ .../power/powers/BerserkPower.java | 38 ++++++++ .../simplyswords/power/powers/EchoPower.java | 40 ++++++++ .../simplyswords/power/powers/FloatPower.java | 45 +++++++++ .../power/powers/FreezePower.java | 49 ++++++++++ .../power/powers/FrostWardPower.java | 72 ++++++++++++++ .../power/powers/ImbuedPower.java | 46 +++++++++ .../power/powers/ImmolationPower.java | 49 ++++++++++ .../power/powers/MomentumPower.java | 63 +++++++++++++ .../power/powers/NullificationPower.java | 65 +++++++++++++ .../power/powers/OnslaughtPower.java | 39 ++++++++ .../power/powers/PincushionPower.java | 39 ++++++++ .../power/powers/RadiancePower.java | 37 ++++++++ .../power/powers/ShieldingPower.java | 45 +++++++++ .../simplyswords/power/powers/SlowPower.java | 47 ++++++++++ .../power/powers/StoneskinPower.java | 47 ++++++++++ .../power/powers/SwiftnessPower.java | 45 +++++++++ .../power/powers/TrailblazePower.java | 46 +++++++++ .../power/powers/UnstablePower.java | 71 ++++++++++++++ .../simplyswords/power/powers/WardPower.java | 54 +++++++++++ .../power/powers/WeakenPower.java | 46 +++++++++ .../power/powers/WildfirePower.java | 54 +++++++++++ .../power/powers/ZephyrPower.java | 46 +++++++++ .../registry/ComponentTypeRegistry.java | 22 +++++ .../registry/GemPowerRegistry.java | 82 ++++++++++++++++ .../simplyswords/registry/ItemsRegistry.java | 28 +++--- .../simplyswords/util/HelperMethods.java | 67 ++++++------- .../net/sweenus/simplyswords/util/Styles.java | 23 +++++ fabric/build.gradle | 36 +++---- forge/build.gradle | 12 ++- .../simplyswords/forge/SimplySwordsForge.java | 16 ++-- gradle.properties | 1 + 89 files changed, 1757 insertions(+), 333 deletions(-) create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/TwoHandedWeapon.java rename common/src/main/java/net/sweenus/simplyswords/item/custom/{FireSwordItem.java => BrimstoneClaymoreItem.java} (94%) rename common/src/main/java/net/sweenus/simplyswords/item/custom/{VolcanicFurySwordItem.java => HearthflameSwordItem.java} (97%) rename common/src/main/java/net/sweenus/simplyswords/item/custom/{SoulSwordItem.java => SoulkeeperSwordItem.java} (96%) rename common/src/main/java/net/sweenus/simplyswords/item/custom/{RendSwordItem.java => SoulrenderSwordItem.java} (97%) rename common/src/main/java/net/sweenus/simplyswords/item/custom/{HasteSwordItem.java => TwistedBladeItem.java} (95%) create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherClaymoreItem.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/GemPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/NetherGemPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/PowerType.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/util/Styles.java diff --git a/common/build.gradle b/common/build.gradle index ddd5c7ba..76938f8d 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -28,6 +28,10 @@ repositories { maven { url = "https://jitpack.io" } maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.terraformersmc.com/releases/" } + maven { + name = "FzzyMaven" + url = "https://maven.fzzyhmstrs.me/" + } } dependencies { @@ -40,6 +44,8 @@ dependencies { exclude(group: "net.fabricmc.fabric-api") } modImplementation "curse.maven:necronomicon-586157:${rootProject.necronomicon_version}" + + modImplementation "me.fzzyhmstrs:fzzy_config:${project.fzz_config_version}" } publishing { @@ -57,4 +63,4 @@ publishing { maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.terraformersmc.com/releases/" } } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index ee07e809..d14a789a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -31,8 +31,10 @@ import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.entity.SimplySwordsBeeEntity; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.EntityRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.FileCopier; @@ -107,12 +109,13 @@ public static void init() { SimplySwordsConfig.generateConfigs(json == null || !json.has("regen_simplyswords_config_file") || json.get("regen_simplyswords_config_file").getAsBoolean()); SimplySwordsConfig.loadConfig(); - SimplySwords.TABS.register(); ItemsRegistry.ITEM.register(); SoundRegistry.SOUND.register(); EffectRegistry.EFFECT.register(); EntityRegistry.ENTITIES.register(); + ComponentTypeRegistry.COMPONENT_TYPES.register(); + GemPowerRegistry.register(); EntityAttributeRegistry.register(EntityRegistry.BATTLESTANDARD, BattleStandardEntity::createBattleStandardAttributes); EntityAttributeRegistry.register(EntityRegistry.BATTLESTANDARDDARK, BattleStandardDarkEntity::createBattleStandardDarkAttributes); EntityAttributeRegistry.register(EntityRegistry.SIMPLYBEEENTITY, SimplySwordsBeeEntity::createSimplyBeeAttributes); @@ -159,4 +162,4 @@ public static void initializeClient() { } } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index a605905d..a382b72b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -3,6 +3,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import me.fzzyhmstrs.fzzy_config.api.ConfigApiJava; import java.io.File; import java.io.FileNotFoundException; @@ -18,6 +19,8 @@ public class Config { + public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); + public static File createFile(String path, String contents, boolean overwrite) { File file = new File(path); if (file.exists() && !overwrite) { @@ -182,4 +185,4 @@ public static void safeValueFetch(String type, String parent) { } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java new file mode 100644 index 00000000..2f80f9c2 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java @@ -0,0 +1,22 @@ +package net.sweenus.simplyswords.config; + +import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; +import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.power.GemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; + +public class GemPowersConfig extends Config { + + public GemPowersConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "gem_powers")); + } + + @SuppressWarnings({"deprecation", "unchecked"}) + public ValidatedSet disabledPowers = ValidatedIdentifier.ofRegistryKey((RegistryKey>) GemPowerRegistry.REGISTRY.key()).toSet(); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index b6d5a32e..f82f2e6f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -106,7 +106,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { String power = stack.getOrCreateNbt().getString("runic_power"); if (power.equals("momentum")) maxUseTime = 15; else if (power.equals("ward") || power.equals("immolation")) maxUseTime = 1; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/TwoHandedWeapon.java b/common/src/main/java/net/sweenus/simplyswords/item/TwoHandedWeapon.java new file mode 100644 index 00000000..7279e648 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/TwoHandedWeapon.java @@ -0,0 +1,4 @@ +package net.sweenus.simplyswords.item; + +public interface TwoHandedWeapon { +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index db388fa6..c2eec334 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -27,7 +27,10 @@ public UniqueSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings.fireproof()); } - public abstract int getMaxUseTime(ItemStack stack); + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + return 0; + } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java index 82015069..4cf79319 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; @@ -25,7 +26,7 @@ import java.util.List; -public class ArcanethystSwordItem extends UniqueSwordItem { +public class ArcanethystSwordItem extends UniqueSwordItem implements TwoHandedWeapon { public ArcanethystSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -76,7 +77,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return arcane_timer_max; } @@ -126,4 +127,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index 0f558871..bec18c6b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -23,12 +23,7 @@ public BrambleSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -72,4 +67,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java similarity index 94% rename from common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java rename to common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java index 6f98f9ec..a6eeb648 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java @@ -14,23 +14,19 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; -public class FireSwordItem extends UniqueSwordItem { - public FireSwordItem(ToolMaterial toolMaterial, Settings settings) { +public class BrimstoneClaymoreItem extends UniqueSwordItem implements TwoHandedWeapon { + public BrimstoneClaymoreItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -97,4 +93,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java index d16af978..25d1b455 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java @@ -28,12 +28,7 @@ public CaelestisSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -100,4 +95,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index 28c236e1..e6886c2c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -27,12 +27,7 @@ public DormantRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - @Override + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); return super.postHit(stack, target, attacker); @@ -71,4 +66,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index 859a0f37..745770cd 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -36,12 +36,7 @@ public DreadtideSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -153,4 +148,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index 659227bc..99fdd2b8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -61,7 +61,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { - if (!world.isClient && remainingUseTicks %10 == 0 && remainingUseTicks < getMaxUseTime(stack) - 5) { + if (!world.isClient && remainingUseTicks %10 == 0 && remainingUseTicks < getMaxUseTime(stack, user) - 5) { world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_RECHARGE.get(), user.getSoundCategory(), 0.2f, 1.1f - (remainingUseTicks * 0.001f)); @@ -94,7 +94,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int final float minAdditionalDamage = 0.0f; final float maxAdditionalDamage = (float) (HelperMethods.getEntityAttackDamage(user) * 3); - float chargeRatio = 1.0f - ((float) remainingUseTicks / getMaxUseTime(stack)); + float chargeRatio = 1.0f - ((float) remainingUseTicks / getMaxUseTime(stack, user)); float additionalDamage = minAdditionalDamage + (maxAdditionalDamage - minAdditionalDamage) * chargeRatio; float finalDamage = (float) damageAmount + additionalDamage; targetEntity.timeUntilRegen = 0; @@ -127,7 +127,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return 80; } @@ -176,4 +176,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index a47cc08b..c9a09aa3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -29,12 +29,7 @@ public EmberlashSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; public static boolean scalesWithSpellPower; public static float tooltipEffectDamage = 0.20f; @@ -119,4 +114,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index 624307a1..936215cc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -38,12 +38,7 @@ public EnigmaSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -147,4 +142,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index b8e42704..cea8bd66 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -32,12 +32,7 @@ public FlamewindSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; public static boolean scalesWithSpellPower; @Override @@ -129,4 +124,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 94fb234b..0954388b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -34,12 +34,7 @@ public FrostfallSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; public static boolean scalesWithSpellPower; private final int abilityCooldown = (int) Config.getFloat("frostFuryCooldown", "UniqueEffects", ConfigDefaultValues.frostFuryCooldown); @@ -253,4 +248,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index 072cfd96..1cb2d6fe 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -38,12 +38,7 @@ public HarbingerSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - @Override + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= abilityChance && attacker instanceof PlayerEntity) { @@ -113,4 +108,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java similarity index 97% rename from common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java rename to common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java index 4c4f1f32..4c21ec15 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/VolcanicFurySwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java @@ -21,6 +21,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; @@ -28,8 +29,8 @@ import java.util.List; -public class VolcanicFurySwordItem extends UniqueSwordItem { - public VolcanicFurySwordItem(ToolMaterial toolMaterial, Settings settings) { +public class HearthflameSwordItem extends UniqueSwordItem implements TwoHandedWeapon { + public HearthflameSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -94,7 +95,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return ability_timer_max; } @@ -175,4 +176,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index 46dcf017..38356255 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -32,12 +32,7 @@ public HiveheartSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -115,4 +110,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip10").setStyle(TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java index 79c1563b..293d2cc2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java @@ -20,6 +20,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; @@ -27,7 +28,7 @@ import java.util.List; -public class IcewhisperSwordItem extends UniqueSwordItem { +public class IcewhisperSwordItem extends UniqueSwordItem implements TwoHandedWeapon { public IcewhisperSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -73,7 +74,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return blizzard_timer_max; } @@ -171,4 +172,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java index 51d2684d..a54beb3a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java @@ -20,6 +20,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -28,7 +29,7 @@ import java.util.List; -public class LichbladeSwordItem extends UniqueSwordItem { +public class LichbladeSwordItem extends UniqueSwordItem implements TwoHandedWeapon { public LichbladeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -118,7 +119,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return maxDuration * 2; } @@ -217,4 +218,4 @@ else if (itemStack.isOf(ItemsRegistry.WAKING_LICHBLADE.get())) } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index 72c1d0ea..e5508d38 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -34,12 +34,7 @@ public LivyatanSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; public static boolean scalesWithSpellPower; int radius = (int) Config.getFloat("frostShatterRadius", "UniqueEffects", ConfigDefaultValues.frostShatterRadius); float abilityDamage = Config.getFloat("frostShatterDamage", "UniqueEffects", ConfigDefaultValues.frostShatterDamage); @@ -172,4 +167,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index 499e6213..491823e8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -51,13 +51,13 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient) { - if ((remainingUseTicks %5 == 0 && remainingUseTicks < getMaxUseTime(stack) - 5)) { + if ((remainingUseTicks %5 == 0 && remainingUseTicks < getMaxUseTime(stack, user) - 5)) { if (remainingUseTicks < 10) { onStoppedUsing(stack, world, user, remainingUseTicks); } } - if (remainingUseTicks == getMaxUseTime(stack)-1) { + if (remainingUseTicks == getMaxUseTime(stack, user) - 1) { world.playSoundFromEntity(null, user, SoundEvents.ENTITY_WARDEN_SONIC_CHARGE, user.getSoundCategory(), 0.6f, 1.4f); } @@ -65,7 +65,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return 40; } @@ -126,4 +126,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index e73491c0..c13576c6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -30,12 +30,7 @@ public MagiscytheSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; public static boolean scalesWithSpellPower; @Override @@ -117,4 +112,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index e794648e..b810a601 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -29,12 +29,7 @@ public MagispearSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -98,4 +93,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 5d5f8c9a..2209b54b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -33,12 +33,7 @@ public MoltenEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; private static SimpleParticleType particleWalk = ParticleTypes.FALLING_LAVA; private static SimpleParticleType particleSprint = ParticleTypes.FALLING_LAVA; private static SimpleParticleType particlePassive = ParticleTypes.SMOKE; @@ -151,4 +146,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index 93ed6eca..d890c58c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -23,12 +23,7 @@ public PlagueSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -133,4 +128,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index 1486b297..72f7a94a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -33,11 +33,6 @@ public RibboncleaverSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -140,4 +135,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index e1a06243..53ad455c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -30,11 +30,6 @@ public RighteousRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -73,4 +68,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java index b47bdf59..2da2f65d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java @@ -38,11 +38,6 @@ public ShadowstingSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -127,4 +122,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index 3b843284..0cda7845 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -25,16 +26,11 @@ import java.util.List; -public class SoulPyreSwordItem extends UniqueSwordItem { +public class SoulPyreSwordItem extends UniqueSwordItem implements TwoHandedWeapon { public SoulPyreSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private int relocationTimer; private static int stepMod = 0; private final int relocationDuration = (int) Config.getFloat("soultetherDuration", "UniqueEffects", ConfigDefaultValues.soultetherDuration); @@ -147,4 +143,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java similarity index 96% rename from common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java rename to common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java index 80e7e1ff..a4777757 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java @@ -19,22 +19,18 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; -public class SoulSwordItem extends UniqueSwordItem { - public SoulSwordItem(ToolMaterial toolMaterial, Settings settings) { +public class SoulkeeperSwordItem extends UniqueSwordItem implements TwoHandedWeapon { + public SoulkeeperSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -121,4 +117,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java similarity index 97% rename from common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java rename to common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java index ea904d39..a490faba 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RendSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java @@ -19,22 +19,18 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; -public class RendSwordItem extends UniqueSwordItem { - public RendSwordItem(ToolMaterial toolMaterial, Settings settings) { +public class SoulrenderSwordItem extends UniqueSwordItem implements TwoHandedWeapon { + public SoulrenderSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - float abilityDamage = Config.getFloat("soulrendDamageMulti", "UniqueEffects", ConfigDefaultValues.soulrendDamageMulti); float spellScalingModifier = Config.getFloat("soulrendDamageSpellScaling", "UniqueEffects", ConfigDefaultValues.soulrendDamageSpellScaling); @@ -159,4 +155,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index 32b8dca2..5bec1ce9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -29,11 +29,6 @@ public StarsEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -126,4 +121,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index 5553e56a..0256c2ac 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -32,11 +32,6 @@ public StealSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; public static boolean scalesWithSpellPower; float abilityDamage = 5; @@ -157,4 +152,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index 142486c1..a6ec41fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -68,7 +68,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return (int) Config.getFloat("stormDuration", "UniqueEffects", ConfigDefaultValues.stormDuration); } @@ -103,4 +103,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java index 2d781188..48d22576 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java @@ -72,7 +72,7 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai //Parry attack if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - if (le.handSwinging && remainingUseTicks > getMaxUseTime(stack) - perfectParryWindow) { + if (le.handSwinging && remainingUseTicks > getMaxUseTime(stack, user) - perfectParryWindow) { parrySuccess = true; if (parrySuccession < 20) parrySuccession += 1; user.stopUsingItem(); @@ -123,7 +123,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return ability_timer_max; } @@ -173,4 +173,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java index df1075f1..7daa0ce3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java @@ -80,7 +80,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return ability_timer_max; } @@ -114,4 +114,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java index 684acc1b..cf3deafe 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java @@ -38,11 +38,6 @@ public SunfireSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -114,4 +109,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index eabd82e2..027507a9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -31,11 +31,6 @@ public TaintedRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -74,4 +69,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 51532303..9bd1cbe8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -36,11 +36,6 @@ public TempestSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; public static boolean scalesWithSpellPower; @@ -181,4 +176,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java index 2cd9f43c..edb36022 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; @@ -25,7 +26,7 @@ import java.util.List; -public class ThunderbrandSwordItem extends UniqueSwordItem { +public class ThunderbrandSwordItem extends UniqueSwordItem implements TwoHandedWeapon { public ThunderbrandSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -85,7 +86,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } @Override - public int getMaxUseTime(ItemStack stack) { + public int getMaxUseTime(ItemStack stack, LivingEntity user) { return ability_timer_max; } @@ -130,4 +131,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java similarity index 95% rename from common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java rename to common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java index 46aef902..28ae7292 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HasteSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java @@ -17,23 +17,19 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; -public class HasteSwordItem extends UniqueSwordItem { - public HasteSwordItem(ToolMaterial toolMaterial, Settings settings) { +public class TwistedBladeItem extends UniqueSwordItem implements TwoHandedWeapon { + public TwistedBladeItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - - private static int stepMod = 0; + private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -106,4 +102,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherClaymoreItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherClaymoreItem.java new file mode 100644 index 00000000..ddcb5589 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherClaymoreItem.java @@ -0,0 +1,11 @@ +package net.sweenus.simplyswords.item.custom; + +import net.minecraft.item.ToolMaterial; +import net.sweenus.simplyswords.item.TwoHandedWeapon; + +public class WatcherClaymoreItem extends WatcherSwordItem implements TwoHandedWeapon { + + public WatcherClaymoreItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index c798e52f..e0b334cf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -26,11 +26,6 @@ public WatcherSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -109,4 +104,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java new file mode 100644 index 00000000..e1e0c053 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java @@ -0,0 +1,11 @@ +package net.sweenus.simplyswords.item.custom; + +import net.minecraft.item.ToolMaterial; +import net.sweenus.simplyswords.item.TwoHandedWeapon; + +public class WatchingWarglaiveItem extends WatcherSwordItem { + + public WatchingWarglaiveItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java index 56559997..d21b297b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java @@ -25,11 +25,6 @@ public WaxweaverSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -83,4 +78,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 0d6ccebf..00fe6803 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -16,6 +16,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -23,7 +24,7 @@ import java.util.List; -public class WhisperwindSwordItem extends UniqueSwordItem { +public class WhisperwindSwordItem extends UniqueSwordItem implements TwoHandedWeapon { private static int stepMod = 0; int skillCooldown = (int) Config.getFloat("fatalFlickerCooldown", "UniqueEffects", ConfigDefaultValues.fatalFlickerCooldown); int abilityChance = (int) Config.getFloat("fatalFlickerChance", "UniqueEffects", ConfigDefaultValues.fatalFlickerChance); @@ -32,11 +33,6 @@ public WhisperwindSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -89,4 +85,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index da6c2726..1b834813 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -29,11 +29,6 @@ public WickpiercerSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - @Override - public int getMaxUseTime(ItemStack stack) { - return 0; - } - private static int stepMod = 0; @Override @@ -111,4 +106,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java new file mode 100644 index 00000000..d210c53a --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java @@ -0,0 +1,56 @@ +package net.sweenus.simplyswords.power; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +import java.util.Arrays; +import java.util.List; + +public class GemPower { + + public GemPower(boolean isGreater, PowerType... applicableTypes) { + this.isGreater = isGreater; + this.applicableTypes = Arrays.stream(applicableTypes).toList(); + } + + private final boolean isGreater; + private final List applicableTypes; + + public boolean isGreater() { return isGreater; } + public List applicableTypes() { return applicableTypes; } + + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) {} + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) {} + public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) {} + + TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { return TypedActionResult.fail(itemStack); } + void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) {} + void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {} + int getMaxUseTime(ItemStack stack) { return 0; } + + boolean isEmpty() { return false; } + + ////////////////////////////// + + public static GemPower EMPTY = new EmptyGemPower(); + + private static class EmptyGemPower extends GemPower { + + public EmptyGemPower() { + super(false); + } + + @Override + boolean isEmpty() { + return true; + } + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java new file mode 100644 index 00000000..d82beb64 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java @@ -0,0 +1,94 @@ +package net.sweenus.simplyswords.power; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryFixedCodec; +import net.minecraft.text.Text; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; +import net.sweenus.simplyswords.registry.GemPowerRegistry; + +import java.util.List; + +public record GemPowerComponent(boolean hasRunicPower, boolean hasNetherPower, RegistryEntry runicPower, RegistryEntry netherPower) { + + public static final Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + Codec.BOOL.fieldOf("has_runic_power").forGetter(GemPowerComponent::hasRunicPower), + Codec.BOOL.fieldOf("has_nether_power").forGetter(GemPowerComponent::hasNetherPower), + RegistryFixedCodec.of(GemPowerRegistry.REGISTRY.key()).fieldOf("runic_power").forGetter(GemPowerComponent::runicPower), + RegistryFixedCodec.of(GemPowerRegistry.REGISTRY.key()).fieldOf("nether_power").forGetter(GemPowerComponent::netherPower) + ).apply(instance, GemPowerComponent::new) + ); + + public static final PacketCodec PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.BOOL, + GemPowerComponent::hasRunicPower, + PacketCodecs.BOOL, + GemPowerComponent::hasNetherPower, + PacketCodecs.registryEntry(GemPowerRegistry.REGISTRY.key()), + GemPowerComponent::runicPower, + PacketCodecs.registryEntry(GemPowerRegistry.REGISTRY.key()), + GemPowerComponent::netherPower, + GemPowerComponent::new + ); + + void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + runicPower.value().postHit(stack, target, attacker); + netherPower.value().postHit(stack, target, attacker); + } + + TypedActionResult use(World world, PlayerEntity user, Hand hand) { + ItemStack itemStack = user.getStackInHand(hand); + TypedActionResult result1 = runicPower.value().use(world, user, hand, itemStack); + TypedActionResult result2 = netherPower.value().use(world, user, hand, itemStack); + if (result1.getResult().compareTo(result2.getResult()) < 0) { + return result1; + } else { + return result2; + } + } + + void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + runicPower.value().usageTick(world, user, stack, remainingUseTicks); + netherPower.value().usageTick(world, user, stack, remainingUseTicks); + } + + void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + runicPower.value().onStoppedUsing(stack, world, user, remainingUseTicks); + netherPower.value().onStoppedUsing(stack, world, user, remainingUseTicks); + } + + void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { + if (!world.isClient) { + runicPower.value().inventoryTick(stack, world, user, slot, selected); + netherPower.value().inventoryTick(stack, world, user, slot, selected); + } + } + + void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type) { + appendTooltip(itemStack, tooltipContext, tooltip, type, false); + } + + void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (hasRunicPower) { + runicPower.value().appendTooltip(itemStack, tooltipContext, tooltip, type, isRunic); + if (hasNetherPower) { + tooltip.add(Text.literal("")); + } + } + if (hasNetherPower) { + netherPower.value().appendTooltip(itemStack, tooltipContext, tooltip, type, isRunic); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/NetherGemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/NetherGemPower.java new file mode 100644 index 00000000..84dd9099 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/NetherGemPower.java @@ -0,0 +1,9 @@ +package net.sweenus.simplyswords.power; + +public class NetherGemPower extends GemPower { + + public NetherGemPower(boolean isGreater) { + //runefused gems also work in runic weapons + super(isGreater, PowerType.RUNIC, PowerType.RUNEFUSED); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java b/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java new file mode 100644 index 00000000..04ff53f8 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java @@ -0,0 +1,21 @@ +package net.sweenus.simplyswords.power; + +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import dev.architectury.registry.registries.RegistrySupplier; +import net.sweenus.simplyswords.registry.GemPowerRegistry; + +import java.util.List; +import java.util.Map; + +public enum PowerType { + RUNIC, + RUNEFUSED, + NETHER; + + private final Supplier>> entrySupplier = Suppliers.memoize(() -> GemPowerRegistry.REGISTRY.entrySet().stream().map(entry -> GemPowerRegistry.REGISTRY.wrap(entry.getValue())).filter(entry -> entry.get().applicableTypes().contains(this)).toList()); + + public List> getEntries() { + return entrySupplier.get(); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java new file mode 100644 index 00000000..c59c2678 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java @@ -0,0 +1,16 @@ +package net.sweenus.simplyswords.power; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +public class RunefusedGemPower extends GemPower { + + public RunefusedGemPower(boolean isGreater) { + //runefused gems also work in runic weapons + super(isGreater, PowerType.RUNIC, PowerType.RUNEFUSED); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java new file mode 100644 index 00000000..ee1aab31 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java @@ -0,0 +1,26 @@ +package net.sweenus.simplyswords.power; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +import java.util.List; + +public class RunicGemPower extends GemPower { + + public RunicGemPower(boolean isGreater) { + super(isGreater, PowerType.RUNIC); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { return TypedActionResult.fail(itemStack); } + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) {} + @Override + public int getMaxUseTime(ItemStack stack) { return 0; } + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java new file mode 100644 index 00000000..8b6b0e4f --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java @@ -0,0 +1,72 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.projectile.ArrowEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.text.Text; +import net.minecraft.util.math.Box; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class ActiveDefencePower extends RunefusedGemPower { + + public ActiveDefencePower() { + super(false); + } + + @Override + public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { + if (user instanceof PlayerEntity player && player.getInventory().contains(Items.ARROW.getDefaultStack())) { + int frequency = (int) Config.getFloat("activeDefenceFrequency", "RunicEffects", ConfigDefaultValues.activeDefenceFrequency); + if (player.age % frequency == 0) { + int sradius = (int) Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius); + int vradius = (int) (Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius) / 2); + double x = player.getX(); + double y = player.getY(); + double z = player.getZ(); + Box box = new Box(x + sradius, y + vradius, z + sradius, x - sradius, y - vradius, z - sradius); + for (Entity entity : world.getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { + + if (entity instanceof LivingEntity le && HelperMethods.checkFriendlyFire(le, player)) { + + int arrowSlot = player.getInventory().getSlotWithStack(Items.ARROW.getDefaultStack()); + ItemStack arrowStack = player.getInventory().getStack(arrowSlot); + int randomc = (int) (Math.random() * 100); + if (randomc < 15) { + arrowStack.decrement(1); + } + ArrowEntity arrow = new ArrowEntity(EntityType.ARROW, world); + arrow.updatePosition(player.getX(), (player.getY() + 1.5), player.getZ()); + arrow.setOwner(player); + arrow.setVelocity(le.getX() - player.getX(), (le.getY() - player.getY()) - 1, le.getZ() - player.getZ()); + world.spawnEntity(arrow); + break; + } + } + } + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.active_defence").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java new file mode 100644 index 00000000..f4880776 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java @@ -0,0 +1,38 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.power.NetherGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class BerserkPower extends NetherGemPower { + + public BerserkPower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int amp = HelperMethods.isUniqueTwohanded(stack) ? 4 : 2; + if (attacker.getArmor() < 10) { + target.setHealth(target.getHealth() - amp); + attacker.heal((float) amp / 2); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java new file mode 100644 index 00000000..572a52c8 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java @@ -0,0 +1,40 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.NetherGemPower; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class EchoPower extends NetherGemPower { + + public EchoPower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int amp = HelperMethods.isUniqueTwohanded(stack) ? 2 : 0; + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.ECHO, 20, amp), attacker); + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java new file mode 100644 index 00000000..037b4fcc --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java @@ -0,0 +1,45 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class FloatPower extends RunefusedGemPower { + + public FloatPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("floatChance", "RunicEffects", ConfigDefaultValues.floatChance); + int duration = (int) Config.getFloat("floatDuration", "RunicEffects", ConfigDefaultValues.floatDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration, this.isGreater() ? 3 : 2), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.float").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java new file mode 100644 index 00000000..a81a126d --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java @@ -0,0 +1,49 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class FreezePower extends RunefusedGemPower { + + public FreezePower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("freezeChance", "RunicEffects", ConfigDefaultValues.freezeChance); + int freezeDuration = (int) Config.getFloat("freezeDuration", "RunicEffects", ConfigDefaultValues.freezeDuration); + int duration = freezeDuration * 3; + + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, freezeDuration, 1), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.freeze").setStyle(Styles.TEXT)); + + tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java new file mode 100644 index 00000000..0c47c4a9 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java @@ -0,0 +1,72 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.projectile.ArrowEntity; +import net.minecraft.entity.projectile.thrown.SnowballEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.text.Text; +import net.minecraft.util.math.Box; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class FrostWardPower extends RunefusedGemPower { + + public FrostWardPower() { + super(false); + } + + @Override + public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { + int frequency = (int) Config.getFloat("frostWardFrequency", "RunicEffects", ConfigDefaultValues.frostWardFrequency); + int duration = (int) Config.getFloat("frostWardDuration", "RunicEffects", ConfigDefaultValues.frostWardDuration); + if (user.age % frequency == 0) { + float sRadius = Config.getFloat("frostWardRadius", "RunicEffects", ConfigDefaultValues.frostWardRadius); + float vRadius = sRadius / 2f; + double x = user.getX(); + double y = user.getY(); + double z = user.getZ(); + ServerWorld serverWorld = (ServerWorld) world; + Box box = new Box(x + sRadius, y + vRadius, z + sRadius, x - sRadius, y - vRadius, z - sRadius); + for (Entity entity : serverWorld.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { + + if (entity instanceof LivingEntity le && HelperMethods.checkFriendlyFire(le, user)) { + + if (le.distanceTo(user) < sRadius) { + SnowballEntity snowball = new SnowballEntity(EntityType.SNOWBALL, serverWorld); + snowball.updatePosition(user.getX(), (user.getY() + 1.5), user.getZ()); + snowball.setOwner(user); + le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration)); + snowball.setVelocity(le.getX() - user.getX(), (le.getY() - user.getY()) - 1, le.getZ() - user.getZ()); + serverWorld.spawnEntity(snowball); + } + } + } + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.frost_ward").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java new file mode 100644 index 00000000..74a883d3 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java @@ -0,0 +1,46 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class ImbuedPower extends RunefusedGemPower { + + public ImbuedPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("imbuedChance", "RunicEffects", ConfigDefaultValues.imbuedChance); + int damage = (this.isGreater() ? 10 : 6) - ((stack.getDamage() / stack.getMaxDamage()) * 100) / 20; + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.timeUntilRegen = 0; + target.damage(attacker.getDamageSources().magic(), damage); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.2f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.imbued").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java new file mode 100644 index 00000000..f39ce4ba --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java @@ -0,0 +1,49 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; +import net.sweenus.simplyswords.power.RunicGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class ImmolationPower extends RunicGemPower { + + public ImmolationPower() { + super(false); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { + user.setCurrentHand(hand); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 36000, 0), user); + user.getItemCooldownManager().set(itemStack.getItem(), 40); + world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + user.getSoundCategory(), 0.3f, 0.6f); + return TypedActionResult.consume(itemStack); + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 1; + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip1").setStyle(Styles.RUNIC)); + tooltip.add(Text.literal("")); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip4").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java new file mode 100644 index 00000000..4af0abea --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java @@ -0,0 +1,63 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.power.RunicGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class MomentumPower extends RunicGemPower { + + public MomentumPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + int skillCooldown = (int) Config.getFloat("momentumCooldown", "RunicEffects", ConfigDefaultValues.momentumCooldown); + if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user.isOnGround()) { + //Player dash forward + if (remainingUseTicks == (this.isGreater() ? 10 : 12) || remainingUseTicks == 13 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { + user.setVelocity(user.getRotationVector().multiply(+3)); + user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent player flying to the heavens + user.velocityModified = true; + if (user instanceof PlayerEntity player) { + player.getItemCooldownManager().set(stack.getItem(), skillCooldown); + } + } + } + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { + user.setVelocity(0, 0, 0); // Stop player at end of charge + user.velocityModified = true; + } + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 15; + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip1").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java new file mode 100644 index 00000000..593590b9 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java @@ -0,0 +1,65 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.SpawnReason; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.entity.BattleStandardEntity; +import net.sweenus.simplyswords.power.NetherGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.EntityRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class NullificationPower extends NetherGemPower { + + public NullificationPower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + if (!attacker.hasStatusEffect(EffectRegistry.BATTLE_FATIGUE)) { + if (!attacker.getWorld().isClient()) { + ServerWorld serverWorld = (ServerWorld) attacker.getWorld(); + BlockState currentState = serverWorld.getBlockState(attacker.getBlockPos().up(4).offset(attacker.getMovementDirection(), 3)); + BlockState state = Blocks.AIR.getDefaultState(); + if (currentState == state) { + serverWorld.playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_01.get(), + attacker.getSoundCategory(), 0.4f, 0.8f); + BattleStandardEntity banner = EntityRegistry.BATTLESTANDARD.get().spawn( + serverWorld, + attacker.getBlockPos().up(4).offset(attacker.getMovementDirection(), 3), + SpawnReason.MOB_SUMMONED); + if (banner != null) { + banner.setVelocity(0, -1, 0); + banner.ownerEntity = attacker; + banner.decayRate = 3; + banner.standardType = "nullification"; + banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", attacker.getName())); + } + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.BATTLE_FATIGUE, 800, 0), attacker); + } + } + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description5").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java new file mode 100644 index 00000000..ae1b3b6f --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java @@ -0,0 +1,39 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.power.NetherGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class OnslaughtPower extends NetherGemPower { + + public OnslaughtPower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + if (target.hasStatusEffect(StatusEffects.SLOWNESS) && !attacker.hasStatusEffect(StatusEffects.WEAKNESS)) { + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, 80, 0), attacker); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java new file mode 100644 index 00000000..8aefcbc3 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java @@ -0,0 +1,39 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class PincushionPower extends RunefusedGemPower { + + public PincushionPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int stuckArrows = attacker.getStuckArrowCount(); + target.damage(attacker.getDamageSources().generic(), (this.isGreater() ? stuckArrows * 2 : stuckArrows)); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.pincushion").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java new file mode 100644 index 00000000..abeffe99 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java @@ -0,0 +1,37 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.power.NetherGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class RadiancePower extends NetherGemPower { + + public RadiancePower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + if (target.hasStatusEffect(StatusEffects.WEAKNESS)) { + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 200, 4), attacker); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java new file mode 100644 index 00000000..c254b1e7 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java @@ -0,0 +1,45 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class ShieldingPower extends RunefusedGemPower { + + public ShieldingPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("shieldingChance", "RunicEffects", ConfigDefaultValues.shieldingChance); + int duration = (int) Config.getFloat("shieldingDuration", "RunicEffects", ConfigDefaultValues.shieldingDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, duration, this.isGreater() ? 1 : 0), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.float").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java new file mode 100644 index 00000000..6aa4a48b --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java @@ -0,0 +1,47 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class SlowPower extends RunefusedGemPower { + + public SlowPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("slowChance", "RunicEffects", ConfigDefaultValues.slowChance); + int duration = (int) Config.getFloat("slowDuration", "RunicEffects", ConfigDefaultValues.slowDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 2), attacker); + if (this.isGreater()) { + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.slow").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java new file mode 100644 index 00000000..c630e232 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java @@ -0,0 +1,47 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class StoneskinPower extends RunefusedGemPower { + + public StoneskinPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("stoneskinChance", "RunicEffects", ConfigDefaultValues.stoneskinChance); + int duration = (int) Config.getFloat("stoneskinDuration", "RunicEffects", ConfigDefaultValues.stoneskinDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, this.isGreater() ? 2 : 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, duration, 0), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, this.isGreater() ? 1 : 0), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_02.get(), + attacker.getSoundCategory(), 0.3f, this.isGreater() ? 1.1f : 1.3f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.stoneskin").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java new file mode 100644 index 00000000..b1873a5e --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java @@ -0,0 +1,45 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class SwiftnessPower extends RunefusedGemPower { + + public SwiftnessPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("swiftnessChance", "RunicEffects", ConfigDefaultValues.swiftnessChance); + int duration = (int) Config.getFloat("swiftnessDuration", "RunicEffects", ConfigDefaultValues.swiftnessDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, this.isGreater() ? 1 : 0), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.swiftness").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java new file mode 100644 index 00000000..83e5f337 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java @@ -0,0 +1,46 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class TrailblazePower extends RunefusedGemPower { + + public TrailblazePower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("trailblazeChance", "RunicEffects", ConfigDefaultValues.trailblazeChance); + int duration = (int) Config.getFloat("trailblazeDuration", "RunicEffects", ConfigDefaultValues.trailblazeDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, this.isGreater() ? 2 : 1), attacker); + attacker.setOnFireFor(duration / 20f); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.trailblaze").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java new file mode 100644 index 00000000..69398703 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java @@ -0,0 +1,71 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.projectile.thrown.SnowballEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.text.Text; +import net.minecraft.util.math.Box; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class UnstablePower extends RunefusedGemPower { + + public UnstablePower() { + super(false); + } + + @Override + public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { + int duration = (int) Config.getFloat("unstableDuration", "RunicEffects", ConfigDefaultValues.unstableDuration); + int frequency = (int) Config.getFloat("unstableFrequency", "RunicEffects", ConfigDefaultValues.unstableFrequency); + if (user.age % frequency == 0) { + int random = (int) (Math.random() * 100); + if (random < 10) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration)); + else if (random < 20) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration)); + else if (random < 30) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, duration)); + else if (random < 40) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.INVISIBILITY, duration)); + else if (random < 50) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, duration)); + else if (random < 60) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.JUMP_BOOST, duration)); + else if (random < 70) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration)); + else if (random < 80) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.DOLPHINS_GRACE, duration)); + else if (random < 90) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration)); + else if (random < 95) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration)); + else if (random < 100) + user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOW_FALLING, duration)); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.unstable").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java new file mode 100644 index 00000000..5ae10a9e --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java @@ -0,0 +1,54 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunicGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class WardPower extends RunicGemPower { + + public WardPower() { + super(false); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { + user.setCurrentHand(hand); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.WARD, 120, 0), user); + user.getItemCooldownManager().set(itemStack.getItem(), 120); + user.setHealth(user.getHealth() / 2); + world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + user.getSoundCategory(), 0.3f, 1.2f); + return TypedActionResult.consume(itemStack); + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 1; + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip1").setStyle(Styles.RUNIC)); + tooltip.add(Text.literal("")); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip4").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java new file mode 100644 index 00000000..0fef4e26 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java @@ -0,0 +1,46 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class WeakenPower extends RunefusedGemPower { + + public WeakenPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("weakenChance", "RunicEffects", ConfigDefaultValues.weakenChance); + int duration = (int) Config.getFloat("weakenDuration", "RunicEffects", ConfigDefaultValues.weakenDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, this.isGreater() ? 1 : 0), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, this.isGreater() ? 2 : 1), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.weaken").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java new file mode 100644 index 00000000..e570634c --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java @@ -0,0 +1,54 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.projectile.thrown.SnowballEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.text.Text; +import net.minecraft.util.math.Box; +import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class WildfirePower extends RunefusedGemPower { + + public WildfirePower() { + super(false); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("wildfireChance", "RunicEffects", ConfigDefaultValues.wildfireChance); + int duration = (int) Config.getFloat("wildfireDuration", "RunicEffects", ConfigDefaultValues.wildfireDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE, duration, 3), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.wildfire").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java new file mode 100644 index 00000000..cd9a4560 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java @@ -0,0 +1,46 @@ +package net.sweenus.simplyswords.power.powers; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.util.Styles; + +import java.util.List; + +public class ZephyrPower extends RunefusedGemPower { + + public ZephyrPower(boolean isGreater) { + super(isGreater); + } + + @Override + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + int hitChance = (int) Config.getFloat("zephyrChance", "RunicEffects", ConfigDefaultValues.zephyrChance); + int duration = (int) Config.getFloat("zephyrDuration", "RunicEffects", ConfigDefaultValues.zephyrDuration); + + if (attacker.getRandom().nextInt(100) <= hitChance) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, this.isGreater() ? 1 : 0), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, this.isGreater() ? 1 : 0), attacker); + attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + attacker.getSoundCategory(), 0.1f, 1.8f); + } + } + + @Override + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + if (isRunic) + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip1").setStyle(Styles.RUNIC)); + else + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.zephyr").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(Styles.TEXT)); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java new file mode 100644 index 00000000..b2c9f80a --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java @@ -0,0 +1,22 @@ +package net.sweenus.simplyswords.registry; + +import dev.architectury.registry.registries.DeferredRegister; +import dev.architectury.registry.registries.RegistrySupplier; +import net.minecraft.component.ComponentType; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnGroup; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; +import net.sweenus.simplyswords.entity.BattleStandardEntity; +import net.sweenus.simplyswords.entity.SimplySwordsBeeEntity; +import net.sweenus.simplyswords.power.GemPowerComponent; + +public class ComponentTypeRegistry { + + public static final DeferredRegister> COMPONENT_TYPES = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.DATA_COMPONENT_TYPE); + + public static final RegistrySupplier> GEM_POWER = COMPONENT_TYPES.register("gem_power", () -> ComponentType.builder().codec(GemPowerComponent.CODEC).packetCodec(GemPowerComponent.PACKET_CODEC).build()); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java new file mode 100644 index 00000000..1bd6963b --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java @@ -0,0 +1,82 @@ +package net.sweenus.simplyswords.registry; + +import dev.architectury.registry.registries.Registrar; +import dev.architectury.registry.registries.RegistrarManager; +import dev.architectury.registry.registries.RegistrySupplier; +import dev.architectury.registry.registries.options.DefaultIdRegistrarOption; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.power.GemPower; +import net.sweenus.simplyswords.power.PowerType; +import net.sweenus.simplyswords.power.powers.*; +import net.sweenus.simplyswords.util.HelperMethods; + +import java.util.List; +import java.util.function.Supplier; + +public class GemPowerRegistry { + + public static void register() {} + + public static Registrar REGISTRY = RegistrarManager.get("simplyswords") + .builder(Identifier.of(SimplySwords.MOD_ID, "gem_power")) + .option(new DefaultIdRegistrarOption(Identifier.of(SimplySwords.MOD_ID, "empty_power"))) + .build(); + + private static RegistrySupplier register(String path, Supplier power) { + return REGISTRY.register(Identifier.of(SimplySwords.MOD_ID, path), power); + } + + public static List> getPowers(PowerType powerType) { + return powerType.getEntries().stream().filter(entry -> !Config.gemPowers.disabledPowers.contains(entry.getId())).toList(); + } + + public static RegistryEntry gemRandomPower(PowerType powerType) { + List> powers = getPowers(powerType); + if (powers.isEmpty()) { + return EMPTY; + } + return powers.get(HelperMethods.random().nextInt(powers.size())); + } + + public static RegistrySupplier EMPTY = register("empty_power", () -> GemPower.EMPTY); + + public static RegistrySupplier ACTIVE_DEFENCE = register("active_defence", ActiveDefencePower::new); + public static RegistrySupplier FLOAT = register("float", () -> new FloatPower(false)); + public static RegistrySupplier GREATER_FLOAT = register("greater_float", () -> new FloatPower(true)); + public static RegistrySupplier FREEZE = register("freeze", FreezePower::new); + public static RegistrySupplier SHIELDING = register("shielding", () -> new ShieldingPower(false)); + public static RegistrySupplier GREATER_SHIELDING = register("greater_shielding", () -> new ShieldingPower(true)); + public static RegistrySupplier SLOW = register("slow", () -> new SlowPower(false)); + public static RegistrySupplier GREATER_SLOW = register("greater_slow", () -> new SlowPower(true)); + public static RegistrySupplier STONESKIN = register("stoneskin", () -> new StoneskinPower(false)); + public static RegistrySupplier GREATER_STONESKIN = register("greater_stoneskin", () -> new StoneskinPower(true)); + public static RegistrySupplier SWIFTNESS = register("swiftness", () -> new SwiftnessPower(false)); + public static RegistrySupplier GREATER_SWIFTNESS = register("greater_swiftness", () -> new SwiftnessPower(true)); + public static RegistrySupplier TRAILBLAZE = register("trailblaze", () -> new TrailblazePower(false)); + public static RegistrySupplier GREATER_TRAILBLAZE = register("greater_trailblaze", () -> new TrailblazePower(true)); + public static RegistrySupplier WEAKEN = register("weaken", () -> new WeakenPower(false)); + public static RegistrySupplier GREATER_WEAKEN = register("greater_weaken", () -> new WeakenPower(true)); + public static RegistrySupplier ZEPHYR = register("zephyr", () -> new ZephyrPower(false)); + public static RegistrySupplier GREATER_ZEPHYR = register("greater_zephyr", () -> new ZephyrPower(true)); + public static RegistrySupplier FROST_WARD = register("frost_ward", FrostWardPower::new); + public static RegistrySupplier WILDFIRE = register("wildfire", WildfirePower::new); + public static RegistrySupplier IMBUED = register("imbued", () -> new ImbuedPower(false)); + public static RegistrySupplier GREATER_IMBUED = register("greater_imbued", () -> new ImbuedPower(true)); + public static RegistrySupplier PINCUSHION = register("pincushion", () -> new PincushionPower(false)); + public static RegistrySupplier GREATER_PINCUSHION = register("greater_pincushion", () -> new PincushionPower(true)); + + public static RegistrySupplier MOMENTUM = register("momentum", () -> new MomentumPower(false)); + public static RegistrySupplier GREATER_MOMENTUM = register("greater_momentum", () -> new MomentumPower(true)); + public static RegistrySupplier WARD = register("ward", WardPower::new); + public static RegistrySupplier IMMOLATION = register("immolation", ImmolationPower::new); + + public static RegistrySupplier ECHO = register("echo", EchoPower::new); + public static RegistrySupplier BERSERK = register("berserk", BerserkPower::new); + public static RegistrySupplier RADIANCE = register("radiance", RadiancePower::new); + public static RegistrySupplier ONSLAUGHT = register("onslaught", OnslaughtPower::new); + public static RegistrySupplier NULLIFICATION = register("nullification", NullificationPower::new); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java index f9267ad7..584ffce6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java @@ -690,15 +690,15 @@ public class ItemsRegistry { (int) (runic_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)))); // SPECIAL - public static final RegistrySupplier BRIMSTONE_CLAYMORE = ITEM.register("brimstone_claymore", () -> - new FireSwordItem( + public static final RegistrySupplier BRIMSTONE_CLAYMORE = ITEM.register("brimstone_claymore", () -> + new BrimstoneClaymoreItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) brimstone_damage_modifier, brimstone_attackspeed)))); - public static final RegistrySupplier WATCHER_CLAYMORE = ITEM.register("watcher_claymore", () -> - new WatcherSwordItem( + public static final RegistrySupplier WATCHER_CLAYMORE = ITEM.register("watcher_claymore", () -> + new WatcherClaymoreItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, @@ -732,8 +732,8 @@ public class ItemsRegistry { .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) bramblethorn_damage_modifier, bramblethorn_attackspeed)))); - public static final RegistrySupplier WATCHING_WARGLAIVE = ITEM.register("watching_warglaive", () -> - new WatcherSwordItem( + public static final RegistrySupplier WATCHING_WARGLAIVE = ITEM.register("watching_warglaive", () -> + new WatchingWarglaiveItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, @@ -753,22 +753,22 @@ public class ItemsRegistry { .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) emberblade_damage_modifier, emberblade_attackspeed)))); - public static final RegistrySupplier HEARTHFLAME = ITEM.register("hearthflame", () -> - new VolcanicFurySwordItem( + public static final RegistrySupplier HEARTHFLAME = ITEM.register("hearthflame", () -> + new HearthflameSwordItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) hearthflame_damage_modifier, hearthflame_attackspeed)))); - public static final RegistrySupplier SOULKEEPER = ITEM.register("soulkeeper", () -> - new SoulSwordItem( + public static final RegistrySupplier SOULKEEPER = ITEM.register("soulkeeper", () -> + new SoulkeeperSwordItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) soulkeeper_damage_modifier, soulkeeper_attackspeed)))); - public static final RegistrySupplier TWISTED_BLADE = ITEM.register("twisted_blade", () -> - new HasteSwordItem( + public static final RegistrySupplier TWISTED_BLADE = ITEM.register("twisted_blade", () -> + new TwistedBladeItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, @@ -781,8 +781,8 @@ public class ItemsRegistry { .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, (int) soulstealer_damage_modifier, soulstealer_attackspeed)))); - public static final RegistrySupplier SOULRENDER = ITEM.register("soulrender", () -> - new RendSwordItem( + public static final RegistrySupplier SOULRENDER = ITEM.register("soulrender", () -> + new SoulrenderSwordItem( ModToolMaterial.UNIQUE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof() .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.UNIQUE, diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 9224dbfc..9b9daf2e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -36,6 +36,7 @@ import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.entity.BattleStandardEntity; +import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -45,6 +46,12 @@ public class HelperMethods { + private static final Random random = new Random(); + + public static Random random() { + return random; + } + /* * getTargetedEntity taken heavily from ZsoltMolnarrr's CombatSpells * https://github.com/ZsoltMolnarrr/SpellEngine/blob/1.19.2/common/src/main/java/net/spell_engine/utils/TargetHelper.java#L136 @@ -66,29 +73,30 @@ public static boolean isWalking(Entity entity) { return entity instanceof PlayerEntity player && (!player.isDead() && (player.isSwimming() || player.getVelocity().horizontalLength() > 0.1)); } + private static final int rgbCommon = 0xFFFFFF; + private static final int rgbRunic = 0x9D62CA; + private static final int rgbUnique = 0xE2A834; + private static final int rgbLegendary = 0xE26234; + private static final int rgbAbility = 0xE2A834; + private static final int rgbRightClick = 0x20BD69; + private static final int rgbCorrupted = 0x544988; + private static final int rgbCorruptedLight = 0x7140A3; + private static final int rgbCorruptedAbility = 0xA987C2; + private static final int rgbCorruptedText = 0x7E7883; + private static final int rgbText = 0xE0E0E0; + private static final Style COMMON = Style.EMPTY.withColor(TextColor.fromRgb(rgbCommon)); + private static final Style UNIQUE = Style.EMPTY.withColor(TextColor.fromRgb(rgbUnique)); + private static final Style LEGENDARY = Style.EMPTY.withColor(TextColor.fromRgb(rgbLegendary)); + private static final Style ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbAbility)); + private static final Style RIGHTCLICK = Style.EMPTY.withColor(TextColor.fromRgb(rgbRightClick)); + private static final Style RUNIC = Style.EMPTY.withColor(TextColor.fromRgb(rgbRunic)); + private static final Style CORRUPTED = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorrupted)); + private static final Style CORRUPTED_LIGHT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedLight)); + private static final Style CORRUPTED_ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedAbility)); + private static final Style CORRUPTED_TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedText)); + private static final Style TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbText)); + public static Style getStyle(String styleType) { - int rgbCommon = 0xFFFFFF; - int rgbRunic = 0x9D62CA; - int rgbUnique = 0xE2A834; - int rgbLegendary = 0xE26234; - int rgbAbility = 0xE2A834; - int rgbRightClick = 0x20BD69; - int rgbCorrupted = 0x544988; - int rgbCorruptedLight = 0x7140A3; - int rgbCorruptedAbility = 0xA987C2; - int rgbCorruptedText = 0x7E7883; - int rgbText = 0xE0E0E0; - Style COMMON = Style.EMPTY.withColor(TextColor.fromRgb(rgbCommon)); - Style UNIQUE = Style.EMPTY.withColor(TextColor.fromRgb(rgbUnique)); - Style LEGENDARY = Style.EMPTY.withColor(TextColor.fromRgb(rgbLegendary)); - Style ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbAbility)); - Style RIGHTCLICK = Style.EMPTY.withColor(TextColor.fromRgb(rgbRightClick)); - Style RUNIC = Style.EMPTY.withColor(TextColor.fromRgb(rgbRunic)); - Style CORRUPTED = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorrupted)); - Style CORRUPTED_LIGHT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedLight)); - Style CORRUPTED_ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedAbility)); - Style CORRUPTED_TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedText)); - Style TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbText)); return switch (styleType) { case "unique" -> UNIQUE; @@ -292,20 +300,7 @@ public static String chooseNetherfusedPower() { //Check if item is a unique 2H weapon public static boolean isUniqueTwohanded(ItemStack stack) { - return stack.isOf(ItemsRegistry.SOULPYRE.get()) || - stack.isOf(ItemsRegistry.SOULKEEPER.get()) || - stack.isOf(ItemsRegistry.TWISTED_BLADE.get()) || - stack.isOf(ItemsRegistry.HEARTHFLAME.get()) || - stack.isOf(ItemsRegistry.SOULRENDER.get()) || - stack.isOf(ItemsRegistry.SLUMBERING_LICHBLADE.get()) || - stack.isOf(ItemsRegistry.WAKING_LICHBLADE.get()) || - stack.isOf(ItemsRegistry.AWAKENED_LICHBLADE.get()) || - stack.isOf(ItemsRegistry.BRIMSTONE_CLAYMORE.get()) || - stack.isOf(ItemsRegistry.ICEWHISPER.get()) || - stack.isOf(ItemsRegistry.ARCANETHYST.get()) || - stack.isOf(ItemsRegistry.THUNDERBRAND.get()) || - stack.isOf(ItemsRegistry.WHISPERWIND.get()) || - stack.isOf(ItemsRegistry.WATCHER_CLAYMORE.get()); + return stack.getItem() instanceof TwoHandedWeapon; } //Create Box diff --git a/common/src/main/java/net/sweenus/simplyswords/util/Styles.java b/common/src/main/java/net/sweenus/simplyswords/util/Styles.java new file mode 100644 index 00000000..53145c0c --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/util/Styles.java @@ -0,0 +1,23 @@ +package net.sweenus.simplyswords.util; + +import net.minecraft.text.Style; +import net.minecraft.text.TextColor; + +public class Styles { + public static Style COMMON = color(0xFFFFFF); + public static Style RUNIC = color(0x9D62CA); + public static Style UNIQUE = color(0xE2A834); + public static Style LEGENDARY = color(0xE26234); + public static Style NETHERFUSED = LEGENDARY; + public static Style RIGHT_CLICK = color(0x20BD69); + public static Style CORRUPTED = color(0x544988); + public static Style CORRUPTED_LIGHT = color(0x7140A3); + public static Style CORRUPTED_ABILITY = color(0xA987C2); + public static Style CORRUPTED_TEXT = color(0x7E7883); + public static Style TEXT = color(0xE0E0E0); + + private static Style color(int color) { + return Style.EMPTY.withColor(TextColor.fromRgb(color)); + } + +} \ No newline at end of file diff --git a/fabric/build.gradle b/fabric/build.gradle index 2a027dd0..19f76e1c 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -42,6 +42,10 @@ repositories { maven { url = "https://jitpack.io" } maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.terraformersmc.com/releases/" } + maven { + name = "FzzyMaven" + url = "https://maven.fzzyhmstrs.me/" + } } dependencies { @@ -57,26 +61,26 @@ modImplementation "curse.maven:mythicmetals-410127:5660718" */ + modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" + //modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 + //include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 + modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { + exclude(group: "net.fabricmc.fabric-api") + } + //modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 + // Amethyst Imbuement + //modImplementation "curse.maven:amethyst-imbuement-608261:4514358" -modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" -//modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 -//include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 -modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { - exclude(group: "net.fabricmc.fabric-api") -} -//modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 - -// Amethyst Imbuement -//modImplementation "curse.maven:amethyst-imbuement-608261:4514358" + // Patchouli + modImplementation "vazkii.patchouli:Patchouli:1.21-87-FABRIC" -// Patchouli -modImplementation "vazkii.patchouli:Patchouli:1.21-87-FABRIC" + //modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) 1.21 -//modImplementation(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${rootProject.mixin_extras_version}")) 1.21 + common(project(path: ":common", configuration: "namedElements")) { transitive false } + shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } -common(project(path: ":common", configuration: "namedElements")) { transitive false } -shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } + modImplementation "me.fzzyhmstrs:fzzy_config:${project.fzz_config_version}" } processResources { @@ -129,4 +133,4 @@ publications { repositories { // Add repositories to publish to here. } -} +} \ No newline at end of file diff --git a/forge/build.gradle b/forge/build.gradle index 72baa872..39f8e7ce 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -10,7 +10,14 @@ repositories { name = 'NeoForged' url = 'https://maven.neoforged.net/releases' } - + maven { + name = "FzzyMaven" + url = "https://maven.fzzyhmstrs.me/" + } + maven { + name = 'Kotlin for Forge' + url = 'https://thedarkcolour.github.io/KotlinForForge/' + } } architectury { @@ -53,6 +60,7 @@ dependencies { common(project(path: ':common', configuration: 'namedElements')) { transitive false } shadowCommon(project(path: ':common', configuration: 'transformProductionNeoForge')) { transitive false } + modImplementation "me.fzzyhmstrs:fzzy_config:${project.fzz_config_version}+neoforge" //modImplementation ("curse.maven:gobber-301700:4007899") } @@ -106,4 +114,4 @@ publishing { repositories { // Add repositories to publish to here. } -} +} \ No newline at end of file diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java index a96a00cc..286739bd 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java @@ -1,12 +1,10 @@ package net.sweenus.simplyswords.forge; -import dev.architectury.platform.forge.EventBuses; + import me.shedaniel.autoconfig.AutoConfig; -import net.minecraftforge.client.ConfigScreenHandler; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.neoforged.fml.ModList; +import net.neoforged.fml.ModLoadingContext; +import net.neoforged.fml.common.Mod; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.ConfigWrapper; import net.sweenus.simplyswords.forge.compat.GobberCompat; @@ -14,7 +12,7 @@ @Mod(SimplySwords.MOD_ID) public class SimplySwordsForge { public SimplySwordsForge() { - // Submit our event bus to let architectury register our content on the right time - + /*// Submit our event bus to let architectury register our content on the right time - EventBuses.registerModEventBus(SimplySwords.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); SimplySwords.init(); @@ -29,7 +27,7 @@ public SimplySwordsForge() { if (ModList.get().isLoaded("gobber2")) { GobberCompat.registerModItems(); GobberCompat.GOBBER_ITEM.register(FMLJavaModLoadingContext.get().getModEventBus()); - } + }*/ } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0c66ef9a..af1a4816 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,6 +23,7 @@ spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 cloth_config_version=15.0.130 +fzz_config_version=0.5.2+1.21 mod_menu_version=11.0.2 eldritch_end_version=5035580 necronomicon_version=5041803 \ No newline at end of file From 7c8f2102fd7b9c574c9c97f1a3052bfd7c31e949 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 11 Oct 2024 09:28:37 -0400 Subject: [PATCH 08/37] Start work on runic sword --- .../simplyswords/item/RunicSwordItem.java | 110 +++++++++++++----- .../simplyswords/power/GemPowerComponent.java | 28 ++++- .../forge/SimplySwordsExpectPlatformImpl.java | 5 +- 3 files changed, 103 insertions(+), 40 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index f82f2e6f..11ad04b3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -1,7 +1,20 @@ package net.sweenus.simplyswords.item; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.StackReference; +import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.screen.slot.Slot; +import net.minecraft.util.ClickType; +import net.minecraft.world.World; +import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.PowerType; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; +import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.RunicMethods; public class RunicSwordItem extends SwordItem { @@ -11,50 +24,83 @@ public RunicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings.fireproof()); } - /* 1.21 temp + private GemPowerComponent getComponent(ItemStack stack) { + return stack.getOrDefault(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.DEFAULT); + } + @Override - public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, - StackReference cursorStackReference) { - if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { - String runicPowerSelection = HelperMethods.chooseRunicPower(); - stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); + public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { + if(!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.RUNIC))); } return false; } @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.getWorld().isClient()) { - HelperMethods.playHitSounds(attacker, target); - switch (stack.getOrCreateNbt().getString("runic_power")) { - case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); - case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); - case "slow" -> RunicMethods.postHitRunicSlow(target, attacker); - case "greater_slow" -> RunicMethods.postHitRunicGreaterSlow(target, attacker); - case "swiftness" -> RunicMethods.postHitRunicSwiftness(attacker); - case "greater_swiftness" -> RunicMethods.postHitRunicGreaterSwiftness(attacker); - case "float" -> RunicMethods.postHitRunicFloat(target, attacker); - case "greater_float" -> RunicMethods.postHitRunicGreaterFloat(target, attacker); - case "zephyr" -> RunicMethods.postHitRunicZephyr(attacker); - case "greater_zephyr" -> RunicMethods.postHitRunicGreaterZephyr(attacker); - case "shielding" -> RunicMethods.postHitRunicShielding(attacker); - case "greater_shielding" -> RunicMethods.postHitRunicGreaterShielding(attacker); - case "stoneskin" -> RunicMethods.postHitRunicStoneskin(attacker); - case "greater_stoneskin" -> RunicMethods.postHitRunicGreaterStoneskin(attacker); - case "trailblaze" -> RunicMethods.postHitRunicTrailblaze(attacker); - case "greater_trailblaze" -> RunicMethods.postHitRunicGreaterTrailblaze(attacker); - case "weaken" -> RunicMethods.postHitRunicWeaken(target, attacker); - case "greater_weaken" -> RunicMethods.postHitRunicGreaterWeaken(target, attacker); - case "imbued" -> RunicMethods.postHitRunicImbued(stack, target, attacker); - case "greater_imbued" -> RunicMethods.postHitRunicGreaterImbued(stack, target, attacker); - case "pincushion" -> RunicMethods.postHitRunicPinCushion(target, attacker); - case "greater_pincushion" -> RunicMethods.postHitRunicGreaterPinCushion(target, attacker); - } + if (!attacker.getWorld().isClient) { + GemPowerComponent component = getComponent(stack); + HelperMethods.playHitSounds(attacker, target); + component.postHit(stack, target, attacker); } + return super.postHit(stack, target, attacker); } + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + if (!world.isClient) { + GemPowerComponent component = getComponent(stack); + + } + RunicMethods.stoppedUsingRunicMomentum(stack, user); + } + + /* 1.21 temp + @Override + public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, + StackReference cursorStackReference) { + if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { + String runicPowerSelection = HelperMethods.chooseRunicPower(); + stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); + } + return false; + } + + @Override + public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + if (!attacker.getWorld().isClient()) { + HelperMethods.playHitSounds(attacker, target); + + switch (stack.getOrCreateNbt().getString("runic_power")) { + case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); + case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); + case "slow" -> RunicMethods.postHitRunicSlow(target, attacker); + case "greater_slow" -> RunicMethods.postHitRunicGreaterSlow(target, attacker); + case "swiftness" -> RunicMethods.postHitRunicSwiftness(attacker); + case "greater_swiftness" -> RunicMethods.postHitRunicGreaterSwiftness(attacker); + case "float" -> RunicMethods.postHitRunicFloat(target, attacker); + case "greater_float" -> RunicMethods.postHitRunicGreaterFloat(target, attacker); + case "zephyr" -> RunicMethods.postHitRunicZephyr(attacker); + case "greater_zephyr" -> RunicMethods.postHitRunicGreaterZephyr(attacker); + case "shielding" -> RunicMethods.postHitRunicShielding(attacker); + case "greater_shielding" -> RunicMethods.postHitRunicGreaterShielding(attacker); + case "stoneskin" -> RunicMethods.postHitRunicStoneskin(attacker); + case "greater_stoneskin" -> RunicMethods.postHitRunicGreaterStoneskin(attacker); + case "trailblaze" -> RunicMethods.postHitRunicTrailblaze(attacker); + case "greater_trailblaze" -> RunicMethods.postHitRunicGreaterTrailblaze(attacker); + case "weaken" -> RunicMethods.postHitRunicWeaken(target, attacker); + case "greater_weaken" -> RunicMethods.postHitRunicGreaterWeaken(target, attacker); + case "imbued" -> RunicMethods.postHitRunicImbued(stack, target, attacker); + case "greater_imbued" -> RunicMethods.postHitRunicGreaterImbued(stack, target, attacker); + case "pincushion" -> RunicMethods.postHitRunicPinCushion(target, attacker); + case "greater_pincushion" -> RunicMethods.postHitRunicGreaterPinCushion(target, attacker); + } + } + return super.postHit(stack, target, attacker); + } + @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient && stack.getOrCreateNbt().getString("runic_power").contains("momentum")) diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java index d82beb64..cd28f09e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java @@ -17,6 +17,8 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.registry.GemPowerRegistry; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -43,7 +45,17 @@ public record GemPowerComponent(boolean hasRunicPower, boolean hasNetherPower, R GemPowerComponent::new ); - void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + public static final GemPowerComponent DEFAULT = new GemPowerComponent(false, false, GemPowerRegistry.EMPTY, GemPowerRegistry.EMPTY); + + public static GemPowerComponent runic(@NotNull RegistryEntry power) { + return new GemPowerComponent(true, false, power, GemPowerRegistry.EMPTY); + } + + public static GemPowerComponent create(@Nullable RegistryEntry runic, @Nullable RegistryEntry nether) { + return new GemPowerComponent(runic != null, nether != null, runic != null ? runic : GemPowerRegistry.EMPTY, nether != null ? nether : GemPowerRegistry.EMPTY); + } + + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { runicPower.value().postHit(stack, target, attacker); netherPower.value().postHit(stack, target, attacker); } @@ -59,28 +71,32 @@ TypedActionResult use(World world, PlayerEntity user, Hand hand) { } } - void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { runicPower.value().usageTick(world, user, stack, remainingUseTicks); netherPower.value().usageTick(world, user, stack, remainingUseTicks); } - void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { runicPower.value().onStoppedUsing(stack, world, user, remainingUseTicks); netherPower.value().onStoppedUsing(stack, world, user, remainingUseTicks); } - void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { + public int getMaxUseTime(ItemStack stack) { + return Math.max(runicPower.value().getMaxUseTime(stack), netherPower.value().getMaxUseTime(stack)); + } + + public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { if (!world.isClient) { runicPower.value().inventoryTick(stack, world, user, slot, selected); netherPower.value().inventoryTick(stack, world, user, slot, selected); } } - void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type) { + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type) { appendTooltip(itemStack, tooltipContext, tooltip, type, false); } - void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { if (hasRunicPower) { runicPower.value().appendTooltip(itemStack, tooltipContext, tooltip, type, isRunic); if (hasNetherPower) { diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsExpectPlatformImpl.java b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsExpectPlatformImpl.java index 16a21ec4..89f1d8f6 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsExpectPlatformImpl.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsExpectPlatformImpl.java @@ -1,7 +1,8 @@ package net.sweenus.simplyswords.forge; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.loading.FMLPaths; + +import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLPaths; import net.sweenus.simplyswords.SimplySwordsExpectPlatform; import java.nio.file.Path; From f09944d5865442d1bccbe5ce9295cdf41d736834 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:27:07 -0400 Subject: [PATCH 09/37] Finish reimpl of RunicSword pending tests --- .../simplyswords/item/RunicSwordItem.java | 497 ++++++++++-------- 1 file changed, 286 insertions(+), 211 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index 11ad04b3..b65030cf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -9,25 +9,21 @@ import net.minecraft.screen.slot.Slot; import net.minecraft.util.ClickType; import net.minecraft.world.World; +import net.sweenus.simplyswords.api.SimplySwordsApi; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.RunicMethods; +import net.sweenus.simplyswords.util.Styles; public class RunicSwordItem extends SwordItem { - public static int maxUseTime; - public RunicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings.fireproof()); } - private GemPowerComponent getComponent(ItemStack stack) { - return stack.getOrDefault(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.DEFAULT); - } - @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { if(!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { @@ -40,7 +36,7 @@ public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, Click public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient) { - GemPowerComponent component = getComponent(stack); + GemPowerComponent component = SimplySwordsApi.getComponent(stack); HelperMethods.playHitSounds(attacker, target); component.postHit(stack, target, attacker); } @@ -51,121 +47,41 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient) { - GemPowerComponent component = getComponent(stack); - + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + component.onStoppedUsing(stack, world, user, remainingUseTicks) } - RunicMethods.stoppedUsingRunicMomentum(stack, user); - } - - /* 1.21 temp - @Override - public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, - StackReference cursorStackReference) { - if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { - String runicPowerSelection = HelperMethods.chooseRunicPower(); - stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); - } - return false; - } - - @Override - public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.getWorld().isClient()) { - HelperMethods.playHitSounds(attacker, target); - - switch (stack.getOrCreateNbt().getString("runic_power")) { - case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); - case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); - case "slow" -> RunicMethods.postHitRunicSlow(target, attacker); - case "greater_slow" -> RunicMethods.postHitRunicGreaterSlow(target, attacker); - case "swiftness" -> RunicMethods.postHitRunicSwiftness(attacker); - case "greater_swiftness" -> RunicMethods.postHitRunicGreaterSwiftness(attacker); - case "float" -> RunicMethods.postHitRunicFloat(target, attacker); - case "greater_float" -> RunicMethods.postHitRunicGreaterFloat(target, attacker); - case "zephyr" -> RunicMethods.postHitRunicZephyr(attacker); - case "greater_zephyr" -> RunicMethods.postHitRunicGreaterZephyr(attacker); - case "shielding" -> RunicMethods.postHitRunicShielding(attacker); - case "greater_shielding" -> RunicMethods.postHitRunicGreaterShielding(attacker); - case "stoneskin" -> RunicMethods.postHitRunicStoneskin(attacker); - case "greater_stoneskin" -> RunicMethods.postHitRunicGreaterStoneskin(attacker); - case "trailblaze" -> RunicMethods.postHitRunicTrailblaze(attacker); - case "greater_trailblaze" -> RunicMethods.postHitRunicGreaterTrailblaze(attacker); - case "weaken" -> RunicMethods.postHitRunicWeaken(target, attacker); - case "greater_weaken" -> RunicMethods.postHitRunicGreaterWeaken(target, attacker); - case "imbued" -> RunicMethods.postHitRunicImbued(stack, target, attacker); - case "greater_imbued" -> RunicMethods.postHitRunicGreaterImbued(stack, target, attacker); - case "pincushion" -> RunicMethods.postHitRunicPinCushion(target, attacker); - case "greater_pincushion" -> RunicMethods.postHitRunicGreaterPinCushion(target, attacker); - } - } - return super.postHit(stack, target, attacker); - } - - @Override - public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { - if (!world.isClient && stack.getOrCreateNbt().getString("runic_power").contains("momentum")) - RunicMethods.stoppedUsingRunicMomentum(stack, user); } @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient) { - if (stack.getOrCreateNbt().getString("runic_power").equals("momentum")) - RunicMethods.usageTickRunicMomentum(stack, user, remainingUseTicks); - else if (stack.getOrCreateNbt().getString("runic_power").equals("greater_momentum")) - RunicMethods.usageTickRunicGreaterMomentum(stack, user, remainingUseTicks); + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + component.usageTick(world, user, stack, remainingUseTicks) } } + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + return component.getMaxUseTime(stack); + } + @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { ItemStack itemStack = user.getStackInHand(hand); if (itemStack.getDamage() < itemStack.getMaxDamage() - 1) { - switch (itemStack.getOrCreateNbt().getString("runic_power")) { - case "momentum", "greater_momentum" -> { - user.setCurrentHand(hand); - world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_WIND_SHOOT_FLYBY_02.get(), - user.getSoundCategory(), 0.3f, 1.2f); - return TypedActionResult.consume(itemStack); - } - case "ward" -> { - user.setCurrentHand(hand); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.WARD.get(), 120, 0), user); - user.getItemCooldownManager().set(itemStack.getItem(), 120); - user.setHealth(user.getHealth() / 2); - world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - user.getSoundCategory(), 0.3f, 1.2f); - return TypedActionResult.consume(itemStack); - } - case "immolation" -> { - user.setCurrentHand(hand); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION.get(), 36000, 0), user); - user.getItemCooldownManager().set(itemStack.getItem(), 40); - world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - user.getSoundCategory(), 0.3f, 0.6f); - return TypedActionResult.consume(itemStack); - } - } + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + return component.use(world, user, hand); } return TypedActionResult.fail(itemStack); } - @Override - public int getMaxUseTime(ItemStack stack, LivingEntity user) { - String power = stack.getOrCreateNbt().getString("runic_power"); - if (power.equals("momentum")) maxUseTime = 15; - else if (power.equals("ward") || power.equals("immolation")) maxUseTime = 1; - - return maxUseTime; - } - @Override public UseAction getUseAction(ItemStack stack) { return UseAction.BLOCK; } - @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { if ((entity instanceof LivingEntity user) && (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack || user.getEquippedStack(EquipmentSlot.OFFHAND) == stack)) { @@ -180,12 +96,8 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, -3 + randomx, 0.0, -3 + randomz); } if (!world.isClient) { - switch (stack.getOrCreateNbt().getString("runic_power")) { - case "unstable" -> RunicMethods.inventoryTickRunicUnstable(user); - case "active_defence" -> - RunicMethods.inventoryTickRunicActiveDefence(world, user); - case "frost_ward" -> RunicMethods.inventoryTickRunicFrostWard(world, user); - } + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + component.inventoryTick(stack, world, user, slot, selected); } } super.inventoryTick(stack, world, entity, slot, selected); @@ -195,130 +107,293 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; - String runicPowerSelection = HelperMethods.chooseRunicPower(); - stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); + if(!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.RUNIC))); + } } @Override public Text getName(ItemStack stack) { - Style RUNIC = HelperMethods.getStyle("runic"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(RUNIC); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.RUNIC); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style RUNIC = HelperMethods.getStyle("runic"); - Style TEXT = HelperMethods.getStyle("text"); + tooltip.add(Text.literal("").setStyle(Styles.TEXT)); - tooltip.add(Text.literal("").setStyle(TEXT)); - - if (itemStack.getOrCreateNbt().getString("runic_power").isEmpty()) { + GemPowerComponent component = SimplySwordsApi.getComponent(stack); + + if (component.isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); } else { - if (itemStack.getOrCreateNbt().getString("runic_power").contains("greater")) { - tooltip.add(Text.translatable("item.simplyswords.greater_runic_power").setStyle(RUNIC).formatted(Formatting.BOLD)); - } - switch (itemStack.getOrCreateNbt().getString("runic_power")) { - case "freeze" -> { - tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(TEXT)); - } - case "wildfire" -> { - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(TEXT)); - } - case "slow", "greater_slow" -> { - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(TEXT)); - } - case "swiftness", "greater_swiftness" -> { - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(TEXT)); - } - case "float", "greater_float" -> { - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(TEXT)); - } - case "zephyr", "greater_zephyr" -> { - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(TEXT)); - } - case "shielding", "greater_shielding" -> { - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(TEXT)); - } - case "stoneskin", "greater_stoneskin" -> { - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(TEXT)); - } - case "frost_ward" -> { - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(TEXT)); - } - case "trailblaze", "greater_trailblaze" -> { - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(TEXT)); - } - case "active_defence" -> { - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(TEXT)); - } - case "weaken", "greater_weaken" -> { - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(TEXT)); - } - case "unstable" -> { - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(TEXT)); + component.appendTooltip(itemStack, tooltipContext, tooltip, type, true) + } + } + + + /* 1.21 temp + @Override + public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, + StackReference cursorStackReference) { + if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { + String runicPowerSelection = HelperMethods.chooseRunicPower(); + stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); } - case "momentum", "greater_momentum" -> { - tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip3").setStyle(TEXT)); + return false; + } + + @Override + public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + if (!attacker.getWorld().isClient()) { + HelperMethods.playHitSounds(attacker, target); + + switch (stack.getOrCreateNbt().getString("runic_power")) { + case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); + case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); + case "slow" -> RunicMethods.postHitRunicSlow(target, attacker); + case "greater_slow" -> RunicMethods.postHitRunicGreaterSlow(target, attacker); + case "swiftness" -> RunicMethods.postHitRunicSwiftness(attacker); + case "greater_swiftness" -> RunicMethods.postHitRunicGreaterSwiftness(attacker); + case "float" -> RunicMethods.postHitRunicFloat(target, attacker); + case "greater_float" -> RunicMethods.postHitRunicGreaterFloat(target, attacker); + case "zephyr" -> RunicMethods.postHitRunicZephyr(attacker); + case "greater_zephyr" -> RunicMethods.postHitRunicGreaterZephyr(attacker); + case "shielding" -> RunicMethods.postHitRunicShielding(attacker); + case "greater_shielding" -> RunicMethods.postHitRunicGreaterShielding(attacker); + case "stoneskin" -> RunicMethods.postHitRunicStoneskin(attacker); + case "greater_stoneskin" -> RunicMethods.postHitRunicGreaterStoneskin(attacker); + case "trailblaze" -> RunicMethods.postHitRunicTrailblaze(attacker); + case "greater_trailblaze" -> RunicMethods.postHitRunicGreaterTrailblaze(attacker); + case "weaken" -> RunicMethods.postHitRunicWeaken(target, attacker); + case "greater_weaken" -> RunicMethods.postHitRunicGreaterWeaken(target, attacker); + case "imbued" -> RunicMethods.postHitRunicImbued(stack, target, attacker); + case "greater_imbued" -> RunicMethods.postHitRunicGreaterImbued(stack, target, attacker); + case "pincushion" -> RunicMethods.postHitRunicPinCushion(target, attacker); + case "greater_pincushion" -> RunicMethods.postHitRunicGreaterPinCushion(target, attacker); + } } - case "imbued", "greater_imbued" -> { - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(TEXT)); + return super.postHit(stack, target, attacker); + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + if (!world.isClient && stack.getOrCreateNbt().getString("runic_power").contains("momentum")) + RunicMethods.stoppedUsingRunicMomentum(stack, user); + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + if (!world.isClient) { + if (stack.getOrCreateNbt().getString("runic_power").equals("momentum")) + RunicMethods.usageTickRunicMomentum(stack, user, remainingUseTicks); + else if (stack.getOrCreateNbt().getString("runic_power").equals("greater_momentum")) + RunicMethods.usageTickRunicGreaterMomentum(stack, user, remainingUseTicks); } - case "pincushion", "greater_pincushion" -> { - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip3").setStyle(TEXT)); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + ItemStack itemStack = user.getStackInHand(hand); + + if (itemStack.getDamage() < itemStack.getMaxDamage() - 1) { + switch (itemStack.getOrCreateNbt().getString("runic_power")) { + case "momentum", "greater_momentum" -> { + user.setCurrentHand(hand); + world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_WIND_SHOOT_FLYBY_02.get(), + user.getSoundCategory(), 0.3f, 1.2f); + return TypedActionResult.consume(itemStack); + } + case "ward" -> { + user.setCurrentHand(hand); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.WARD.get(), 120, 0), user); + user.getItemCooldownManager().set(itemStack.getItem(), 120); + user.setHealth(user.getHealth() / 2); + world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + user.getSoundCategory(), 0.3f, 1.2f); + return TypedActionResult.consume(itemStack); + } + case "immolation" -> { + user.setCurrentHand(hand); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION.get(), 36000, 0), user); + user.getItemCooldownManager().set(itemStack.getItem(), 40); + world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), + user.getSoundCategory(), 0.3f, 0.6f); + return TypedActionResult.consume(itemStack); + } + } } - case "ward" -> { - tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip4").setStyle(TEXT)); + return TypedActionResult.fail(itemStack); + } + + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + String power = stack.getOrCreateNbt().getString("runic_power"); + if (power.equals("momentum")) maxUseTime = 15; + else if (power.equals("ward") || power.equals("immolation")) maxUseTime = 1; + + return maxUseTime; + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.BLOCK; + } + + + @Override + public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { + if ((entity instanceof LivingEntity user) && (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack || user.getEquippedStack(EquipmentSlot.OFFHAND) == stack)) { + if (entity.age % 4 == 0 && Config.getBoolean("enablePassiveParticles", "General", ConfigDefaultValues.enablePassiveParticles)) { + float randomx = (float) (Math.random() * 6); + float randomz = (float) (Math.random() * 6); + + world.addParticle(ParticleTypes.ENCHANT, + user.getX() + user.getHandPosOffset(this).getX(), + user.getY() + user.getHandPosOffset(this).getY() + 1.3, + user.getZ() + user.getHandPosOffset(this).getZ(), + -3 + randomx, 0.0, -3 + randomz); + } + if (!world.isClient) { + switch (stack.getOrCreateNbt().getString("runic_power")) { + case "unstable" -> RunicMethods.inventoryTickRunicUnstable(user); + case "active_defence" -> + RunicMethods.inventoryTickRunicActiveDefence(world, user); + case "frost_ward" -> RunicMethods.inventoryTickRunicFrostWard(world, user); + } + } } - case "immolation" -> { - tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip4").setStyle(TEXT)); + super.inventoryTick(stack, world, entity, slot, selected); + } + + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + if (world.isClient) return; + + String runicPowerSelection = HelperMethods.chooseRunicPower(); + stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); + } + + @Override + public Text getName(ItemStack stack) { + Style RUNIC = HelperMethods.getStyle("runic"); + return Text.translatable(this.getTranslationKey(stack)).setStyle(RUNIC); + } + + @Override + public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { + Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); + Style RUNIC = HelperMethods.getStyle("runic"); + Style TEXT = HelperMethods.getStyle("text"); + + tooltip.add(Text.literal("").setStyle(TEXT)); + + if (itemStack.getOrCreateNbt().getString("runic_power").isEmpty()) { + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); + } else { + if (itemStack.getOrCreateNbt().getString("runic_power").contains("greater")) { + tooltip.add(Text.translatable("item.simplyswords.greater_runic_power").setStyle(RUNIC).formatted(Formatting.BOLD)); + } + switch (itemStack.getOrCreateNbt().getString("runic_power")) { + case "freeze" -> { + tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(TEXT)); + } + case "wildfire" -> { + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(TEXT)); + } + case "slow", "greater_slow" -> { + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(TEXT)); + } + case "swiftness", "greater_swiftness" -> { + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(TEXT)); + } + case "float", "greater_float" -> { + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(TEXT)); + } + case "zephyr", "greater_zephyr" -> { + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(TEXT)); + } + case "shielding", "greater_shielding" -> { + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(TEXT)); + } + case "stoneskin", "greater_stoneskin" -> { + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(TEXT)); + } + case "frost_ward" -> { + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(TEXT)); + } + case "trailblaze", "greater_trailblaze" -> { + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(TEXT)); + } + case "active_defence" -> { + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(TEXT)); + } + case "weaken", "greater_weaken" -> { + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(TEXT)); + } + case "unstable" -> { + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(TEXT)); + } + case "momentum", "greater_momentum" -> { + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip3").setStyle(TEXT)); + } + case "imbued", "greater_imbued" -> { + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(TEXT)); + } + case "pincushion", "greater_pincushion" -> { + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip3").setStyle(TEXT)); + } + case "ward" -> { + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.literal("")); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wardsworditem.tooltip4").setStyle(TEXT)); + } + case "immolation" -> { + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip1").setStyle(RUNIC)); + tooltip.add(Text.literal("")); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.immolationsworditem.tooltip4").setStyle(TEXT)); + } + } } } - } - } */ -} \ No newline at end of file +} From 7ff1f8efd0f592cb409eafe74ce59824c07cb4a1 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:44:01 -0400 Subject: [PATCH 10/37] Reimpl RunefusedGem pending test --- .../simplyswords/item/RunefusedGemItem.java | 121 +++--------------- 1 file changed, 20 insertions(+), 101 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index ce0618b2..880f9ee5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -11,7 +11,13 @@ import net.minecraft.util.ClickType; import net.minecraft.util.Rarity; import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.api.SimplySwordsApi; +import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.PowerType; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -24,130 +30,43 @@ public RunefusedGemItem() { @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { - /* 1.21 temp - if (stack.getOrCreateNbt().getString("runic_power").isEmpty()) { - - String runefusedPowerSelection = HelperMethods.chooseRunefusedPower(); - stack.getOrCreateNbt().putString("runic_power", runefusedPowerSelection); + + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.RUNEFUSED))); } - - */ return false; } - /* 1.21 temp + @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; - String runefusedPowerSelection = HelperMethods.chooseRunefusedPower(); - stack.getOrCreateNbt().putString("runic_power", runefusedPowerSelection); + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.RUNEFUSED))); + } } - */ - @Override public Text getName(ItemStack stack) { - Style RUNIC = HelperMethods.getStyle("runic"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(RUNIC); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.RUNIC); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RUNIC = HelperMethods.getStyle("runic"); - Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); - /* 1.21 temp - if (itemStack.getOrCreateNbt().getString("runic_power").isEmpty()) { - tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); + GemPowerComponent component = SimplySwordsApi.getComponent(itemStack); + + if(component.isEmpty()) { + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(Styles.TEXT)); } else { - if (itemStack.getOrCreateNbt().getString("runic_power").contains("greater")) { - tooltip.add(Text.translatable("item.simplyswords.greater_runic_power").setStyle(RUNIC)); - } - switch (itemStack.getOrCreateNbt().getString("runic_power")) { - case "freeze" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.freeze").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(TEXT)); - } - case "wildfire" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.wildfire").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(TEXT)); - } - case "slow", "greater_slow" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.slow").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(TEXT)); - } - case "swiftness", "greater_swiftness" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.swiftness").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(TEXT)); - } - case "float", "greater_float" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.float").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(TEXT)); - } - case "zephyr", "greater_zephyr" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.zephyr").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(TEXT)); - } - case "shielding", "greater_shielding" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.shielding").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(TEXT)); - } - case "stoneskin", "greater_stoneskin" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.stoneskin").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(TEXT)); - } - case "frost_ward" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.frost_ward").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(TEXT)); - } - case "trailblaze", "greater_trailblaze" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.trailblaze").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(TEXT)); - } - case "active_defence" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.active_defence").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(TEXT)); - } - case "weaken", "greater_weaken" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.weaken").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(TEXT)); - } - case "unstable" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.unstable").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(TEXT)); - } - case "imbued", "greater_imbued" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.imbued").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(TEXT)); - } - case "pincushion", "greater_pincushion" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.pincushion").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip3").setStyle(TEXT)); - } - } + component.appendTooltip(itemStack, tooltipContext, tooltip, type); } tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); - - */ } } From 9234c4c9c36d5ebbb1d0a3aefe1d18cc6d65d899 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:57:00 -0400 Subject: [PATCH 11/37] Re impl NetherfusedGemItem pending test --- .../simplyswords/item/NetherfusedGemItem.java | 155 +++--------------- 1 file changed, 19 insertions(+), 136 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index af3e3e7b..ec1c35a1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -11,7 +11,13 @@ import net.minecraft.util.ClickType; import net.minecraft.util.Rarity; import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.api.SimplySwordsApi; +import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.PowerType; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -24,166 +30,43 @@ public NetherfusedGemItem() { @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { - /* 1.21 temp - - if (stack.getOrCreateNbt().getString("nether_power").isEmpty()) { - - String netherfusedPowerSelection = HelperMethods.chooseNetherfusedPower(); - stack.getOrCreateNbt().putString("nether_power", netherfusedPowerSelection); + + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.nether(GemPowerRegistry.gemRandomPower(PowerType.NETHER))); } - */ - return false; } - /* 1.21 temp @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; - String netherfusedPowerSelection = HelperMethods.chooseNetherfusedPower(); - stack.getOrCreateNbt().putString("nether_power", netherfusedPowerSelection); - + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.NETHER))); + } } - */ - @Override public Text getName(ItemStack stack) { - Style LEGENDARY = HelperMethods.getStyle("legendary"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(LEGENDARY); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.NETHERFUSED); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style LEGENDARY = HelperMethods.getStyle("legendary"); - Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); - /* 1.21 temp - if (itemStack.getOrCreateNbt().getString("nether_power").isEmpty()) { - tooltip.add(Text.translatable("item.simplyswords.netherfused_gem.tooltip1").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); + GemPowerComponent component = SimplySwordsApi.getComponent(itemStack); + + if(component.isEmpty()) { + tooltip.add(Text.translatable("item.simplyswords.netherfused_gem.tooltip1").setStyle(Styles.LEGENDARY)); + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(Styles.TEXT)); } else { - if (itemStack.getOrCreateNbt().getString("nether_power").contains("greater")) { - tooltip.add(Text.translatable("item.simplyswords.greater_nether_power").setStyle(LEGENDARY)); - } - switch (itemStack.getOrCreateNbt().getString("nether_power")) { - case "echo" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description3").setStyle(TEXT)); - } - case "berserk" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description3").setStyle(TEXT)); - } - case "radiance" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description3").setStyle(TEXT)); - } - case "onslaught" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6").setStyle(TEXT)); - } - case "nullification" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description5").setStyle(TEXT)); - } - case "precise" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description3").setStyle(TEXT)); - } - case "mighty" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description3").setStyle(TEXT)); - } - case "stealthy" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy.description2").setStyle(TEXT)); - } - case "renewed" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description4").setStyle(TEXT)); - } - case "accelerant" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description4").setStyle(TEXT)); - } - case "leaping" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description3").setStyle(TEXT)); - } - case "spellshield" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield.description2").setStyle(TEXT)); - } - case "spellforged" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description3").setStyle(TEXT)); - } - case "soulshock" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description3").setStyle(TEXT)); - } - case "spell_standard" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description3").setStyle(TEXT)); - } - case "war_standard" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description3").setStyle(TEXT)); - } - case "deception" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception").setStyle(LEGENDARY)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description3").setStyle(TEXT)); - } - } + component.appendTooltip(itemStack, tooltipContext, tooltip, type); } tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); - - */ } } From 9fd122db53f93816e948b685b793e4b490830441 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:08:43 -0400 Subject: [PATCH 12/37] Update GemPowerComponent with new helpers and polish tooltip --- .../simplyswords/power/GemPowerComponent.java | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java index cd28f09e..9a02f5d8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java @@ -17,6 +17,7 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.registry.GemPowerRegistry; +import net.sweenus.simplyswords.util.Styles; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,10 +52,30 @@ public static GemPowerComponent runic(@NotNull RegistryEntry power) { return new GemPowerComponent(true, false, power, GemPowerRegistry.EMPTY); } + public static GemPowerComponent nether(@NotNull RegistryEntry power) { + return new GemPowerComponent(false, true, GemPowerRegistry.EMPTY, power); + } + public static GemPowerComponent create(@Nullable RegistryEntry runic, @Nullable RegistryEntry nether) { return new GemPowerComponent(runic != null, nether != null, runic != null ? runic : GemPowerRegistry.EMPTY, nether != null ? nether : GemPowerRegistry.EMPTY); } + public static GemPowerComponent createEmpty(boolean hasRunic, boolean hasNether) { + return new GemPowerComponent(hasRunic, hasNether, GemPowerRegistry.EMPTY, GemPowerRegistry.EMPTY); + } + + public GemPowerComponent fill(BiFunction, RegistryEntry> runicFiller, Function, RegistryEntry> netherFiller) { + return new GemPowerComponent(this.hasRunicPower, this.hasNetherPower, runicFiller.apply(this.hasRunicPower, this.runicPower), netherFiller.apply(this.hasNetherPower, this.netherPower)); + } + + public boolean canBeFilled() { + return hasRunicPower || hasNetherPower; + } + + public boolean isEmpty() { + return runicPower.value().isEmpty() && netherPower.value().isEmpty(); + } + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { runicPower.value().postHit(stack, target, attacker); netherPower.value().postHit(stack, target, attacker); @@ -86,10 +107,8 @@ public int getMaxUseTime(ItemStack stack) { } public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { - if (!world.isClient) { - runicPower.value().inventoryTick(stack, world, user, slot, selected); - netherPower.value().inventoryTick(stack, world, user, slot, selected); - } + runicPower.value().inventoryTick(stack, world, user, slot, selected); + netherPower.value().inventoryTick(stack, world, user, slot, selected); } public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type) { @@ -97,14 +116,25 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex } public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) { - if (hasRunicPower) { + if (runicPower.value().isGreater()) { + tooltip.add(Text.translatable("item.simplyswords.greater_runic_power").setStyle(Styles.RUNIC)); + } + if (!runicPower.value().isEmpty()) { runicPower.value().appendTooltip(itemStack, tooltipContext, tooltip, type, isRunic); - if (hasNetherPower) { + if (!netherPower.value().isEmpty()) { tooltip.add(Text.literal("")); } + } else if (!isRunic && hasRunicPower) { + tooltip.add(Text.translatable("item.simplyswords.empty_runic_slot").formatted(Formatting.GRAY)); + } + + if (netherPower.value().isGreater()) { + tooltip.add(Text.translatable("item.simplyswords.greater_nether_power").setStyle(Styles.NETHERFUSED)); } - if (hasNetherPower) { + if (!netherPower.value().isEmpty()) { netherPower.value().appendTooltip(itemStack, tooltipContext, tooltip, type, isRunic); + } else if (!isRunic && hasNetherPower) { + tooltip.add(Text.translatable("item.simplyswords.empty_nether_slot").formatted(Formatting.GRAY)); } } -} \ No newline at end of file +} From 1e54c078297defe20068833cbc74659722b818bd Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:12:38 -0400 Subject: [PATCH 13/37] Create GemPowerFiller.java --- .../java/net/sweenus/simplyswords/power/GemPowerFiller.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java new file mode 100644 index 00000000..2de81e2e --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java @@ -0,0 +1,5 @@ +package net.sweenus.simplyswords.power; + +public interface GemPowerFiller { + GemPowerComponent fill(GemPowerComponent component); +} From c90554b24da17657156c43ded7816a66b095f18c Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:14:10 -0400 Subject: [PATCH 14/37] Update GemPowerFiller with itemstack --- .../java/net/sweenus/simplyswords/power/GemPowerFiller.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java index 2de81e2e..0c53b4fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.power; +import net.minecraft.item.ItemStack; + public interface GemPowerFiller { - GemPowerComponent fill(GemPowerComponent component); + GemPowerComponent fill(ItemStack stack, GemPowerComponent component); } From 6b0e223b3243a5e39e32a36210bb119f7e9723f1 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:21:02 -0400 Subject: [PATCH 15/37] Update NetherfusedGemItem with GemFiller interface --- .../simplyswords/item/NetherfusedGemItem.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index ec1c35a1..c957c236 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -13,6 +13,7 @@ import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.api.SimplySwordsApi; import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.GemPowerFiller; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; @@ -21,12 +22,21 @@ import java.util.List; -public class NetherfusedGemItem extends Item { +public class NetherfusedGemItem extends Item implements GemPowerFiller { public NetherfusedGemItem() { super(new Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof().maxCount(1)); } + @Override + public GemPowerComponent fill(ItemStack stack, GemPowerComponent component) { + GemPowerComponent gemComponent = SimplSwordsApi.getComponent(stack); + return component.fill( + (hasRunic, oldRunic) -> oldRunic, + (hasNether, oldNether) -> (hasNether && gemComponent.hasNetherPower() && oldNether.value().isEmpty()) ? gemComponent.netherPower() : oldNether + ); + } + @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { From ec70db454639319c9032416a1a02c69a97d42106 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:25:54 -0400 Subject: [PATCH 16/37] Update GemPowerFiller with validation result --- .../java/net/sweenus/simplyswords/power/GemPowerFiller.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java index 0c53b4fc..af980967 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerFiller.java @@ -1,7 +1,8 @@ package net.sweenus.simplyswords.power; +import me.fzzyhmstrs.fzzy_config.util.ValidationResult; import net.minecraft.item.ItemStack; public interface GemPowerFiller { - GemPowerComponent fill(ItemStack stack, GemPowerComponent component); + ValidationResult fill(ItemStack stack, GemPowerComponent component); } From 5cc4516e49b2bff52de420714711b006e160ef78 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:30:00 -0400 Subject: [PATCH 17/37] Update RunefusedGemItem with updated filler method --- .../simplyswords/item/RunefusedGemItem.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index 880f9ee5..2eca2abd 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -21,12 +21,24 @@ import java.util.List; -public class RunefusedGemItem extends Item { +public class RunefusedGemItem extends Item implements GemPowerFiller { public RunefusedGemItem() { super(new Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC).fireproof().maxCount(1)); } + @Override + public ValidationResult fill(ItemStack stack, GemPowerComponent component) { + GemPowerComponent gemComponent = SimplSwordsApi.getComponent(stack); + if (!gemComponent.hasRunicPower() || !component.runicPower().value().isEmpty() || !component.hasRunicPower()) { + return ValidationResult.error(component, "Can't socket to the provided component"); + } + return ValidationResult.success(component.fill( + (hasRunic, oldRunic) -> gemComponent.runicPower(), + (hasNether, oldNether) -> oldNether + )); + } + @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { From a7090194771fd5a3810b79b3531776052730079c Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:30:29 -0400 Subject: [PATCH 18/37] Update RunefusedGemItem.java --- .../java/net/sweenus/simplyswords/item/RunefusedGemItem.java | 1 + 1 file changed, 1 insertion(+) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index 2eca2abd..e57e5a4a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item; +import me.fzzyhmstrs.fzzy_config.util.ValidationResult; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; From 6ba9bfccc00dd5155bf42042bfd35628ee1674b8 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:32:03 -0400 Subject: [PATCH 19/37] Update NetherfusedGemItem with new filler interface --- .../simplyswords/item/NetherfusedGemItem.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index c957c236..986e7eea 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item; +import me.fzzyhmstrs.fzzy_config.util.ValidationResult; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.Item; @@ -29,12 +30,15 @@ public NetherfusedGemItem() { } @Override - public GemPowerComponent fill(ItemStack stack, GemPowerComponent component) { + public ValidationResult fill(ItemStack stack, GemPowerComponent component) { GemPowerComponent gemComponent = SimplSwordsApi.getComponent(stack); - return component.fill( + if (!gemComponent.hasNetherPower() || !component.netherPower().value().isEmpty() || !component.hasNetherPower()) { + return ValidationResult.error(component, "Can't socket to the provided component"); + } + return ValidationResult.success(component.fill( (hasRunic, oldRunic) -> oldRunic, - (hasNether, oldNether) -> (hasNether && gemComponent.hasNetherPower() && oldNether.value().isEmpty()) ? gemComponent.netherPower() : oldNether - ); + (hasNether, oldNether) -> gemComponent.netherPower() + )); } @Override From d323d3926f3aba62fab24f7cd3b49b5f014dca3a Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 11 Oct 2024 12:44:38 -0400 Subject: [PATCH 20/37] reimpl SimplySwordsAPI pending test --- .../simplyswords/api/SimplySwordsAPI.java | 113 ++++++------------ 1 file changed, 38 insertions(+), 75 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java index 190ca62a..554595ad 100644 --- a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java +++ b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.api; +import me.fzzyhmstrs.fzzy_config.util.ValidationResult; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -12,6 +13,9 @@ import net.minecraft.text.Text; import net.minecraft.world.World; import net.sweenus.simplyswords.entity.BattleStandardEntity; +import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.GemPowerFiller; +import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.EntityRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -62,6 +66,10 @@ public static BattleStandardEntity spawnBattleStandard(PlayerEntity user, int de return null; } + public static GemPowerComponent getComponent(ItemStack stack) { + return stack.getOrDefault(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.DEFAULT); + } + // Gem Sockets // When each method is added to an item class, allows for gem sockets to appear on the item. // Each method needs to be called in its respective Override method. (Eg. inventoryTickGemSocketLogic goes in inventoryTick) @@ -69,49 +77,26 @@ public static BattleStandardEntity spawnBattleStandard(PlayerEntity user, int de // Performs postHit socket effects public static void postHitGemSocketLogic(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - /* 1.21 temp - switch (stack.getOrCreateNbt().getString("runic_power")) { - case "freeze" -> RunicMethods.postHitRunicFreeze(target, attacker); - case "wildfire" -> RunicMethods.postHitRunicWildfire(target, attacker); - case "slow" -> RunicMethods.postHitRunicSlow(target, attacker); - case "greater_slow" -> RunicMethods.postHitRunicGreaterSlow(target, attacker); - case "swiftness" -> RunicMethods.postHitRunicSwiftness(attacker); - case "greater_swiftness" -> RunicMethods.postHitRunicGreaterSwiftness(attacker); - case "float" -> RunicMethods.postHitRunicFloat(target, attacker); - case "greater_float" -> RunicMethods.postHitRunicGreaterFloat(target, attacker); - case "zephyr" -> RunicMethods.postHitRunicZephyr(attacker); - case "greater_zephyr" -> RunicMethods.postHitRunicGreaterZephyr(attacker); - case "shielding" -> RunicMethods.postHitRunicShielding(attacker); - case "greater_shielding" -> RunicMethods.postHitRunicGreaterShielding(attacker); - case "stoneskin" -> RunicMethods.postHitRunicStoneskin(attacker); - case "greater_stoneskin" -> RunicMethods.postHitRunicGreaterStoneskin(attacker); - case "trailblaze" -> RunicMethods.postHitRunicTrailblaze(attacker); - case "greater_trailblaze" -> RunicMethods.postHitRunicGreaterTrailblaze(attacker); - case "weaken" -> RunicMethods.postHitRunicWeaken(target, attacker); - case "greater_weaken" -> RunicMethods.postHitRunicGreaterWeaken(target, attacker); - case "imbued" -> RunicMethods.postHitRunicImbued(stack, target, attacker); - case "greater_imbued" -> RunicMethods.postHitRunicGreaterImbued(stack, target, attacker); - case "pincushion" -> RunicMethods.postHitRunicPinCushion(target, attacker); - case "greater_pincushion" -> RunicMethods.postHitRunicGreaterPinCushion(target, attacker); - } - - switch (stack.getOrCreateNbt().getString("nether_power")) { - case "echo" -> RunicMethods.postHitNetherEcho(stack, target, attacker); - case "berserk" -> RunicMethods.postHitNetherBerserk(stack, target, attacker); - case "radiance" -> RunicMethods.postHitNetherRadiance(target, attacker); - case "onslaught" -> RunicMethods.postHitNetherOnslaught(target, attacker); - case "nullification" -> RunicMethods.postHitNetherNullification(attacker); - } - */ + GemPowerComponent component = getComponent(stack); + component.postHit(stack, target, attacker); } } // Adds the relevant socket information to the item tooltip public static void appendTooltipGemSocketLogic(ItemStack itemStack, List tooltip) { - Style RUNIC = HelperMethods.getStyle("runic"); - Style NETHERFUSED = HelperMethods.getStyle("legendary"); - Style TEXT = HelperMethods.getStyle("text"); + GemPowerComponent component = getComponent(stack); + + if (!component.isEmpty()) { + tooltip.add(Text.literal("")); + } + + if (Screen.hasAltDown()) { + component.appendTooltip(itemStack, tooltipContext, tooltip, type) + } else if (component.canBeFilled()) { + tooltip.add(Text.translatable("item.simplyswords.common.showtooltip").formatted(Formatting.GRAY)); + } + /* 1.21 temp NbtCompound nbt = itemStack.getOrCreateNbt(); @@ -325,56 +310,34 @@ public static void appendTooltipGemSocketLogic(ItemStack itemStack, List t // Allows for the socketing of gems public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStack, PlayerEntity player) { - /* 1.21 temp - if (Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { - String powerType = null; - if (otherStack.isOf(ItemsRegistry.RUNEFUSED_GEM.get()) && stack.getOrCreateNbt().getString("runic_power").equals("socket_empty") - && !otherStack.getOrCreateNbt().getString("runic_power").isEmpty()) { - powerType = "runic_power"; - } else if (otherStack.isOf(ItemsRegistry.NETHERFUSED_GEM.get()) && stack.getOrCreateNbt().getString("nether_power").equals("socket_empty") - && !otherStack.getOrCreateNbt().getString("nether_power").isEmpty()) { - powerType = "nether_power"; - } - if (powerType != null) { - String powerSelection = otherStack.getOrCreateNbt().getString(powerType); - stack.getOrCreateNbt().putString(powerType, powerSelection); - player.getWorld().playSoundFromEntity(null, player, SoundEvents.BLOCK_ANVIL_USE, player.getSoundCategory(), 1, 1); - otherStack.decrement(1); + GemPowerComponent component = getComponent(stack); + if (component.canBeFilled()) { + if (otherStack.getItem() instanceOf GemPowerFiller gemPowerFiller) { + ValidationResult result = gemPowerFiller.fill(otherStack, component); + if (result.isValid()) { + stack.set(ComponentTypeRegistry.GEM_POWER.get(), result.get()); + player.getWorld().playSoundFromEntity(null, player, SoundEvents.BLOCK_ANVIL_USE, player.getSoundCategory(), 1, 1); + otherStack.decrement(1); + } + } } } - - */ } // netherSocketChance & runeSocketChance determine how likely these sockets are to appear on the item. An int of 50 = 50% chance for the socket to appear. public static void inventoryTickGemSocketLogic (ItemStack stack, World world, Entity entity, int runeSocketChance, int netherSocketChance) { - /* 1.21 temp - - NbtCompound nbt = stack.getOrCreateNbt(); - - if (nbt.getString("runic_power").isEmpty() && nbt.getString("nether_power").isEmpty() && Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { - float socketChance = (float) (Math.random() * 100); - float socketChance2 = (float) (Math.random() * 100); - - if (socketChance > runeSocketChance) nbt.putString("runic_power", "socket_empty"); - else nbt.putString("runic_power", "no_socket"); - if (socketChance2 > netherSocketChance) nbt.putString("nether_power", "socket_empty"); - else nbt.putString("nether_power", "no_socket"); + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get() && Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { + float runeSocketRoll = (float) (Math.random() * 100); + float netherSocketRoll = (float) (Math.random() * 100); + stack.set(GemPowerComponent.createEmpty(runeSocketRoll > runeSocketChance, netherSocketRoll > netherSocketChance)); } if (!world.isClient && (entity instanceof LivingEntity user) && (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack || user.getEquippedStack(EquipmentSlot.OFFHAND) == stack)) { - switch (stack.getOrCreateNbt().getString("runic_power")) { - case "unstable" -> RunicMethods.inventoryTickRunicUnstable(user); - case "active_defence" -> - RunicMethods.inventoryTickRunicActiveDefence(world, user); - case "frost_ward" -> RunicMethods.inventoryTickRunicFrostWard(world, user); - } + GemPowerComponent component = getComponent(stack); + component.inventoryTick(stack, world, user, 0, true); } - - */ - } } From 481b4809e2f634f13a0e08980022eefa10d7ed2d Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 11 Oct 2024 18:34:54 -0400 Subject: [PATCH 21/37] fix up remote work, successful build with work so far --- .../simplyswords/api/SimplySwordsAPI.java | 25 +++++--- .../simplyswords/item/NetherfusedGemItem.java | 22 +++---- .../simplyswords/item/RunefusedGemItem.java | 22 +++---- .../simplyswords/item/RunicSwordItem.java | 57 +++++++++++-------- .../simplyswords/item/UniqueSwordItem.java | 2 +- .../sweenus/simplyswords/power/GemPower.java | 5 +- .../simplyswords/power/GemPowerComponent.java | 10 ++-- 7 files changed, 83 insertions(+), 60 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java index 554595ad..197bd3cb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java +++ b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java @@ -3,19 +3,28 @@ import me.fzzyhmstrs.fzzy_config.util.ValidationResult; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundEvents; import net.minecraft.text.Style; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.world.World; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.GemPowerFiller; import net.sweenus.simplyswords.power.PowerType; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EntityRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -83,20 +92,20 @@ public static void postHitGemSocketLogic(ItemStack stack, LivingEntity target, L } // Adds the relevant socket information to the item tooltip - public static void appendTooltipGemSocketLogic(ItemStack itemStack, List tooltip) { + public static void appendTooltipGemSocketLogic(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type) { - GemPowerComponent component = getComponent(stack); + GemPowerComponent component = getComponent(itemStack); if (!component.isEmpty()) { tooltip.add(Text.literal("")); } if (Screen.hasAltDown()) { - component.appendTooltip(itemStack, tooltipContext, tooltip, type) + component.appendTooltip(itemStack, tooltipContext, tooltip, type); } else if (component.canBeFilled()) { tooltip.add(Text.translatable("item.simplyswords.common.showtooltip").formatted(Formatting.GRAY)); } - + /* 1.21 temp NbtCompound nbt = itemStack.getOrCreateNbt(); @@ -313,7 +322,7 @@ public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStac if (Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { GemPowerComponent component = getComponent(stack); if (component.canBeFilled()) { - if (otherStack.getItem() instanceOf GemPowerFiller gemPowerFiller) { + if (otherStack.getItem() instanceof GemPowerFiller gemPowerFiller) { ValidationResult result = gemPowerFiller.fill(otherStack, component); if (result.isValid()) { stack.set(ComponentTypeRegistry.GEM_POWER.get(), result.get()); @@ -328,10 +337,10 @@ public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStac // netherSocketChance & runeSocketChance determine how likely these sockets are to appear on the item. An int of 50 = 50% chance for the socket to appear. public static void inventoryTickGemSocketLogic (ItemStack stack, World world, Entity entity, int runeSocketChance, int netherSocketChance) { - if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get() && Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get()) && Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { float runeSocketRoll = (float) (Math.random() * 100); float netherSocketRoll = (float) (Math.random() * 100); - stack.set(GemPowerComponent.createEmpty(runeSocketRoll > runeSocketChance, netherSocketRoll > netherSocketChance)); + stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.createEmpty(runeSocketRoll > runeSocketChance, netherSocketRoll > netherSocketChance)); } if (!world.isClient && (entity instanceof LivingEntity user) && (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack || user.getEquippedStack(EquipmentSlot.OFFHAND) == stack)) { @@ -340,4 +349,4 @@ public static void inventoryTickGemSocketLogic (ItemStack stack, World world, En } } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java index 986e7eea..b2f18061 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/NetherfusedGemItem.java @@ -7,18 +7,18 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ClickType; +import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; +import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.api.SimplySwordsApi; +import net.sweenus.simplyswords.api.SimplySwordsAPI; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.GemPowerFiller; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; -import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -31,12 +31,12 @@ public NetherfusedGemItem() { @Override public ValidationResult fill(ItemStack stack, GemPowerComponent component) { - GemPowerComponent gemComponent = SimplSwordsApi.getComponent(stack); + GemPowerComponent gemComponent = SimplySwordsAPI.getComponent(stack); if (!gemComponent.hasNetherPower() || !component.netherPower().value().isEmpty() || !component.hasNetherPower()) { - return ValidationResult.error(component, "Can't socket to the provided component"); + return ValidationResult.Companion.error(component, "Can't socket to the provided component"); } - return ValidationResult.success(component.fill( - (hasRunic, oldRunic) -> oldRunic, + return ValidationResult.Companion.success(component.fill( + (hasRunic, oldRunic) -> oldRunic, (hasNether, oldNether) -> gemComponent.netherPower() )); } @@ -44,7 +44,7 @@ public ValidationResult fill(ItemStack stack, GemPowerCompone @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { - + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.nether(GemPowerRegistry.gemRandomPower(PowerType.NETHER))); } @@ -53,7 +53,7 @@ public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, Click } @Override - public void onCraft(ItemStack stack, World world, PlayerEntity player) { + public void onCraft(ItemStack stack, World world) { if (world.isClient) return; if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { @@ -71,7 +71,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); - GemPowerComponent component = SimplySwordsApi.getComponent(itemStack); + GemPowerComponent component = SimplySwordsAPI.getComponent(itemStack); if(component.isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.netherfused_gem.tooltip1").setStyle(Styles.LEGENDARY)); @@ -83,4 +83,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index e57e5a4a..bb0f1947 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -10,14 +10,16 @@ import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ClickType; +import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; +import net.minecraft.world.World; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.api.SimplySwordsApi; +import net.sweenus.simplyswords.api.SimplySwordsAPI; import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.power.GemPowerFiller; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; -import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -30,12 +32,12 @@ public RunefusedGemItem() { @Override public ValidationResult fill(ItemStack stack, GemPowerComponent component) { - GemPowerComponent gemComponent = SimplSwordsApi.getComponent(stack); + GemPowerComponent gemComponent = SimplySwordsAPI.getComponent(stack); if (!gemComponent.hasRunicPower() || !component.runicPower().value().isEmpty() || !component.hasRunicPower()) { - return ValidationResult.error(component, "Can't socket to the provided component"); + return ValidationResult.Companion.error(component, "Can't socket to the provided component"); } - return ValidationResult.success(component.fill( - (hasRunic, oldRunic) -> gemComponent.runicPower(), + return ValidationResult.Companion.success(component.fill( + (hasRunic, oldRunic) -> gemComponent.runicPower(), (hasNether, oldNether) -> oldNether )); } @@ -43,7 +45,7 @@ public ValidationResult fill(ItemStack stack, GemPowerCompone @Override public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, ClickType clickType, PlayerEntity player, StackReference cursorStackReference) { - + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.runic(GemPowerRegistry.gemRandomPower(PowerType.RUNEFUSED))); } @@ -52,7 +54,7 @@ public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, Click @Override - public void onCraft(ItemStack stack, World world, PlayerEntity player) { + public void onCraft(ItemStack stack, World world) { if (world.isClient) return; if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { @@ -70,7 +72,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); - GemPowerComponent component = SimplySwordsApi.getComponent(itemStack); + GemPowerComponent component = SimplySwordsAPI.getComponent(itemStack); if(component.isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(Styles.RUNIC)); @@ -82,4 +84,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.gem_description").formatted(Formatting.GRAY, Formatting.ITALIC)); tooltip.add(Text.translatable("item.simplyswords.gem_description2").formatted(Formatting.GRAY, Formatting.ITALIC)); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index b65030cf..c2f8b316 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -1,23 +1,34 @@ package net.sweenus.simplyswords.item; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.StackReference; import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.particle.ParticleTypes; import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; import net.minecraft.util.ClickType; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; import net.minecraft.world.World; -import net.sweenus.simplyswords.api.SimplySwordsApi; +import net.sweenus.simplyswords.api.SimplySwordsAPI; +import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; -import net.sweenus.simplyswords.util.RunicMethods; import net.sweenus.simplyswords.util.Styles; +import java.util.List; + public class RunicSwordItem extends SwordItem { public RunicSwordItem(ToolMaterial toolMaterial, Settings settings) { @@ -36,7 +47,7 @@ public boolean onClicked(ItemStack stack, ItemStack otherStack, Slot slot, Click public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); + GemPowerComponent component = SimplySwordsAPI.getComponent(stack); HelperMethods.playHitSounds(attacker, target); component.postHit(stack, target, attacker); } @@ -47,22 +58,22 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); - component.onStoppedUsing(stack, world, user, remainingUseTicks) + GemPowerComponent component = SimplySwordsAPI.getComponent(stack); + component.onStoppedUsing(stack, world, user, remainingUseTicks); } } @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); - component.usageTick(world, user, stack, remainingUseTicks) + GemPowerComponent component = SimplySwordsAPI.getComponent(stack); + component.usageTick(world, user, stack, remainingUseTicks); } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); + GemPowerComponent component = SimplySwordsAPI.getComponent(stack); return component.getMaxUseTime(stack); } @@ -71,7 +82,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han ItemStack itemStack = user.getStackInHand(hand); if (itemStack.getDamage() < itemStack.getMaxDamage() - 1) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); + GemPowerComponent component = SimplySwordsAPI.getComponent(itemStack); return component.use(world, user, hand); } return TypedActionResult.fail(itemStack); @@ -96,7 +107,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, -3 + randomx, 0.0, -3 + randomz); } if (!world.isClient) { - GemPowerComponent component = SimplySwordsApi.getComponent(stack); + GemPowerComponent component = SimplySwordsAPI.getComponent(stack); component.inventoryTick(stack, world, user, slot, selected); } } @@ -104,7 +115,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } @Override - public void onCraft(ItemStack stack, World world, PlayerEntity player) { + public void onCraft(ItemStack stack, World world) { if (world.isClient) return; if(!stack.contains(ComponentTypeRegistry.GEM_POWER.get())) { @@ -121,13 +132,13 @@ public Text getName(ItemStack stack) { public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { tooltip.add(Text.literal("").setStyle(Styles.TEXT)); - GemPowerComponent component = SimplySwordsApi.getComponent(stack); - + GemPowerComponent component = SimplySwordsAPI.getComponent(itemStack); + if (component.isEmpty()) { - tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(Styles.RUNIC)); + tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(Styles.TEXT)); } else { - component.appendTooltip(itemStack, tooltipContext, tooltip, type, true) + component.appendTooltip(itemStack, tooltipContext, tooltip, type, true); } } @@ -195,7 +206,7 @@ else if (stack.getOrCreateNbt().getString("runic_power").equals("greater_momentu @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { ItemStack itemStack = user.getStackInHand(hand); - + if (itemStack.getDamage() < itemStack.getMaxDamage() - 1) { switch (itemStack.getOrCreateNbt().getString("runic_power")) { case "momentum", "greater_momentum" -> { @@ -231,7 +242,7 @@ public int getMaxUseTime(ItemStack stack, LivingEntity user) { String power = stack.getOrCreateNbt().getString("runic_power"); if (power.equals("momentum")) maxUseTime = 15; else if (power.equals("ward") || power.equals("immolation")) maxUseTime = 1; - + return maxUseTime; } @@ -247,7 +258,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, if (entity.age % 4 == 0 && Config.getBoolean("enablePassiveParticles", "General", ConfigDefaultValues.enablePassiveParticles)) { float randomx = (float) (Math.random() * 6); float randomz = (float) (Math.random() * 6); - + world.addParticle(ParticleTypes.ENCHANT, user.getX() + user.getHandPosOffset(this).getX(), user.getY() + user.getHandPosOffset(this).getY() + 1.3, @@ -269,7 +280,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void onCraft(ItemStack stack, World world, PlayerEntity player) { if (world.isClient) return; - + String runicPowerSelection = HelperMethods.chooseRunicPower(); stack.getOrCreateNbt().putString("runic_power", runicPowerSelection); } @@ -285,9 +296,9 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); Style RUNIC = HelperMethods.getStyle("runic"); Style TEXT = HelperMethods.getStyle("text"); - + tooltip.add(Text.literal("").setStyle(TEXT)); - + if (itemStack.getOrCreateNbt().getString("runic_power").isEmpty()) { tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip1").setStyle(RUNIC)); tooltip.add(Text.translatable("item.simplyswords.unidentifiedsworditem.tooltip2").setStyle(TEXT)); @@ -396,4 +407,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } */ -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index c2eec334..b2bfba9d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -79,6 +79,6 @@ public Text getName(ItemStack stack) { @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - SimplySwordsAPI.appendTooltipGemSocketLogic(itemStack, tooltip); + SimplySwordsAPI.appendTooltipGemSocketLogic(itemStack, tooltipContext, tooltip, type); } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java index d210c53a..69ba34cf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java @@ -1,6 +1,5 @@ package net.sweenus.simplyswords.power; -import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -36,7 +35,7 @@ void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUse void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {} int getMaxUseTime(ItemStack stack) { return 0; } - boolean isEmpty() { return false; } + public boolean isEmpty() { return false; } ////////////////////////////// @@ -49,7 +48,7 @@ public EmptyGemPower() { } @Override - boolean isEmpty() { + public boolean isEmpty() { return true; } } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java index 9a02f5d8..1b632392 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java @@ -13,6 +13,7 @@ import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryFixedCodec; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; @@ -22,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.BiFunction; public record GemPowerComponent(boolean hasRunicPower, boolean hasNetherPower, RegistryEntry runicPower, RegistryEntry netherPower) { @@ -64,7 +66,7 @@ public static GemPowerComponent createEmpty(boolean hasRunic, boolean hasNether) return new GemPowerComponent(hasRunic, hasNether, GemPowerRegistry.EMPTY, GemPowerRegistry.EMPTY); } - public GemPowerComponent fill(BiFunction, RegistryEntry> runicFiller, Function, RegistryEntry> netherFiller) { + public GemPowerComponent fill(BiFunction, RegistryEntry> runicFiller, BiFunction, RegistryEntry> netherFiller) { return new GemPowerComponent(this.hasRunicPower, this.hasNetherPower, runicFiller.apply(this.hasRunicPower, this.runicPower), netherFiller.apply(this.hasNetherPower, this.netherPower)); } @@ -81,7 +83,7 @@ public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) netherPower.value().postHit(stack, target, attacker); } - TypedActionResult use(World world, PlayerEntity user, Hand hand) { + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { ItemStack itemStack = user.getStackInHand(hand); TypedActionResult result1 = runicPower.value().use(world, user, hand, itemStack); TypedActionResult result2 = netherPower.value().use(world, user, hand, itemStack); @@ -127,7 +129,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex } else if (!isRunic && hasRunicPower) { tooltip.add(Text.translatable("item.simplyswords.empty_runic_slot").formatted(Formatting.GRAY)); } - + if (netherPower.value().isGreater()) { tooltip.add(Text.translatable("item.simplyswords.greater_nether_power").setStyle(Styles.NETHERFUSED)); } @@ -137,4 +139,4 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.empty_nether_slot").formatted(Formatting.GRAY)); } } -} +} \ No newline at end of file From 2643ece7510d8ceab7396968fb5892db7ac1c7f0 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Tue, 15 Oct 2024 23:47:30 -0400 Subject: [PATCH 22/37] update to fzzy config 0.5.4, start in on the configs! --- .../sweenus/simplyswords/SimplySwords.java | 9 +- .../simplyswords/api/SimplySwordsAPI.java | 214 +----------------- .../sweenus/simplyswords/config/Config.java | 5 + .../simplyswords/config/ConfigWrapper.java | 10 +- .../simplyswords/config/GemEffectsConfig.java | 43 ---- .../simplyswords/config/GemPowersConfig.java | 57 +++++ .../simplyswords/config/GeneralConfig.java | 20 +- .../simplyswords/config/LootConfig.java | 85 +++++-- .../simplyswords/config/LootConfigOld.java | 63 ++++++ .../config/RunicEffectsConfig.java | 6 +- .../config/StatusEffectsConfig.java | 15 +- .../config/settings/BasicSettings.java | 31 +++ .../config/settings/TooltipSettings.java | 72 ++++++ .../simplyswords/effect/EchoEffect.java | 4 +- .../simplyswords/effect/ImmolationEffect.java | 53 ++--- .../simplyswords/effect/WildfireEffect.java | 8 +- .../entity/BattleStandardEntity.java | 3 +- .../simplyswords/item/GobberEndSwordItem.java | 4 +- .../simplyswords/item/RunicSwordItem.java | 2 +- .../mixin/ServerPlayerEntityMixin.java | 4 +- .../sweenus/simplyswords/power/GemPower.java | 14 +- .../simplyswords/power/GemPowerComponent.java | 13 ++ .../power/powers/ActiveDefencePower.java | 27 ++- .../simplyswords/power/powers/FloatPower.java | 14 +- .../power/powers/FreezePower.java | 16 +- .../power/powers/FrostWardPower.java | 34 ++- .../power/powers/ImbuedPower.java | 19 +- .../power/powers/MomentumPower.java | 20 +- .../power/powers/ShieldingPower.java | 14 +- .../simplyswords/power/powers/SlowPower.java | 14 +- .../power/powers/StoneskinPower.java | 14 +- .../power/powers/SwiftnessPower.java | 14 +- .../power/powers/TrailblazePower.java | 9 + .../power/powers/UnstablePower.java | 26 ++- .../power/powers/WeakenPower.java | 14 +- .../power/powers/WildfirePower.java | 30 ++- .../power/powers/ZephyrPower.java | 14 +- .../registry/GemPowerRegistry.java | 1 + .../simplyswords/util/HelperMethods.java | 10 +- .../util/ModLootTableModifiers.java | 206 ++++------------- .../assets/simplyswords/lang/en_us.json | 186 ++++++--------- gradle.properties | 2 +- 42 files changed, 731 insertions(+), 688 deletions(-) delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/GemEffectsConfig.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index d14a789a..c03fffe6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -63,9 +63,7 @@ public class SimplySwords { public static final Logger LOGGER = LogManager.getLogger(MOD_ID); public static boolean isConfigOutdated; - public static GeneralConfig generalConfig; - public static LootConfig lootConfig; - public static GemEffectsConfig gemEffectsConfig; + public static LootConfigOld lootConfigOld; public static RunicEffectsConfig runicEffectsConfig; public static StatusEffectsConfig statusEffectsConfig; public static UniqueEffectsConfig uniqueEffectsConfig; @@ -78,12 +76,11 @@ public static void init() { //CONFIG + Config.init(); SimplySwordsConfig.init(); AutoConfig.register(ConfigWrapper.class, PartitioningSerializer.wrap(JanksonConfigSerializer::new)); - generalConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().general; - lootConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().loot; - gemEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().gem_effects; + lootConfigOld = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().loot; runicEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().runic_effects; statusEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().status_effects; uniqueEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().unique_effects; diff --git a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java index 197bd3cb..3a079bb6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java +++ b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java @@ -105,221 +105,11 @@ public static void appendTooltipGemSocketLogic(ItemStack itemStack, Item.Tooltip } else if (component.canBeFilled()) { tooltip.add(Text.translatable("item.simplyswords.common.showtooltip").formatted(Formatting.GRAY)); } - - /* 1.21 temp - - NbtCompound nbt = itemStack.getOrCreateNbt(); - if (!nbt.getString("runic_power").equals("no_socket") || !nbt.getString("nether_power").equals("no_socket")) { - tooltip.add(Text.literal("")); - } - if (Screen.hasAltDown()) { - if (nbt.getString("runic_power").contains("greater")) { - tooltip.add(Text.translatable("item.simplyswords.greater_runic_power").setStyle(RUNIC)); - } - switch (nbt.getString("runic_power")) { - case "socket_empty" -> - tooltip.add(Text.translatable("item.simplyswords.empty_runic_slot").formatted(Formatting.GRAY)); - case "freeze" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.freeze").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(TEXT)); - } - case "wildfire" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.wildfire").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(TEXT)); - } - case "slow", "greater_slow" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.slow").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(TEXT)); - } - case "swiftness", "greater_swiftness" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.swiftness").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(TEXT)); - } - case "float", "greater_float" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.float").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(TEXT)); - } - case "zephyr", "greater_zephyr" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.zephyr").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(TEXT)); - } - case "shielding", "greater_shielding" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.shielding").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(TEXT)); - } - case "stoneskin", "greater_stoneskin" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.stoneskin").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(TEXT)); - } - case "frost_ward" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.frost_ward").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(TEXT)); - } - case "trailblaze", "greater_trailblaze" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.trailblaze").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(TEXT)); - } - case "active_defence" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.active_defence").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(TEXT)); - } - case "weaken", "greater_weaken" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.weaken").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(TEXT)); - } - case "unstable" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.unstable").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(TEXT)); - } - case "imbued", "greater_imbued" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.imbued").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(TEXT)); - } - case "pincushion", "greater_pincushion" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.pincushion").setStyle(RUNIC)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.pincushionsworditem.tooltip3").setStyle(TEXT)); - } - } - - if (!nbt.getString("runic_power").equals("no_socket") && !nbt.getString("nether_power").equals("no_socket")) { - tooltip.add(Text.literal("")); - } - - switch (nbt.getString("nether_power")) { - case "socket_empty" -> - tooltip.add(Text.translatable("item.simplyswords.empty_nether_slot").formatted(Formatting.GRAY)); - case "echo" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.echo.description3").setStyle(TEXT)); - } - case "berserk" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.berserk.description3").setStyle(TEXT)); - } - case "radiance" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.radiance.description3").setStyle(TEXT)); - } - case "onslaught" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6").setStyle(TEXT)); - } - case "nullification" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.nullification.description5").setStyle(TEXT)); - } - case "precise" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.precise.description3").setStyle(TEXT)); - } - case "mighty" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.mighty.description3").setStyle(TEXT)); - } - case "stealthy" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.stealthy.description2").setStyle(TEXT)); - } - case "renewed" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.renewed.description4").setStyle(TEXT)); - } - case "accelerant" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.accelerant.description4").setStyle(TEXT)); - } - case "leaping" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.leaping.description3").setStyle(TEXT)); - } - case "spellshield" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellshield.description2").setStyle(TEXT)); - } - case "spellforged" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellforged.description3").setStyle(TEXT)); - } - case "soulshock" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.soulshock.description3").setStyle(TEXT)); - } - case "spell_standard" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description3").setStyle(TEXT)); - } - case "war_standard" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.warstandard.description3").setStyle(TEXT)); - } - case "deception" -> { - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception").setStyle(NETHERFUSED)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.netherfused_power.deception.description3").setStyle(TEXT)); - } - } - } else if (!nbt.getString("runic_power").equals("no_socket") || !nbt.getString("nether_power").equals("no_socket")) { - tooltip.add(Text.translatable("item.simplyswords.common.showtooltip").formatted(Formatting.GRAY)); - } - - */ } // Allows for the socketing of gems public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStack, PlayerEntity player) { - if (Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { + if (Config.general.enableUniqueGemSockets) { GemPowerComponent component = getComponent(stack); if (component.canBeFilled()) { if (otherStack.getItem() instanceof GemPowerFiller gemPowerFiller) { @@ -337,7 +127,7 @@ public static void onClickedGemSocketLogic (ItemStack stack, ItemStack otherStac // netherSocketChance & runeSocketChance determine how likely these sockets are to appear on the item. An int of 50 = 50% chance for the socket to appear. public static void inventoryTickGemSocketLogic (ItemStack stack, World world, Entity entity, int runeSocketChance, int netherSocketChance) { - if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get()) && Config.getBoolean("enableUniqueGemSockets", "General", ConfigDefaultValues.enableUniqueGemSockets)) { + if (!stack.contains(ComponentTypeRegistry.GEM_POWER.get()) && Config.general.enableUniqueGemSockets) { float runeSocketRoll = (float) (Math.random() * 100); float netherSocketRoll = (float) (Math.random() * 100); stack.set(ComponentTypeRegistry.GEM_POWER.get(), GemPowerComponent.createEmpty(runeSocketRoll > runeSocketChance, netherSocketRoll > netherSocketChance)); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index a382b72b..88760586 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -19,7 +19,12 @@ public class Config { + public static void init() {} + + public static final GeneralConfig general = ConfigApiJava.registerAndLoadConfig(GeneralConfig::new); public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); + public static final LootConfig loot = ConfigApiJava.registerAndLoadConfig(LootConfig::new); + public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); public static File createFile(String path, String contents, boolean overwrite) { File file = new File(path); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java index 855c4b08..fbd1913d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java @@ -8,15 +8,9 @@ @Config(name = SimplySwords.MOD_ID +"_main") @Config.Gui.Background("cloth-config2:transparent") public class ConfigWrapper extends PartitioningSerializer.GlobalData { - @ConfigEntry.Category("general") - @ConfigEntry.Gui.TransitiveObject - public GeneralConfig general = new GeneralConfig(); @ConfigEntry.Category("loot") @ConfigEntry.Gui.TransitiveObject - public LootConfig loot = new LootConfig(); - @ConfigEntry.Category("gem_effects") - @ConfigEntry.Gui.TransitiveObject - public GemEffectsConfig gem_effects = new GemEffectsConfig(); + public LootConfigOld loot = new LootConfigOld(); @ConfigEntry.Category("runic_effects") @ConfigEntry.Gui.TransitiveObject public RunicEffectsConfig runic_effects = new RunicEffectsConfig(); @@ -29,4 +23,4 @@ public class ConfigWrapper extends PartitioningSerializer.GlobalData { @ConfigEntry.Category("weapon_attributes") @ConfigEntry.Gui.TransitiveObject public WeaponAttributesConfig weapon_attributes = new WeaponAttributesConfig(); -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemEffectsConfig.java deleted file mode 100644 index a6fb3925..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/GemEffectsConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -@Config(name = "gem_effects") -public class GemEffectsConfig implements ConfigData { - - @ConfigEntry.Gui.PrefixText - public boolean enableEcho = true; - public boolean enableBerserk = true; - public boolean enableRadiance = true; - public boolean enableOnslaught = true; - public boolean enableNullification = true; - - @ConfigEntry.Gui.PrefixText - public boolean enablePrecise = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int preciseChance = 30; - public boolean enableMighty = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int mightyChance = 30; - public boolean enableStealthy = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int stealthyChance = 30; - public boolean enableRenewed = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int renewedChance = 30; - public boolean enableAccelerant = true; - public boolean enableLeaping = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int leapingChance = 65; - public boolean enableSpellshield = true; - @ConfigEntry.BoundedDiscrete(max = 100) - public int spellshieldChance = 15; - public boolean enableSpellforged = true; - public boolean enableSoulshock = true; - public boolean enableSpellStandard = true; - public boolean enableWarStandard = true; - public boolean enableDeception = true; - -} diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java index 2f80f9c2..0c1af154 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java @@ -1,13 +1,31 @@ package net.sweenus.simplyswords.config; import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.config.ConfigSection; import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; +import me.shedaniel.autoconfig.annotation.ConfigEntry; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.power.GemPower; +import net.sweenus.simplyswords.power.powers.ActiveDefencePower; +import net.sweenus.simplyswords.power.powers.FloatPower; +import net.sweenus.simplyswords.power.powers.FreezePower; +import net.sweenus.simplyswords.power.powers.FrostWardPower; +import net.sweenus.simplyswords.power.powers.ImbuedPower; +import net.sweenus.simplyswords.power.powers.MomentumPower; +import net.sweenus.simplyswords.power.powers.ShieldingPower; +import net.sweenus.simplyswords.power.powers.SlowPower; +import net.sweenus.simplyswords.power.powers.StoneskinPower; +import net.sweenus.simplyswords.power.powers.SwiftnessPower; +import net.sweenus.simplyswords.power.powers.TrailblazePower; +import net.sweenus.simplyswords.power.powers.UnstablePower; +import net.sweenus.simplyswords.power.powers.WeakenPower; +import net.sweenus.simplyswords.power.powers.WildfirePower; +import net.sweenus.simplyswords.power.powers.ZephyrPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; public class GemPowersConfig extends Config { @@ -19,4 +37,43 @@ public GemPowersConfig() { @SuppressWarnings({"deprecation", "unchecked"}) public ValidatedSet disabledPowers = ValidatedIdentifier.ofRegistryKey((RegistryKey>) GemPowerRegistry.REGISTRY.key()).toSet(); + public ActiveDefencePower.Settings activeDefence = new ActiveDefencePower.Settings(); + public FloatPower.Settings floating = new FloatPower.Settings(); + public FreezePower.Settings freeze = new FreezePower.Settings(); + public FrostWardPower.Settings frostWard = new FrostWardPower.Settings(); + public ImbuedPower.Settings imbued = new ImbuedPower.Settings(); + public MomentumPower.Settings momentum = new MomentumPower.Settings(); + public ShieldingPower.Settings shielding = new ShieldingPower.Settings(); + public SlowPower.Settings slow = new SlowPower.Settings(); + public StoneskinPower.Settings stoneskin = new StoneskinPower.Settings(); + public SwiftnessPower.Settings swiftness = new SwiftnessPower.Settings(); + public TrailblazePower.Settings trailblaze = new TrailblazePower.Settings(); + public UnstablePower.Settings unstable = new UnstablePower.Settings(); + public WeakenPower.Settings weaken = new WeakenPower.Settings(); + public WildfirePower.Settings wildfire = new WildfirePower.Settings(); + public ZephyrPower.Settings zephyr = new ZephyrPower.Settings(); + + public SimplySkills simplySkills = new SimplySkills(); + + public static class SimplySkills extends ConfigSection { + + @ValidatedInt.Restrict(min = 0, max = 100) + public int preciseChance = 30; + + @ValidatedInt.Restrict(min = 0, max = 100) + public int mightyChance = 30; + + @ValidatedInt.Restrict(min = 0, max = 100) + public int stealthyChance = 30; + + @ValidatedInt.Restrict(min = 0, max = 100) + public int renewedChance = 30; + + @ValidatedInt.Restrict(min = 0, max = 100) + public int leapingChance = 65; + + @ValidatedInt.Restrict(min = 0, max = 100) + public int spellshieldChance = 15; + } + } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java index 6542169c..937e7114 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java @@ -1,22 +1,24 @@ package net.sweenus.simplyswords.config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; +import me.fzzyhmstrs.fzzy_config.config.Config; -@Config(name = "general") -public class GeneralConfig implements ConfigData { +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +public class GeneralConfig extends Config { + + public GeneralConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "general")); + } public boolean enableWeaponImpactSounds = true; + @ValidatedFloat.Restrict(min = 0f, max = 1f) public float weaponImpactSoundsVolume = 0.3f; public boolean enableWeaponFootfalls = true; public boolean enablePassiveParticles = true; - @ConfigEntry.Gui.Tooltip public boolean enableUniqueGemSockets = true; public boolean compatGobberEndWeaponsUnbreakable = true; - @ConfigEntry.Gui.Tooltip public boolean compatEnableSpellPowerScaling = true; - -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index a405a8fd..c7ca8cfb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -1,28 +1,72 @@ package net.sweenus.simplyswords.config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; +import com.google.common.collect.ImmutableMap; +import me.fzzyhmstrs.fzzy_config.annotations.Action; +import me.fzzyhmstrs.fzzy_config.annotations.RequiresAction; +import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedIdentifierMap; +import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; +import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; +import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedRegistryType; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedBoolean; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.item.UniqueSwordItem; -@Config(name = "loot") -public class LootConfig implements ConfigData { +@RequiresAction(action = Action.RELOAD_DATA) +public class LootConfig extends Config { + + public LootConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "loot")); + } + + @SuppressWarnings("deprecation") + public ValidatedIdentifierMap lootTableOptions = new ValidatedIdentifierMap.Builder() + .keyHandler(ValidatedIdentifier.ofRegistryKey(RegistryKeys.LOOT_TABLE)) + .valueHandler(new ValidatedFloat(0.01f, 1f, 0f)) + .defaults( + ImmutableMap.builder() + .put(Identifier.ofVanilla("entities/wither"), 0.05f) + .put(Identifier.ofVanilla("entities/ender_dragon"), 0.5f) + .put(Identifier.ofVanilla("chests/ruined_portal"), 0f) + .put(Identifier.ofVanilla("chests/village/village_armorer"), 0f) + .put(Identifier.ofVanilla("chests/village/village_butcher"), 0f) + .put(Identifier.ofVanilla("chests/village/village_cartographer"), 0f) + .put(Identifier.ofVanilla("chests/village/village_desert_house"), 0f) + .put(Identifier.ofVanilla("chests/village/village_fisher"), 0f) + .put(Identifier.ofVanilla("chests/village/village_fletcher"), 0f) + .put(Identifier.ofVanilla("chests/village/village_mason"), 0f) + .put(Identifier.ofVanilla("chests/village/village_plains_house"), 0f) + .put(Identifier.ofVanilla("chests/village/village_savanna_hous"), 0f) + .put(Identifier.ofVanilla("chests/village/village_shepard"), 0f) + .put(Identifier.ofVanilla("chests/village/village_snowy_house"), 0f) + .put(Identifier.ofVanilla("chests/village/village_taiga_house"), 0f) + .put(Identifier.ofVanilla("chests/village/village_tannery"), 0f) + .put(Identifier.ofVanilla("chests/village/village_temple"), 0f) + .put(Identifier.ofVanilla("chests/village/village_toolsmith"), 0f) + .put(Identifier.ofVanilla("chests/village/village_weaponsmith"), 0f) + .build() + ).build(); - @ConfigEntry.Gui.PrefixText - @ConfigEntry.Gui.Tooltip public boolean enableLootDrops = true; - @ConfigEntry.Gui.Tooltip public boolean enableLootInVillages = false; + + public ValidatedFloat standardLootTableWeight = new ValidatedFloat(0.01f, 1f, 0f); + public ValidatedFloat rareLootTableWeight = new ValidatedFloat(0.004f, 1f, 0f); + public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); + public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); + public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() == 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); + + public ValidatedSet disabledUniqueWeaponLoot = ValidatedRegistryType.of(Items.AIR, Registries.ITEM, (entry) -> entry.value() instanceof UniqueSwordItem).toSet(); + public boolean enableTheWatcher = true; - @ConfigEntry.Gui.Tooltip - public float standardLootTableWeight = 0.01f; - @ConfigEntry.Gui.Tooltip - public float rareLootTableWeight = 0.004f; - @ConfigEntry.Gui.Tooltip - public float runicLootTableWeight = 0.007f; - @ConfigEntry.Gui.Tooltip - public float uniqueLootTableWeight = 0.001f; - @ConfigEntry.Gui.Tooltip - public boolean enableContainedRemnants = true; public boolean enableWatchingWarglaive = true; public boolean enableLongswordOfThePlague = true; public boolean enableSwordOnAStick = true; @@ -57,7 +101,4 @@ public class LootConfig implements ConfigData { public boolean enableFlamewind = true; public boolean enableRibboncleaver = true; public boolean enableCaelestis = true; - - - -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java new file mode 100644 index 00000000..24648ac5 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java @@ -0,0 +1,63 @@ +package net.sweenus.simplyswords.config; + +import me.shedaniel.autoconfig.ConfigData; +import me.shedaniel.autoconfig.annotation.Config; +import me.shedaniel.autoconfig.annotation.ConfigEntry; + +@Config(name = "loot") +public class LootConfigOld implements ConfigData { + + @ConfigEntry.Gui.PrefixText + @ConfigEntry.Gui.Tooltip + public boolean enableLootDrops = true; + @ConfigEntry.Gui.Tooltip + public boolean enableLootInVillages = false; + public boolean enableTheWatcher = true; + @ConfigEntry.Gui.Tooltip + public float standardLootTableWeight = 0.01f; + @ConfigEntry.Gui.Tooltip + public float rareLootTableWeight = 0.004f; + @ConfigEntry.Gui.Tooltip + public float runicLootTableWeight = 0.007f; + @ConfigEntry.Gui.Tooltip + public float uniqueLootTableWeight = 0.001f; + @ConfigEntry.Gui.Tooltip + public boolean enableContainedRemnants = true; + public boolean enableWatchingWarglaive = true; + public boolean enableLongswordOfThePlague = true; + public boolean enableSwordOnAStick = true; + public boolean enableBramblethorn = true; + public boolean enableStormsEdge = true; + public boolean enableStormbringer = true; + public boolean enableMjolnir = true; + public boolean enableEmberblade = true; + public boolean enableHearthflame = true; + public boolean enableTwistedBlade = true; + public boolean enableSoulrender = true; + public boolean enableSoulpyre = true; + public boolean enableSoulkeeper = true; + public boolean enableSoulstealer = true; + public boolean enableFrostfall = true; + public boolean enableMoltenEdge = true; + public boolean enableLivyatan = true; + public boolean enableIcewhisper = true; + public boolean enableArcanethyst = true; + public boolean enableThunderbrand = true; + public boolean enableBrimstone = true; + public boolean enableSlumberingLichblade = true; + public boolean enableShadowsting = true; + public boolean enableDormantRelic = true; + public boolean enableWhisperwind = true; + public boolean enableEmberlash = true; + public boolean enableWaxweaver = true; + public boolean enableHiveheart = true; + public boolean enableStarsEdge = true; + public boolean enableWickpiercer = true; + public boolean enableTempest = true; + public boolean enableFlamewind = true; + public boolean enableRibboncleaver = true; + public boolean enableCaelestis = true; + + + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java index 6a51cc6f..0c3b04fb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java @@ -7,7 +7,7 @@ @Config(name = "runic_effects") public class RunicEffectsConfig implements ConfigData { - @ConfigEntry.Gui.PrefixText + /*@ConfigEntry.Gui.PrefixText public boolean enableActiveDefence = true; public boolean enableFloat = true; public boolean enableGreaterFloat = true; @@ -36,7 +36,7 @@ public class RunicEffectsConfig implements ConfigData { public boolean enablePincushion = true; public boolean enableGreaterPincushion = true; public boolean enableWard = true; - public boolean enableImmolate = true; + public boolean enableImmolate = true;*/ @ConfigEntry.Gui.PrefixText @@ -104,4 +104,4 @@ public class RunicEffectsConfig implements ConfigData { public float imbuedChance = 15; -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/StatusEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/StatusEffectsConfig.java index d36b5912..02293d3a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/StatusEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/StatusEffectsConfig.java @@ -1,11 +1,16 @@ package net.sweenus.simplyswords.config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -@Config(name = "status_effects") -public class StatusEffectsConfig implements ConfigData { +import me.fzzyhmstrs.fzzy_config.config.Config; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; + +public class StatusEffectsConfig extends Config { + + public StatusEffectsConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "status_effects")); + } public int echoDamage = 2; -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java new file mode 100644 index 00000000..8aae0514 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java @@ -0,0 +1,31 @@ +package net.sweenus.simplyswords.config.settings; + +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; +import net.minecraft.item.tooltip.TooltipAppender; + +import java.util.function.Supplier; + +public class BasicSettings extends TooltipSettings { + + public BasicSettings(int chance, int duration, Supplier appender) { + super(appender); + this.chance = chance; + this.duration = duration; + } + + public BasicSettings(int chance, int duration) { + super(); + this.chance = chance; + this.duration = duration; + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0) + public int duration; + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java new file mode 100644 index 00000000..b7cf1782 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java @@ -0,0 +1,72 @@ +package net.sweenus.simplyswords.config.settings; + +import me.fzzyhmstrs.fzzy_config.util.Translatable; +import me.fzzyhmstrs.fzzy_config.util.Walkable; +import net.minecraft.item.Item; +import net.minecraft.item.tooltip.TooltipAppender; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public class TooltipSettings implements Translatable, Walkable { + + public TooltipSettings(@Nullable Supplier appender) { + this.appender = appender; + } + + public TooltipSettings() { + this(null); + } + + @Nullable + Supplier appender; + + @NotNull + @Override + public String translationKey() { + return ""; + } + + @NotNull + @Override + public String descriptionKey() { + return ""; + } + + @NotNull + @Override + public MutableText translation(@Nullable String fallback) { + return Translatable.super.translation(fallback); + } + + @NotNull + @Override + public MutableText description(@Nullable String fallback) { + System.out.println("description"); + if (appender == null) return Text.empty(); + final MutableText[] desc = {null}; + appender.get().appendTooltip(Item.TooltipContext.DEFAULT, (text) -> { + if (desc[0] == null) { + desc[0] = text.copy(); + } else { + desc[0].append(Text.literal("\n")).append(text); + } + }, TooltipType.BASIC); + return desc[0]; + } + + @Override + public boolean hasTranslation() { + return false; + } + + @Override + public boolean hasDescription() { + System.out.println("description check??"); + return appender != null; + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java index 3093f65e..91e66d51 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java @@ -15,8 +15,8 @@ public EchoEffect(StatusEffectCategory statusEffectCategory, int color) { @Override public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { - int damage = Config.getInt("echoDamage", "StatusEffects", ConfigDefaultValues.echoDamage); if (livingEntity.age % 15 == 0) { + int damage = Config.statusEffects.echoDamage; livingEntity.timeUntilRegen = 0; livingEntity.damage(livingEntity.getDamageSources().magic(), damage+amplifier); livingEntity.removeStatusEffect(EffectRegistry.ECHO); @@ -30,4 +30,4 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java index 71050a99..98086ae4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java @@ -10,7 +10,10 @@ import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.sound.SoundCategory; import net.minecraft.util.math.Box; +import net.sweenus.simplyswords.api.SimplySwordsAPI; +import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -35,46 +38,30 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { HelperMethods.spawnParticle(player.getWorld(), ParticleTypes.LAVA, player.getX(), player.getY()+0.5, player.getZ(), 0.5, 0.3, -0.2); HelperMethods.spawnParticle(player.getWorld(), ParticleTypes.SMOKE, player.getX(), player.getY()+0.5, player.getZ(), 0, 0, 0); - float abilityDamage = (player.getHealth() / 3); - ItemStack checkMainStack = player.getMainHandStack(); ItemStack checkOffStack = player.getOffHandStack(); if (checkMainStack.getItem() instanceof SwordItem || checkOffStack.getItem() instanceof SwordItem) { - /* 1.21 temp - - //Check mainhand for immolation effect. Remove effect if not present - if (player.getMainHandStack().hasNbt()) { - NbtCompound rpnbt = player.getMainHandStack().getNbt(); - if (rpnbt != null) { - if (!player.getMainHandStack().getNbt().getString("runic_power").equals("immolation") - && !player.getMainHandStack().getNbt().getString("nether_power").equals("radiance")) { - player.removeStatusEffect(EffectRegistry.IMMOLATION); - } - } + GemPowerComponent mainComponent = SimplySwordsAPI.getComponent(checkMainStack); + GemPowerComponent offComponent = SimplySwordsAPI.getComponent(checkOffStack); + if (!(mainComponent.hasRunic(GemPowerRegistry.IMMOLATION) + || offComponent.hasRunic(GemPowerRegistry.IMMOLATION) + || mainComponent.hasNether(GemPowerRegistry.RADIANCE) + || offComponent.hasNether(GemPowerRegistry.RADIANCE))) { + player.removeStatusEffect(EffectRegistry.IMMOLATION); } - //Check offhand for immolation effect. Remove effect if not present - if (player.getMainHandStack().hasNbt()) { - NbtCompound rpnbt = player.getOffHandStack().getNbt(); - if (rpnbt != null) { - if (!player.getOffHandStack().getNbt().getString("runic_power").equals("immolation") - && !player.getOffHandStack().getNbt().getString("nether_power").equals("radiance")) { - player.removeStatusEffect(EffectRegistry.IMMOLATION); - } - } - } - - */ + } else { + player.removeStatusEffect(EffectRegistry.IMMOLATION); } - else {player.removeStatusEffect(EffectRegistry.IMMOLATION);} + float abilityDamage = (player.getHealth() / 3); //Damage Box box = HelperMethods.createBox(pLivingEntity, pAmplifier); for (Entity entities : player.getWorld().getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { if (entities != null) { - if ((entities instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, player)){ + if ((entities instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, player)) { le.timeUntilRegen = 0; le.damage(player.getDamageSources().indirectMagic(player, player), abilityDamage); le.setOnFireFor(1); @@ -86,14 +73,6 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { } } - super.applyUpdateEffect(pLivingEntity, pAmplifier); - - return false; - } - - @Override - public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { - return true; + return super.applyUpdateEffect(pLivingEntity, pAmplifier); } - -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java index a6c140e3..6d17e6d6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java @@ -20,11 +20,11 @@ public class WildfireEffect extends StatusEffect { public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { LivingEntity pPlayer = pLivingEntity.getAttacker(); - if (pPlayer != null){ + if (pPlayer != null) { if (pPlayer instanceof PlayerEntity) { ServerWorld world = (ServerWorld) pLivingEntity.getWorld(); - int hradius = (int) Config.getFloat("wildfireRadius", "RunicEffects", ConfigDefaultValues.wildfireRadius); - int vradius = (int) (Config.getFloat("wildfireRadius", "RunicEffects", ConfigDefaultValues.wildfireRadius) / 2); + double hradius = Config.gemPowers.wildfire.radius; + double vradius = Config.gemPowers.wildfire.radius / 2.0; double x = pLivingEntity.getX(); double y = pLivingEntity.getY(); double z = pLivingEntity.getZ(); @@ -51,4 +51,4 @@ public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java index f02b8c45..ad6fd4cf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java @@ -97,6 +97,7 @@ public void baseTick() { abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "fire"); } // AOE Aura + //living entity, ownerEntity, abilityDamage, if (this.age % 10 == 0) { Box box = new Box(this.getX() + radius, this.getY() + (float) radius / 3, this.getZ() + radius, this.getX() - radius, this.getY() - (float) radius / 3, this.getZ() - radius); @@ -246,4 +247,4 @@ public void baseTick() { } super.baseTick(); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index c0365cf5..6fad1c47 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -34,7 +34,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { } //Unbreakable weapon support for Gobber - static boolean unbreakable = Config.getBoolean("compatGobberEndWeaponsUnbreakable", "General", ConfigDefaultValues.compatGobberEndWeaponsUnbreakable); + static boolean unbreakable = Config.general.compatGobberEndWeaponsUnbreakable; /* 1.21 @Override @@ -49,4 +49,4 @@ public void onCraft(ItemStack stack, World world, PlayerEntity player) } */ -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index c2f8b316..fd706518 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -96,7 +96,7 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { if ((entity instanceof LivingEntity user) && (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack || user.getEquippedStack(EquipmentSlot.OFFHAND) == stack)) { - if (entity.age % 4 == 0 && Config.getBoolean("enablePassiveParticles", "General", ConfigDefaultValues.enablePassiveParticles)) { + if (entity.age % 4 == 0 && Config.general.enablePassiveParticles) { float randomx = (float) (Math.random() * 6); float randomz = (float) (Math.random() * 6); diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index fdad6144..ec0f277a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -165,7 +165,7 @@ public abstract class ServerPlayerEntityMixin { ItemStack stackInSlot = serverPlayer.getInventory().getStack(i); if (stackInSlot.isOf(containedRemnant.getItem()) || stackInSlot.isOf(tamperedRemnant.getItem())) { - if (chance < 21 && Config.getBoolean("enableContainedRemnants", "Loot", ConfigDefaultValues.enableContainedRemnants)) { + if (chance < 21 && Config.loot.enableContainedRemnants.get()) { List itemsFromTag = Registries.ITEM.stream() .filter(item -> item.getDefaultStack().isIn(desiredItemsTag)) .toList(); @@ -266,4 +266,4 @@ else if (serverPlayer.getInventory().getStack(i).isOf(ItemsRegistry.TAMPERED_REM } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java index 69ba34cf..d425a342 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java @@ -4,16 +4,19 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipAppender; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.Consumer; -public class GemPower { +public class GemPower implements TooltipAppender { public GemPower(boolean isGreater, PowerType... applicableTypes) { this.isGreater = isGreater; @@ -26,6 +29,15 @@ public GemPower(boolean isGreater, PowerType... applicableTypes) { public boolean isGreater() { return isGreater; } public List applicableTypes() { return applicableTypes; } + @Override + public void appendTooltip(Item.TooltipContext context, Consumer tooltip, TooltipType type) { + List list = new ArrayList<>(); + appendTooltip(ItemStack.EMPTY, context, list, type, false); + for (Text text : list) { + tooltip.accept(text); + } + } + public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContext, List tooltip, TooltipType type, boolean isRunic) {} public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) {} public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) {} diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java index 1b632392..6ca01a4e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPowerComponent.java @@ -78,6 +78,19 @@ public boolean isEmpty() { return runicPower.value().isEmpty() && netherPower.value().isEmpty(); } + public boolean hasPower(RegistryEntry power) { + if (isEmpty()) return false; + return (!this.runicPower.value().isEmpty() && power.getKeyOrValue() == this.runicPower.getKeyOrValue()) || (!this.netherPower.value().isEmpty() && power.getKeyOrValue() == this.netherPower.getKeyOrValue()); + } + + public boolean hasRunic(RegistryEntry power) { + return (!this.runicPower.value().isEmpty() && power.getKeyOrValue().equals(this.runicPower.getKeyOrValue())); + } + + public boolean hasNether(RegistryEntry power) { + return (!this.netherPower.value().isEmpty() && power.getKeyOrValue() == this.netherPower.getKeyOrValue()); + } + public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { runicPower.value().postHit(stack, target, attacker); netherPower.value().postHit(stack, target, attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java index 8b6b0e4f..4dc800d6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ActiveDefencePower.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.power.powers; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; @@ -14,8 +17,9 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; @@ -30,10 +34,10 @@ public ActiveDefencePower() { @Override public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { if (user instanceof PlayerEntity player && player.getInventory().contains(Items.ARROW.getDefaultStack())) { - int frequency = (int) Config.getFloat("activeDefenceFrequency", "RunicEffects", ConfigDefaultValues.activeDefenceFrequency); + int frequency = Config.gemPowers.activeDefence.frequency; if (player.age % frequency == 0) { - int sradius = (int) Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius); - int vradius = (int) (Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius) / 2); + double sradius = Config.gemPowers.activeDefence.radius; + double vradius = Config.gemPowers.activeDefence.radius / 2.0; double x = player.getX(); double y = player.getY(); double z = player.getZ(); @@ -69,4 +73,19 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.activedefencesworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.ACTIVE_DEFENCE); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 1) + public int frequency = 20; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedDouble.Restrict(min = 0.0) + public double radius = 5.0; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java index 037b4fcc..201178aa 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public FloatPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("floatChance", "RunicEffects", ConfigDefaultValues.floatChance); - int duration = (int) Config.getFloat("floatDuration", "RunicEffects", ConfigDefaultValues.floatDuration); + int hitChance = Config.gemPowers.floating.chance; + int duration = Config.gemPowers.floating.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration, this.isGreater() ? 3 : 2), attacker); @@ -42,4 +43,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 50, GemPowerRegistry.FLOAT); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java index a81a126d..c7bb6e4c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java @@ -8,10 +8,11 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -24,8 +25,8 @@ public FreezePower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("freezeChance", "RunicEffects", ConfigDefaultValues.freezeChance); - int freezeDuration = (int) Config.getFloat("freezeDuration", "RunicEffects", ConfigDefaultValues.freezeDuration); + int hitChance = Config.gemPowers.freeze.chance; + int freezeDuration = Config.gemPowers.freeze.duration; int duration = freezeDuration * 3; target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); @@ -42,8 +43,15 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex if (isRunic) tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip1").setStyle(Styles.RUNIC)); else - tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.freeze").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.uniquesworditem.runefused_power.freeze").setStyle(Styles.RUNIC)); tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 120, GemPowerRegistry.FREEZE); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java index 0c47c4a9..1c59a46a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.power.powers; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.util.Walkable; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; @@ -19,7 +23,9 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; @@ -33,11 +39,12 @@ public FrostWardPower() { @Override public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { - int frequency = (int) Config.getFloat("frostWardFrequency", "RunicEffects", ConfigDefaultValues.frostWardFrequency); - int duration = (int) Config.getFloat("frostWardDuration", "RunicEffects", ConfigDefaultValues.frostWardDuration); + int frequency = Config.gemPowers.frostWard.frequency; + if (user.age % frequency == 0) { - float sRadius = Config.getFloat("frostWardRadius", "RunicEffects", ConfigDefaultValues.frostWardRadius); - float vRadius = sRadius / 2f; + int duration = Config.gemPowers.frostWard.duration; + double sRadius = Config.gemPowers.frostWard.radius; + double vRadius = Config.gemPowers.frostWard.radius / 2.0; double x = user.getX(); double y = user.getY(); double z = user.getZ(); @@ -69,4 +76,23 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.frostwardsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.FROST_WARD); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 1) + public int frequency = 20; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedDouble.Restrict(min = 0.0) + public double radius = 5.0; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0) + public int duration = 60; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java index 74a883d3..56868adb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.power.powers; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.util.Walkable; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; @@ -9,7 +12,9 @@ import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.Styles; @@ -23,7 +28,8 @@ public ImbuedPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("imbuedChance", "RunicEffects", ConfigDefaultValues.imbuedChance); + int hitChance = Config.gemPowers.imbued.chance; + int damage = (this.isGreater() ? 10 : 6) - ((stack.getDamage() / stack.getMaxDamage()) * 100) / 20; if (attacker.getRandom().nextInt(100) <= hitChance) { @@ -43,4 +49,15 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.imbuedsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.IMBUED); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java index 4af0abea..52260233 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.power.powers; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.util.Walkable; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -12,8 +16,10 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.power.RunicGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.Styles; @@ -27,7 +33,8 @@ public MomentumPower(boolean isGreater) { @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { - int skillCooldown = (int) Config.getFloat("momentumCooldown", "RunicEffects", ConfigDefaultValues.momentumCooldown); + int skillCooldown = Config.gemPowers.momentum.cooldown; + if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user.isOnGround()) { //Player dash forward if (remainingUseTicks == (this.isGreater() ? 10 : 12) || remainingUseTicks == 13 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { @@ -60,4 +67,15 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.momentumsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.MOMENTUM); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 1) + public int cooldown = 140; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java index c254b1e7..a1056ea0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public ShieldingPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("shieldingChance", "RunicEffects", ConfigDefaultValues.shieldingChance); - int duration = (int) Config.getFloat("shieldingDuration", "RunicEffects", ConfigDefaultValues.shieldingDuration); + int hitChance = Config.gemPowers.shielding.chance; + int duration = Config.gemPowers.shielding.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, duration, this.isGreater() ? 1 : 0), attacker); @@ -42,4 +43,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 120, GemPowerRegistry.SHIELDING); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java index 6aa4a48b..f5166f04 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public SlowPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("slowChance", "RunicEffects", ConfigDefaultValues.slowChance); - int duration = (int) Config.getFloat("slowDuration", "RunicEffects", ConfigDefaultValues.slowDuration); + int hitChance = Config.gemPowers.slow.chance; + int duration = Config.gemPowers.slow.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 2), attacker); @@ -44,4 +45,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(50, 50, GemPowerRegistry.SLOW); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java index c630e232..91c6f79b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public StoneskinPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("stoneskinChance", "RunicEffects", ConfigDefaultValues.stoneskinChance); - int duration = (int) Config.getFloat("stoneskinDuration", "RunicEffects", ConfigDefaultValues.stoneskinDuration); + int hitChance = Config.gemPowers.stoneskin.chance; + int duration = Config.gemPowers.stoneskin.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, this.isGreater() ? 2 : 1), attacker); @@ -44,4 +45,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 60, GemPowerRegistry.STONESKIN); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java index b1873a5e..04fbbfeb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public SwiftnessPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("swiftnessChance", "RunicEffects", ConfigDefaultValues.swiftnessChance); - int duration = (int) Config.getFloat("swiftnessDuration", "RunicEffects", ConfigDefaultValues.swiftnessDuration); + int hitChance = Config.gemPowers.swiftness.chance; + int duration = Config.gemPowers.swiftness.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, this.isGreater() ? 1 : 0), attacker); @@ -42,4 +43,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 300, GemPowerRegistry.SWIFTNESS); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java index 83e5f337..15b3e879 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java @@ -10,7 +10,9 @@ import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -43,4 +45,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 120, GemPowerRegistry.TRAILBLAZE); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java index 69398703..6c6e8c31 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.power.powers; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.util.Walkable; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; @@ -16,7 +19,9 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; @@ -30,8 +35,9 @@ public UnstablePower() { @Override public void inventoryTick(ItemStack stack, World world, LivingEntity user, int slot, boolean selected) { - int duration = (int) Config.getFloat("unstableDuration", "RunicEffects", ConfigDefaultValues.unstableDuration); - int frequency = (int) Config.getFloat("unstableFrequency", "RunicEffects", ConfigDefaultValues.unstableFrequency); + int duration = Config.gemPowers.unstable.duration; + int frequency = Config.gemPowers.unstable.frequency; + if (user.age % frequency == 0) { int random = (int) (Math.random() * 100); if (random < 10) @@ -68,4 +74,20 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.unstablesworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.UNSTABLE); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 1) + public int frequency = 140; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0) + public int duration = 140; + } + } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java index 0fef4e26..4b325d86 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public WeakenPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("weakenChance", "RunicEffects", ConfigDefaultValues.weakenChance); - int duration = (int) Config.getFloat("weakenDuration", "RunicEffects", ConfigDefaultValues.weakenDuration); + int hitChance = Config.gemPowers.weaken.chance; + int duration = Config.gemPowers.weaken.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, this.isGreater() ? 1 : 0), attacker); @@ -43,4 +44,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 120, GemPowerRegistry.WEAKEN); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java index e570634c..5af5edfc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java @@ -1,25 +1,20 @@ package net.sweenus.simplyswords.power.powers; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.projectile.thrown.SnowballEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.util.math.Box; -import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -32,8 +27,8 @@ public WildfirePower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("wildfireChance", "RunicEffects", ConfigDefaultValues.wildfireChance); - int duration = (int) Config.getFloat("wildfireDuration", "RunicEffects", ConfigDefaultValues.wildfireDuration); + int hitChance = Config.gemPowers.wildfire.chance; + int duration = Config.gemPowers.wildfire.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE, duration, 3), attacker); @@ -51,4 +46,15 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(10, 180, GemPowerRegistry.WILDFIRE); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedDouble.Restrict(min = 0.0) + public double radius = 10.0; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java index cd9a4560..81e4968e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java @@ -8,9 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; +import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; +import net.sweenus.simplyswords.config.settings.BasicSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,8 @@ public ZephyrPower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("zephyrChance", "RunicEffects", ConfigDefaultValues.zephyrChance); - int duration = (int) Config.getFloat("zephyrDuration", "RunicEffects", ConfigDefaultValues.zephyrDuration); + int hitChance = Config.gemPowers.zephyr.chance; + int duration = Config.gemPowers.zephyr.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, this.isGreater() ? 1 : 0), attacker); @@ -43,4 +44,11 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(Styles.TEXT)); } + + public static class Settings extends BasicSettings { + + public Settings() { + super(15, 180, GemPowerRegistry.ZEPHYR); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java index 1bd6963b..87294819 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java @@ -63,6 +63,7 @@ public static RegistryEntry gemRandomPower(PowerType powerType) { public static RegistrySupplier GREATER_ZEPHYR = register("greater_zephyr", () -> new ZephyrPower(true)); public static RegistrySupplier FROST_WARD = register("frost_ward", FrostWardPower::new); public static RegistrySupplier WILDFIRE = register("wildfire", WildfirePower::new); + public static RegistrySupplier UNSTABLE = register("unstable", UnstablePower::new); public static RegistrySupplier IMBUED = register("imbued", () -> new ImbuedPower(false)); public static RegistrySupplier GREATER_IMBUED = register("greater_imbued", () -> new ImbuedPower(true)); public static RegistrySupplier PINCUSHION = register("pincushion", () -> new PincushionPower(false)); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 9b9daf2e..4597e30f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -170,8 +170,8 @@ public static void spawnParticle(World world, ParticleEffect particle, double xp public static void playHitSounds(LivingEntity attacker, LivingEntity target) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - boolean impactsounds_enabled = Config.getBoolean("enableWeaponImpactSounds", "General",ConfigDefaultValues.enableWeaponImpactSounds); - float impactsounds_volume = Config.getFloat("weaponImpactSoundsVolume", "General",ConfigDefaultValues.weaponImpactSoundsVolume); + boolean impactsounds_enabled = Config.general.enableWeaponImpactSounds; + float impactsounds_volume = Config.general.weaponImpactSoundsVolume; if (impactsounds_enabled) { int choose_sound = (int) (Math.random() * 30); @@ -392,7 +392,7 @@ public static void decrementStatusEffect(LivingEntity livingEntity, RegistryEntr // createFootfalls - creates weapon footfall particle effects (footsteps) public static void createFootfalls(Entity entity, ItemStack stack, World world, int stepMod, SimpleParticleType particle, SimpleParticleType sprintParticle, SimpleParticleType passiveParticle, boolean passiveParticles) { - if ((entity instanceof PlayerEntity player) && Config.getBoolean("enableWeaponFootfalls", "General",ConfigDefaultValues.enableWeaponFootfalls) && player.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { + if ((entity instanceof PlayerEntity player) && Config.general.enableWeaponFootfalls && player.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { if (isWalking(player) && !player.isSwimming() && player.isOnGround()) { if (stepMod == 6) { if (player.isSprinting()) { @@ -420,7 +420,7 @@ public static void createFootfalls(Entity entity, ItemStack stack, World world, } } } - if (passiveParticles && Config.getBoolean("enablePassiveParticles", "General",ConfigDefaultValues.enablePassiveParticles)) { + if (passiveParticles && Config.general.enablePassiveParticles) { float randomy = (float) (Math.random()); if (stepMod == 1) { world.addParticle(passiveParticle, player.getX() - player.getHandPosOffset(stack.getItem()).getX(), @@ -499,7 +499,7 @@ public static void spawnRainingParticles(ServerWorld world, ParticleEffect parti public static float commonSpellAttributeScaling(float damageModifier, Entity entity, String magicSchool) { if (Platform.isModLoaded("spell_power") && Platform.isFabric()) - if ((entity instanceof PlayerEntity player) && Config.getBoolean("compatEnableSpellPowerScaling", "General",ConfigDefaultValues.compatEnableSpellPowerScaling) && SimplySwords.passVersionCheck("spell_power", minimumSpellPowerVersion)) + if ((entity instanceof PlayerEntity player) && Config.general.compatEnableSpellPowerScaling && SimplySwords.passVersionCheck("spell_power", minimumSpellPowerVersion)) return SimplySwordsExpectPlatform.getSpellPowerDamage(damageModifier, player, magicSchool); return 0f; diff --git a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java index bd9dbb02..94f4763a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java @@ -1,20 +1,39 @@ package net.sweenus.simplyswords.util; +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import dev.architectury.event.events.common.LootEvent; +import net.minecraft.item.Item; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.RandomChanceLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.function.EnchantRandomlyLootFunction; +import net.minecraft.loot.provider.number.ConstantLootNumberProvider; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.util.Identifier; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.SimplySwordsConfig; +import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; + +import java.util.List; public class ModLootTableModifiers { + private static final Supplier> swords = Suppliers.memoize(() -> Registries.ITEM.stream().filter(it -> it instanceof UniqueSwordItem).toList()); + public static void init() { float standardLootWeight = Config.getFloat("standardLootTableWeight", "Loot", ConfigDefaultValues.standardLootTableWeight); float rareLootWeight = Config.getFloat("rareLootTableWeight", "Loot", ConfigDefaultValues.rareLootTableWeight); float runicLootWeight = Config.getFloat("runicLootTableWeight", "Loot", ConfigDefaultValues.runicLootTableWeight); - float uniqueLootWeight = Config.getFloat("uniqueLootTableWeight", "Loot", ConfigDefaultValues.uniqueLootTableWeight); - /* 1.21 temp - //STANDARD + // 1.21 temp + /*//STANDARD LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { //System.out.println( id.getNamespace() + ":" + id.getPath()); //PRINT POSSIBLE PATHS @@ -60,9 +79,9 @@ public static void init() { context.addPool(pool); } } - })); + }));*/ - //RARE + /*//RARE LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { if (!Config.getBoolean("enableLootInVillages", "Loot", ConfigDefaultValues.enableLootInVillages) && id.getPath().contains("village")) { @@ -92,8 +111,8 @@ public static void init() { context.addPool(pool); } } - })); - //RARE 2 + }));*/ + /*//RARE 2 LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { if (!Config.getBoolean("enableLootInVillages", "Loot", ConfigDefaultValues.enableLootInVillages) && id.getPath().contains("village")) { @@ -107,169 +126,37 @@ public static void init() { context.addPool(pool); } } - })); + }));*/ //UNIQUE // Check each loot table against the listed namespaces in the loot_config.json, if there's a match modify the // table according to the config. Otherwise, use the loot global loot modifiers set in the general_config.json - LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { - if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops)) { - if (SimplySwordsConfig.getLootList(id.toString())) { - float lootChance = SimplySwordsConfig.getLootModifiers(id.toString()); - if (lootChance > 0.0) { // If chance is set to 0 treat as a blacklist and don't inject the loot at all - LootPool.Builder pool = LootPool.builder() - .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(lootChance)); - if (Config.getBoolean("enableTheWatcher", "Loot", ConfigDefaultValues.enableTheWatcher)) - pool.with(ItemEntry.builder(ItemsRegistry.WATCHER_CLAYMORE.get())); - if (Config.getBoolean("enableWatchingWarglaive", "Loot", ConfigDefaultValues.enableWatchingWarglaive)) - pool.with(ItemEntry.builder(ItemsRegistry.WATCHING_WARGLAIVE.get())); - if (Config.getBoolean("enableLongswordOfThePlague", "Loot", ConfigDefaultValues.enableLongswordOfThePlague)) - pool.with(ItemEntry.builder(ItemsRegistry.TOXIC_LONGSWORD.get())); - if (Config.getBoolean("enableSwordOnAStick", "Loot", ConfigDefaultValues.enableSwordOnAStick)) - pool.with(ItemEntry.builder(ItemsRegistry.SWORD_ON_A_STICK.get())); - if (Config.getBoolean("enableBramblethorn", "Loot", ConfigDefaultValues.enableBramblethorn)) - pool.with(ItemEntry.builder(ItemsRegistry.BRAMBLETHORN.get())); - if (Config.getBoolean("enableStormsEdge", "Loot", ConfigDefaultValues.enableStormsEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.STORMS_EDGE.get())); - if (Config.getBoolean("enableStormbringer", "Loot", ConfigDefaultValues.enableStormbringer)) - pool.with(ItemEntry.builder(ItemsRegistry.STORMBRINGER.get())); - if (Config.getBoolean("enableMjolnir", "Loot", ConfigDefaultValues.enableMjolnir)) - pool.with(ItemEntry.builder(ItemsRegistry.MJOLNIR.get())); - if (Config.getBoolean("enableEmberblade", "Loot", ConfigDefaultValues.enableEmberblade)) - pool.with(ItemEntry.builder(ItemsRegistry.EMBERBLADE.get())); - if (Config.getBoolean("enableHearthflame", "Loot", ConfigDefaultValues.enableHearthflame)) - pool.with(ItemEntry.builder(ItemsRegistry.HEARTHFLAME.get())); - if (Config.getBoolean("enableTwistedBlade", "Loot", ConfigDefaultValues.enableTwistedBlade)) - pool.with(ItemEntry.builder(ItemsRegistry.TWISTED_BLADE.get())); - if (Config.getBoolean("enableSoulrender", "Loot", ConfigDefaultValues.enableSoulrender)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULRENDER.get())); - if (Config.getBoolean("enableSoulpyre", "Loot", ConfigDefaultValues.enableSoulpyre)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULPYRE.get())); - if (Config.getBoolean("enableSoulkeeper", "Loot", ConfigDefaultValues.enableSoulkeeper)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULKEEPER.get())); - if (Config.getBoolean("enableSoulstealer", "Loot", ConfigDefaultValues.enableSoulstealer)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULSTEALER.get())); - if (Config.getBoolean("enableFrostfall", "Loot", ConfigDefaultValues.enableFrostfall)) - pool.with(ItemEntry.builder(ItemsRegistry.FROSTFALL.get())); - if (Config.getBoolean("enableMoltenEdge", "Loot", ConfigDefaultValues.enableMoltenEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.MOLTEN_EDGE.get())); - if (Config.getBoolean("enableLivyatan", "Loot", ConfigDefaultValues.enableLivyatan)) - pool.with(ItemEntry.builder(ItemsRegistry.LIVYATAN.get())); - if (Config.getBoolean("enableIcewhisper", "Loot", ConfigDefaultValues.enableIcewhisper)) - pool.with(ItemEntry.builder(ItemsRegistry.ICEWHISPER.get())); - if (Config.getBoolean("enableArcanethyst", "Loot", ConfigDefaultValues.enableArcanethyst)) - pool.with(ItemEntry.builder(ItemsRegistry.ARCANETHYST.get())); - if (Config.getBoolean("enableThunderbrand", "Loot", ConfigDefaultValues.enableThunderbrand)) - pool.with(ItemEntry.builder(ItemsRegistry.THUNDERBRAND.get())); - if (Config.getBoolean("enableBrimstone", "Loot", ConfigDefaultValues.enableBrimstone)) - pool.with(ItemEntry.builder(ItemsRegistry.BRIMSTONE_CLAYMORE.get())); - if (Config.getBoolean("enableSlumberingLichblade", "Loot", ConfigDefaultValues.enableSlumberingLichblade)) - pool.with(ItemEntry.builder(ItemsRegistry.SLUMBERING_LICHBLADE.get())); - if (Config.getBoolean("enableShadowsting", "Loot", ConfigDefaultValues.enableShadowsting)) - pool.with(ItemEntry.builder(ItemsRegistry.SHADOWSTING.get())); - if (Config.getBoolean("enableDormantRelic", "Loot", ConfigDefaultValues.enableDormantRelic)) - pool.with(ItemEntry.builder(ItemsRegistry.DORMANT_RELIC.get())); - if (Config.getBoolean("enableWhisperwind", "Loot", ConfigDefaultValues.enableWhisperwind)) - pool.with(ItemEntry.builder(ItemsRegistry.WHISPERWIND.get())); - if (Config.getBoolean("enableEmberlash", "Loot", ConfigDefaultValues.enableEmberlash)) - pool.with(ItemEntry.builder(ItemsRegistry.EMBERLASH.get())); - if (Config.getBoolean("enableWaxweaver", "Loot", ConfigDefaultValues.enableWaxweaver)) - pool.with(ItemEntry.builder(ItemsRegistry.WAXWEAVER.get())); - if (Config.getBoolean("enableHiveheart", "Loot", ConfigDefaultValues.enableHiveheart)) - pool.with(ItemEntry.builder(ItemsRegistry.HIVEHEART.get())); - if (Config.getBoolean("enableStarsEdge", "Loot", ConfigDefaultValues.enableStarsEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.STARS_EDGE.get())); - if (Config.getBoolean("enableWickpiercer", "Loot", ConfigDefaultValues.enableWickpiercer)) - pool.with(ItemEntry.builder(ItemsRegistry.WICKPIERCER.get())); - if (Config.getBoolean("enableTempest", "Loot", ConfigDefaultValues.enableTempest)) - pool.with(ItemEntry.builder(ItemsRegistry.TEMPEST.get())); - if (Config.getBoolean("enableFlamewind", "Loot", ConfigDefaultValues.enableFlamewind)) - pool.with(ItemEntry.builder(ItemsRegistry.FLAMEWIND.get())); - if (Config.getBoolean("enableRibboncleaver", "Loot", ConfigDefaultValues.enableRibboncleaver)) - pool.with(ItemEntry.builder(ItemsRegistry.RIBBONCLEAVER.get())); - if (Config.getBoolean("enableCaelestis", "Loot", ConfigDefaultValues.enableCaelestis)) - pool.with(ItemEntry.builder(ItemsRegistry.CAELESTIS.get())); + LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { + Identifier id = key.getValue(); + if (Config.loot.enableLootDrops) { + Float lootChance = Config.loot.lootTableOptions.get(id); + if (lootChance != null && lootChance > 0f) { - context.addPool(pool); - } + LootPool.Builder pool = LootPool.builder() + .rolls(ConstantLootNumberProvider.create(1)) + .conditionally(RandomChanceLootCondition.builder(lootChance)); + + swords.get().stream().filter(it -> !Config.loot.disabledUniqueWeaponLoot.contains(it)).forEach( item -> + pool.with(ItemEntry.builder(item)) + ); + + context.addPool(pool); } else { if (id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(uniqueLootWeight)); // 1 = 100% of the time - if (Config.getBoolean("enableTheWatcher", "Loot", ConfigDefaultValues.enableTheWatcher)) - pool.with(ItemEntry.builder(ItemsRegistry.WATCHER_CLAYMORE.get())); - if (Config.getBoolean("enableWatchingWarglaive", "Loot", ConfigDefaultValues.enableWatchingWarglaive)) - pool.with(ItemEntry.builder(ItemsRegistry.WATCHING_WARGLAIVE.get())); - if (Config.getBoolean("enableLongswordOfThePlague", "Loot", ConfigDefaultValues.enableLongswordOfThePlague)) - pool.with(ItemEntry.builder(ItemsRegistry.TOXIC_LONGSWORD.get())); - if (Config.getBoolean("enableSwordOnAStick", "Loot", ConfigDefaultValues.enableSwordOnAStick)) - pool.with(ItemEntry.builder(ItemsRegistry.SWORD_ON_A_STICK.get())); - if (Config.getBoolean("enableBramblethorn", "Loot", ConfigDefaultValues.enableBramblethorn)) - pool.with(ItemEntry.builder(ItemsRegistry.BRAMBLETHORN.get())); - if (Config.getBoolean("enableStormsEdge", "Loot", ConfigDefaultValues.enableStormsEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.STORMS_EDGE.get())); - if (Config.getBoolean("enableStormbringer", "Loot", ConfigDefaultValues.enableStormbringer)) - pool.with(ItemEntry.builder(ItemsRegistry.STORMBRINGER.get())); - if (Config.getBoolean("enableMjolnir", "Loot", ConfigDefaultValues.enableMjolnir)) - pool.with(ItemEntry.builder(ItemsRegistry.MJOLNIR.get())); - if (Config.getBoolean("enableEmberblade", "Loot", ConfigDefaultValues.enableEmberblade)) - pool.with(ItemEntry.builder(ItemsRegistry.EMBERBLADE.get())); - if (Config.getBoolean("enableHearthflame", "Loot", ConfigDefaultValues.enableHearthflame)) - pool.with(ItemEntry.builder(ItemsRegistry.HEARTHFLAME.get())); - if (Config.getBoolean("enableTwistedBlade", "Loot", ConfigDefaultValues.enableTwistedBlade)) - pool.with(ItemEntry.builder(ItemsRegistry.TWISTED_BLADE.get())); - if (Config.getBoolean("enableSoulrender", "Loot", ConfigDefaultValues.enableSoulrender)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULRENDER.get())); - if (Config.getBoolean("enableSoulpyre", "Loot", ConfigDefaultValues.enableSoulpyre)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULPYRE.get())); - if (Config.getBoolean("enableSoulkeeper", "Loot", ConfigDefaultValues.enableSoulkeeper)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULKEEPER.get())); - if (Config.getBoolean("enableSoulstealer", "Loot", ConfigDefaultValues.enableSoulstealer)) - pool.with(ItemEntry.builder(ItemsRegistry.SOULSTEALER.get())); - if (Config.getBoolean("enableFrostfall", "Loot", ConfigDefaultValues.enableFrostfall)) - pool.with(ItemEntry.builder(ItemsRegistry.FROSTFALL.get())); - if (Config.getBoolean("enableMoltenEdge", "Loot", ConfigDefaultValues.enableMoltenEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.MOLTEN_EDGE.get())); - if (Config.getBoolean("enableLivyatan", "Loot", ConfigDefaultValues.enableLivyatan)) - pool.with(ItemEntry.builder(ItemsRegistry.LIVYATAN.get())); - if (Config.getBoolean("enableIcewhisper", "Loot", ConfigDefaultValues.enableIcewhisper)) - pool.with(ItemEntry.builder(ItemsRegistry.ICEWHISPER.get())); - if (Config.getBoolean("enableArcanethyst", "Loot", ConfigDefaultValues.enableArcanethyst)) - pool.with(ItemEntry.builder(ItemsRegistry.ARCANETHYST.get())); - if (Config.getBoolean("enableThunderbrand", "Loot", ConfigDefaultValues.enableThunderbrand)) - pool.with(ItemEntry.builder(ItemsRegistry.THUNDERBRAND.get())); - if (Config.getBoolean("enableBrimstone", "Loot", ConfigDefaultValues.enableBrimstone)) - pool.with(ItemEntry.builder(ItemsRegistry.BRIMSTONE_CLAYMORE.get())); - if (Config.getBoolean("enableSlumberingLichblade", "Loot", ConfigDefaultValues.enableSlumberingLichblade)) - pool.with(ItemEntry.builder(ItemsRegistry.SLUMBERING_LICHBLADE.get())); - if (Config.getBoolean("enableShadowsting", "Loot", ConfigDefaultValues.enableShadowsting)) - pool.with(ItemEntry.builder(ItemsRegistry.SHADOWSTING.get())); - if (Config.getBoolean("enableDormantRelic", "Loot", ConfigDefaultValues.enableDormantRelic)) - pool.with(ItemEntry.builder(ItemsRegistry.DORMANT_RELIC.get())); - if (Config.getBoolean("enableWhisperwind", "Loot", ConfigDefaultValues.enableWhisperwind)) - pool.with(ItemEntry.builder(ItemsRegistry.WHISPERWIND.get())); - if (Config.getBoolean("enableEmberlash", "Loot", ConfigDefaultValues.enableEmberlash)) - pool.with(ItemEntry.builder(ItemsRegistry.EMBERLASH.get())); - if (Config.getBoolean("enableWaxweaver", "Loot", ConfigDefaultValues.enableWaxweaver)) - pool.with(ItemEntry.builder(ItemsRegistry.WAXWEAVER.get())); - if (Config.getBoolean("enableHiveheart", "Loot", ConfigDefaultValues.enableHiveheart)) - pool.with(ItemEntry.builder(ItemsRegistry.HIVEHEART.get())); - if (Config.getBoolean("enableStarsEdge", "Loot", ConfigDefaultValues.enableStarsEdge)) - pool.with(ItemEntry.builder(ItemsRegistry.STARS_EDGE.get())); - if (Config.getBoolean("enableWickpiercer", "Loot", ConfigDefaultValues.enableWickpiercer)) - pool.with(ItemEntry.builder(ItemsRegistry.WICKPIERCER.get())); - if (Config.getBoolean("enableTempest", "Loot", ConfigDefaultValues.enableTempest)) - pool.with(ItemEntry.builder(ItemsRegistry.TEMPEST.get())); - if (Config.getBoolean("enableFlamewind", "Loot", ConfigDefaultValues.enableFlamewind)) - pool.with(ItemEntry.builder(ItemsRegistry.FLAMEWIND.get())); - if (Config.getBoolean("enableRibboncleaver", "Loot", ConfigDefaultValues.enableRibboncleaver)) - pool.with(ItemEntry.builder(ItemsRegistry.RIBBONCLEAVER.get())); - if (Config.getBoolean("enableCaelestis", "Loot", ConfigDefaultValues.enableCaelestis)) - pool.with(ItemEntry.builder(ItemsRegistry.CAELESTIS.get())); + .conditionally(RandomChanceLootCondition.builder(Config.loot.uniqueLootTableWeight.get())); // 1 = 100% of the time + + swords.get().stream().filter(it -> !Config.loot.disabledUniqueWeaponLoot.contains(it)).forEach( item -> + pool.with(ItemEntry.builder(item)) + ); context.addPool(pool); } @@ -277,7 +164,6 @@ public static void init() { } })); - */ } } \ No newline at end of file diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index deb71931..5b6bde72 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1314,21 +1314,26 @@ "text.autoconfig.simplyswords_main.option.runic_effects.enableWard": "Enable Ward", "text.autoconfig.simplyswords_main.option.runic_effects.enableImmolate": "Enable Immolate", - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops.@Tooltip" : "Disabling this setting will prevent Simply Swords from generating loot in chests.", - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops.@PrefixText" : "§6[Loot Blacklisting]§7\nSetting any of the below values to false will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops": "Enable loot drops", - "text.autoconfig.simplyswords_main.option.loot.enableLootInVillages.@Tooltip" : "When enabled, Simply Swords loot can spawn in village chests.", - "text.autoconfig.simplyswords_main.option.loot.enableLootInVillages": "Enable loot drops in villages", - "text.autoconfig.simplyswords_main.option.loot.standardLootTableWeight.@Tooltip": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", - "text.autoconfig.simplyswords_main.option.loot.standardLootTableWeight": "Standard loot chance", - "text.autoconfig.simplyswords_main.option.loot.rareLootTableWeight.@Tooltip": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", - "text.autoconfig.simplyswords_main.option.loot.rareLootTableWeight": "Rare loot chance", - "text.autoconfig.simplyswords_main.option.loot.runicLootTableWeight.@Tooltip": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", - "text.autoconfig.simplyswords_main.option.loot.runicLootTableWeight": "Runic loot chance", - "text.autoconfig.simplyswords_main.option.loot.uniqueLootTableWeight.@Tooltip": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", - "text.autoconfig.simplyswords_main.option.loot.uniqueLootTableWeight": "Unique loot chance", - "text.autoconfig.simplyswords_main.option.loot.enableContainedRemnants.@Tooltip": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", - "text.autoconfig.simplyswords_main.option.loot.enableContainedRemnants": "Enable Contained Remnants", + "simplyswords.loot.enableLootDrops": "Enable loot drops", + "simplyswords.loot.enableLootDrops.desc" : "Disabling this setting will prevent Simply Swords from generating loot in chests.", + "simplyswords.loot.enableLootInVillages": "Enable loot drops in villages", + "simplyswords.loot.enableLootInVillages.desc" : "When enabled, Simply Swords loot can spawn in village chests.", + "simplyswords.loot.standardLootTableWeight": "Standard loot chance", + "simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.rareLootTableWeight": "Rare loot chance", + "simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", + "simplyswords.loot.runicLootTableWeight": "Runic loot chance", + "simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", + + "simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", + "simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nSetting any of the below values to false will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", + + "simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", + "simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", + "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", + "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", "text.autoconfig.simplyswords_main.option.loot.enableBrimstone": "Brimstone can be looted", "text.autoconfig.simplyswords_main.option.loot.enableTheWatcher": "The Watcher can be looted", "text.autoconfig.simplyswords_main.option.loot.enableStormsEdge": "Storm's Edge can be looted", @@ -1365,15 +1370,17 @@ "text.autoconfig.simplyswords_main.option.loot.enableRibboncleaver": "Ribboncleaver can be looted", "text.autoconfig.simplyswords_main.option.loot.enableCaelestis": "Caelestis can be looted", - "text.autoconfig.simplyswords_main.option.general.enableWeaponImpactSounds": "Enable weapon impact sounds", - "text.autoconfig.simplyswords_main.option.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", - "text.autoconfig.simplyswords_main.option.general.enableWeaponFootfalls": "Enable weapon footfalls", - "text.autoconfig.simplyswords_main.option.general.enablePassiveParticles": "Enable passive particles", - "text.autoconfig.simplyswords_main.option.general.enableUniqueGemSockets.@Tooltip" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", - "text.autoconfig.simplyswords_main.option.general.enableUniqueGemSockets": "Enable Unique gem sockets", - "text.autoconfig.simplyswords_main.option.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", - "text.autoconfig.simplyswords_main.option.general.compatEnableSpellPowerScaling.@Tooltip" : "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", - "text.autoconfig.simplyswords_main.option.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", + "simplyswords.general": "General Settings", + "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", + "simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", + "simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", + "simplyswords.general.enablePassiveParticles": "Enable passive particles", + "simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", + "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", + "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", + "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", + "simplyswords.general.compatEnableSpellPowerScaling.desc" : "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", + "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap" : "Absorption cap", "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap.@Tooltip" : "Abilities cannot give the user more absorption than this value", @@ -1629,95 +1636,44 @@ "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftChance": "Astral Shift avoidance chance", - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessChance.@PrefixText" : "§b[Swiftness]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.slowChance.@PrefixText" : "§b[Slow]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.slowChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.slowDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.poisonChance.@PrefixText" : "§b[Poison]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.poisonChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.poisonDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.freezeChance.@PrefixText" : "§b[Freeze]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.freezeChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.freezeDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireChance.@PrefixText" : "§b[Wildfire]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireDuration": "Duration", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireRadius": "Radius", - - "text.autoconfig.simplyswords_main.option.runic_effects.floatChance.@PrefixText" : "§b[Float]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.floatChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.floatDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrChance.@PrefixText" : "§b[Zephyr]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingChance.@PrefixText" : "§b[Shielding]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinChance.@PrefixText" : "§b[Stoneskin]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeChance.@PrefixText" : "§b[Trailblaze]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.weakenChance.@PrefixText" : "§b[Weaken]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.weakenChance": "Chance", - "text.autoconfig.simplyswords_main.option.runic_effects.weakenDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.unstableFrequency.@PrefixText" : "§b[Unstable]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.unstableFrequency": "Frequency", - "text.autoconfig.simplyswords_main.option.runic_effects.unstableDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceFrequency.@PrefixText" : "§b[Active Defence]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceFrequency": "Frequency", - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceRadius": "Radius", - - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardFrequency.@PrefixText" : "§b[Frost Ward]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardFrequency": "Frequency", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardRadius": "Radius", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardDuration": "Duration", - - "text.autoconfig.simplyswords_main.option.runic_effects.momentumCooldown.@PrefixText" : "§b[Momentum]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.momentumCooldown": "Chance", - - "text.autoconfig.simplyswords_main.option.runic_effects.imbuedChance.@PrefixText" : "§b[Imbued]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.imbuedChance": "Chance", - - "text.autoconfig.simplyswords_main.option.gem_effects.enableEcho.@PrefixText" : "§4[Netherfused Gem Blacklisting]§7\nSetting any of the below values to false will prevent that netherfused power from being available via gems.", - "text.autoconfig.simplyswords_main.option.gem_effects.enableEcho": "Enable Echo gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableBerserk": "Enable Berserk gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableRadiance": "Enable Radiance gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableOnslaught": "Enable Onslaught gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableNullification": "Enable Nullification gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enablePrecise.@PrefixText" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", - "text.autoconfig.simplyswords_main.option.gem_effects.enablePrecise": "Enable Precise gems", - "text.autoconfig.simplyswords_main.option.gem_effects.preciseChance": "Precise chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableMighty": "Enable Mighty gems", - "text.autoconfig.simplyswords_main.option.gem_effects.mightyChance": "Mighty chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableStealthy": "Enable Stealthy gems", - "text.autoconfig.simplyswords_main.option.gem_effects.stealthyChance": "Stealthy chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableRenewed": "Enable Renewed gems", - "text.autoconfig.simplyswords_main.option.gem_effects.renewedChance": "Renewed chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableAccelerant": "Enable Accelerant gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableLeaping": "Enable Leaping gems", - "text.autoconfig.simplyswords_main.option.gem_effects.leapingChance": "Leaping chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellshield": "Enable Spellshield gems", - "text.autoconfig.simplyswords_main.option.gem_effects.spellshieldChance": "Spellshield chance", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellforged": "Enable Spellforged gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSoulshock": "Enable Soulshock gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellStandard": "Enable Spell Standard gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableWarStandard": "Enable War Standard gems", - "text.autoconfig.simplyswords_main.option.gem_effects.enableDeception": "Enable Deception gems", - - "text.autoconfig.simplyswords_main.option.status_effects.echoDamage": "Echo base damage" + "simplyswords.gem_powers" : "Runic and Fused Gem Powers", + "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", + "simplyswords.gem_powers.disabledPowers.desc" : "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", + "simplyswords.gem_powers.swiftness" : "§b[Swiftness]§7", + "simplyswords.gem_powers.slow" : "§b[Slow]§7", + "simplyswords.gem_powers.poison" : "§b[Poison]§7", + "simplyswords.gem_powers.freeze" : "§b[Freeze]§7", + "simplyswords.gem_powers.wildfire" : "§b[Wildfire]§7", + "simplyswords.gem_powers.floating" : "§b[Float]§7", + "simplyswords.gem_powers.zephyr" : "§b[Zephyr]§7", + "simplyswords.gem_powers.shielding" : "§b[Shielding]§7", + "simplyswords.gem_powers.stoneskin" : "§b[Stoneskin]§7", + "simplyswords.gem_powers.trailblaze" : "§b[Trailblaze]§7", + "simplyswords.gem_powers.weaken" : "§b[Weaken]§7", + "simplyswords.gem_powers.unstable" : "§b[Unstable]§7", + "simplyswords.gem_powers.activeDefence" : "§b[Active Defence]§7", + "simplyswords.gem_powers.frostWard" : "§b[Frost Ward]§7", + "simplyswords.gem_powers.momentum" : "§b[Momentum]§7", + "simplyswords.gem_powers.imbued" : "§b[Imbued]§7", + "simplyswords.gem_powers.simplySkills": "Simply Skills Powers", + "simplyswords.gem_powers.simplySkills.desc" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", + "simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", + "simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", + "simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", + "simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", + "simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", + "simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", + + "text.autoconfig.simplyswords_main.option.status_effects.echoDamage": "Echo base damage", + + "simplyswords.config.basic_settings.chance": "Chance", + "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", + "simplyswords.config.basic_settings.duration": "Duration", + "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", + "simplyswords.config.basic_settings.radius": "Radius", + "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", + "simplyswords.config.basic_settings.frequency": "Frequency", + "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs 'once per X ticks'", + "simplyswords.config.basic_settings.cooldown": "Cooldown", + "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index af1a4816..0815ce7c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,7 +23,7 @@ spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 cloth_config_version=15.0.130 -fzz_config_version=0.5.2+1.21 +fzz_config_version=0.5.4+1.21 mod_menu_version=11.0.2 eldritch_end_version=5035580 necronomicon_version=5041803 \ No newline at end of file From 6db62a8e128b690751ca48e05b5778995efa784e Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 18 Oct 2024 09:22:44 -0400 Subject: [PATCH 23/37] more work on configs. loot buttoned up, uniques started --- .../simplyswords/config/LootConfig.java | 59 +++---------- .../config/UniqueEffectsConfig.java | 15 ++-- .../config/settings/TooltipSettings.java | 16 +++- .../EnchantRandomlyFromTagLootFunction.java | 83 +++++++++++++++++++ .../util/ModLootTableModifiers.java | 66 ++++++--------- .../assets/simplyswords/lang/en_us.json | 41 +-------- 6 files changed, 151 insertions(+), 129 deletions(-) create mode 100644 common/src/main/java/net/sweenus/simplyswords/util/EnchantRandomlyFromTagLootFunction.java diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index c7ca8cfb..cb9e2733 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -27,8 +27,18 @@ public LootConfig() { super(Identifier.of(SimplySwords.MOD_ID, "loot")); } + public ValidatedBoolean enableLootDrops = new ValidatedBoolean(true); + public ValidatedBoolean enableLootInVillages = new ValidatedBoolean(false); + + public ValidatedFloat standardLootTableWeight = new ValidatedFloat(0.01f, 1f, 0f); + public ValidatedFloat rareLootTableWeight = new ValidatedFloat(0.004f, 1f, 0f); + public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); + public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); + + public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() == 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); + @SuppressWarnings("deprecation") - public ValidatedIdentifierMap lootTableOptions = new ValidatedIdentifierMap.Builder() + public ValidatedIdentifierMap uniqueLootTableOptions = new ValidatedIdentifierMap.Builder() .keyHandler(ValidatedIdentifier.ofRegistryKey(RegistryKeys.LOOT_TABLE)) .valueHandler(new ValidatedFloat(0.01f, 1f, 0f)) .defaults( @@ -44,7 +54,7 @@ public LootConfig() { .put(Identifier.ofVanilla("chests/village/village_fletcher"), 0f) .put(Identifier.ofVanilla("chests/village/village_mason"), 0f) .put(Identifier.ofVanilla("chests/village/village_plains_house"), 0f) - .put(Identifier.ofVanilla("chests/village/village_savanna_hous"), 0f) + .put(Identifier.ofVanilla("chests/village/village_savanna_house"), 0f) .put(Identifier.ofVanilla("chests/village/village_shepard"), 0f) .put(Identifier.ofVanilla("chests/village/village_snowy_house"), 0f) .put(Identifier.ofVanilla("chests/village/village_taiga_house"), 0f) @@ -55,50 +65,5 @@ public LootConfig() { .build() ).build(); - public boolean enableLootDrops = true; - public boolean enableLootInVillages = false; - - public ValidatedFloat standardLootTableWeight = new ValidatedFloat(0.01f, 1f, 0f); - public ValidatedFloat rareLootTableWeight = new ValidatedFloat(0.004f, 1f, 0f); - public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); - public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); - public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() == 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); - public ValidatedSet disabledUniqueWeaponLoot = ValidatedRegistryType.of(Items.AIR, Registries.ITEM, (entry) -> entry.value() instanceof UniqueSwordItem).toSet(); - - public boolean enableTheWatcher = true; - public boolean enableWatchingWarglaive = true; - public boolean enableLongswordOfThePlague = true; - public boolean enableSwordOnAStick = true; - public boolean enableBramblethorn = true; - public boolean enableStormsEdge = true; - public boolean enableStormbringer = true; - public boolean enableMjolnir = true; - public boolean enableEmberblade = true; - public boolean enableHearthflame = true; - public boolean enableTwistedBlade = true; - public boolean enableSoulrender = true; - public boolean enableSoulpyre = true; - public boolean enableSoulkeeper = true; - public boolean enableSoulstealer = true; - public boolean enableFrostfall = true; - public boolean enableMoltenEdge = true; - public boolean enableLivyatan = true; - public boolean enableIcewhisper = true; - public boolean enableArcanethyst = true; - public boolean enableThunderbrand = true; - public boolean enableBrimstone = true; - public boolean enableSlumberingLichblade = true; - public boolean enableShadowsting = true; - public boolean enableDormantRelic = true; - public boolean enableWhisperwind = true; - public boolean enableEmberlash = true; - public boolean enableWaxweaver = true; - public boolean enableHiveheart = true; - public boolean enableStarsEdge = true; - public boolean enableWickpiercer = true; - public boolean enableTempest = true; - public boolean enableFlamewind = true; - public boolean enableRibboncleaver = true; - public boolean enableCaelestis = true; } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index 0afd66d4..b6e99628 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -1,11 +1,17 @@ package net.sweenus.simplyswords.config; +import me.fzzyhmstrs.fzzy_config.config.Config; import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; import me.shedaniel.autoconfig.annotation.ConfigEntry; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; +import org.jetbrains.annotations.NotNull; -@Config(name = "unique_effects") -public class UniqueEffectsConfig implements ConfigData { +public class UniqueEffectsConfig extends Config { + + public UniqueEffectsConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "unique_effects")); + } @ConfigEntry.Gui.Tooltip public float abilityAbsorptionCap = 20f; @@ -260,5 +266,4 @@ public class UniqueEffectsConfig implements ConfigData { public float astralShiftDamageModifier = 1.0f; public float astralShiftDamageMax = 300f; public float astralShiftChance = 5f; - -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java index b7cf1782..01977564 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java @@ -3,6 +3,7 @@ import me.fzzyhmstrs.fzzy_config.util.Translatable; import me.fzzyhmstrs.fzzy_config.util.Walkable; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipAppender; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.MutableText; @@ -10,6 +11,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.function.Consumer; import java.util.function.Supplier; public class TooltipSettings implements Translatable, Walkable { @@ -18,8 +20,12 @@ public TooltipSettings(@Nullable Supplier appender) { this.appender = appender; } + public TooltipSettings(ItemStack stack) { + this(() -> new ItemStackAppender(stack)); + } + public TooltipSettings() { - this(null); + this((Supplier) null); } @Nullable @@ -69,4 +75,12 @@ public boolean hasDescription() { System.out.println("description check??"); return appender != null; } + + private static record ItemStackAppender(ItemStack stack) implements TooltipAppender { + + @Override + public void appendTooltip(Item.TooltipContext context, Consumer tooltip, TooltipType type) { + stack.getTooltip(context, null, type).forEach(tooltip); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/EnchantRandomlyFromTagLootFunction.java b/common/src/main/java/net/sweenus/simplyswords/util/EnchantRandomlyFromTagLootFunction.java new file mode 100644 index 00000000..b92d6930 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/util/EnchantRandomlyFromTagLootFunction.java @@ -0,0 +1,83 @@ +package net.sweenus.simplyswords.util; + +import com.mojang.logging.LogUtils; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.function.LootFunction; +import net.minecraft.loot.function.LootFunctionType; +import net.minecraft.loot.function.LootFunctionTypes; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryEntryList; +import net.minecraft.registry.tag.TagKey; +import net.minecraft.util.Util; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.random.Random; +import org.slf4j.Logger; + +import java.util.List; +import java.util.Optional; + +public class EnchantRandomlyFromTagLootFunction implements LootFunction { + + private static final Logger LOGGER = LogUtils.getLogger(); + + EnchantRandomlyFromTagLootFunction(TagKey tagKey) { + this.tagKey = tagKey; + } + + private final TagKey tagKey; + private RegistryEntryList enchants; + + + @Override + public LootFunctionType getType() { + //This isn't typically safe (should have its own type), but since we are never using this function in data packs, should be ok + return LootFunctionTypes.ENCHANT_RANDOMLY; + } + + @Override + public ItemStack apply(ItemStack itemStack, LootContext lootContext) { + if (enchants == null) + enchants = lootContext.getLookup().getOrThrow(RegistryKeys.ENCHANTMENT).getOrThrow(tagKey); + List> list = enchants.stream().toList(); + Random random = lootContext.getRandom(); + Optional> optional = Util.getRandomOrEmpty(list, random); + if (optional.isEmpty()) { + LOGGER.warn("Couldn't find a compatible enchantment for {}", itemStack); + return itemStack; + } else { + return addEnchantmentToStack(itemStack, optional.get(), random); + } + } + + public static EnchantRandomlyFromTagLootFunction.Builder create(TagKey tagKey) { + return new Builder(tagKey); + } + + private static ItemStack addEnchantmentToStack(ItemStack stack, RegistryEntry enchantment, Random random) { + int i = MathHelper.nextInt(random, enchantment.value().getMinLevel(), enchantment.value().getMaxLevel()); + if (stack.isOf(Items.BOOK)) { + stack = new ItemStack(Items.ENCHANTED_BOOK); + } + + stack.addEnchantment(enchantment, i); + return stack; + } + + public static class Builder implements LootFunction.Builder { + + public Builder(TagKey tagKey) { + this.tagKey = tagKey; + } + + private final TagKey tagKey; + + @Override + public LootFunction build() { + return new EnchantRandomlyFromTagLootFunction(tagKey); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java index 94f4763a..aae2475c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java @@ -8,14 +8,12 @@ import net.minecraft.loot.LootTable; import net.minecraft.loot.condition.RandomChanceLootCondition; import net.minecraft.loot.entry.ItemEntry; -import net.minecraft.loot.function.EnchantRandomlyLootFunction; import net.minecraft.loot.provider.number.ConstantLootNumberProvider; import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.tag.EnchantmentTags; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.config.SimplySwordsConfig; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.ItemsRegistry; @@ -27,24 +25,17 @@ public class ModLootTableModifiers { public static void init() { - float standardLootWeight = Config.getFloat("standardLootTableWeight", "Loot", ConfigDefaultValues.standardLootTableWeight); - float rareLootWeight = Config.getFloat("rareLootTableWeight", "Loot", ConfigDefaultValues.rareLootTableWeight); - float runicLootWeight = Config.getFloat("runicLootTableWeight", "Loot", ConfigDefaultValues.runicLootTableWeight); - - // 1.21 temp - /*//STANDARD - LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { - if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + //STANDARD + LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { + Identifier id = key.getValue(); + if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { //System.out.println( id.getNamespace() + ":" + id.getPath()); //PRINT POSSIBLE PATHS - if (!Config.getBoolean("enableLootInVillages", "Loot", ConfigDefaultValues.enableLootInVillages) && id.getPath().contains("village")) { - //Do nothing - } - else { + if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(standardLootWeight)) // 1 = 100% of the time - .apply(EnchantRandomlyLootFunction.builder()) + .conditionally(RandomChanceLootCondition.builder(Config.loot.standardLootTableWeight.get())) // 1 = 100% of the time + .apply(EnchantRandomlyFromTagLootFunction.create(EnchantmentTags.ON_RANDOM_LOOT)) //This is not ideal, but forge doesn't expose the registry wrapper so... .with(ItemEntry.builder(ItemsRegistry.IRON_LONGSWORD.get())) .with(ItemEntry.builder(ItemsRegistry.IRON_TWINBLADE.get())) .with(ItemEntry.builder(ItemsRegistry.IRON_RAPIER.get())) @@ -79,19 +70,17 @@ public static void init() { context.addPool(pool); } } - }));*/ + })); - /*//RARE - LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { - if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { - if (!Config.getBoolean("enableLootInVillages", "Loot", ConfigDefaultValues.enableLootInVillages) && id.getPath().contains("village")) { - //Do nothing - } - else { + //RARE + LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { + Identifier id = key.getValue(); + if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(rareLootWeight)) // 1 = 100% of the time - .apply(EnchantRandomlyLootFunction.builder()) + .conditionally(RandomChanceLootCondition.builder(Config.loot.rareLootTableWeight.get())) // 1 = 100% of the time + .apply(EnchantRandomlyFromTagLootFunction.create(EnchantmentTags.ON_RANDOM_LOOT)) //This is not ideal, but forge doesn't expose the registry wrapper so... .with(ItemEntry.builder(ItemsRegistry.DIAMOND_LONGSWORD.get())) .with(ItemEntry.builder(ItemsRegistry.DIAMOND_TWINBLADE.get())) .with(ItemEntry.builder(ItemsRegistry.DIAMOND_RAPIER.get())) @@ -111,22 +100,21 @@ public static void init() { context.addPool(pool); } } - }));*/ - /*//RARE 2 - LootEvent.MODIFY_LOOT_TABLE.register(((lootTables, id, context, builtin) -> { - if (Config.getBoolean("enableLootDrops", "Loot", ConfigDefaultValues.enableLootDrops) && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { - if (!Config.getBoolean("enableLootInVillages", "Loot", ConfigDefaultValues.enableLootInVillages) && id.getPath().contains("village")) { - //Do nothing - } - else { + })); + + //Runic / Rare 2 + LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { + Identifier id = key.getValue(); + if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(runicLootWeight)) // 1 = 100% of the time + .conditionally(RandomChanceLootCondition.builder(Config.loot.runicLootTableWeight.get())) // 1 = 100% of the time .with(ItemEntry.builder(ItemsRegistry.RUNIC_TABLET.get())); context.addPool(pool); } } - }));*/ + })); //UNIQUE // Check each loot table against the listed namespaces in the loot_config.json, if there's a match modify the @@ -134,8 +122,8 @@ public static void init() { LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { Identifier id = key.getValue(); - if (Config.loot.enableLootDrops) { - Float lootChance = Config.loot.lootTableOptions.get(id); + if (Config.loot.enableLootDrops.get()) { + Float lootChance = Config.loot.uniqueLootTableOptions.get(id); if (lootChance != null && lootChance > 0f) { LootPool.Builder pool = LootPool.builder() diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index 5b6bde72..b848a1e6 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1322,11 +1322,13 @@ "simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", "simplyswords.loot.rareLootTableWeight": "Rare loot chance", "simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", - "simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", "simplyswords.loot.runicLootTableWeight": "Runic loot chance", - "simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", "simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", + "simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.uniqueLootTableOptions": "Unique Weapon Loot Tables", + "simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that", "simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", "simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nSetting any of the below values to false will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", @@ -1334,41 +1336,6 @@ "simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", - "text.autoconfig.simplyswords_main.option.loot.enableBrimstone": "Brimstone can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableTheWatcher": "The Watcher can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableStormsEdge": "Storm's Edge can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableStormbringer": "Stormbringer can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSwordOnAStick": "Sword on a Stick can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableBramblethorn": "Bramblethorn can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableWatchingWarglaive": "Watching Warglaive can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableLongswordOfThePlague": "Longsword of The Plague can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableEmberblade": "Emberblade can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableHearthflame": "Hearthflame can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSoulkeeper": "Soulkeeper can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableTwistedBlade": "Twisted Blade can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSoulstealer": "Soulstealer can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSoulrender": "Soulrender can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableMjolnir": "Mjolnir can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSoulpyre": "Soulpyre can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableFrostfall": "Frostfall can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableMoltenEdge": "Molten Edge can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableLivyatan": "Livyatan can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableIcewhisper": "Icewhisper can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableArcanethyst": "Arcanethyst can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableThunderbrand": "Thunderbrand can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableSlumberingLichblade": "Lichblade can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableShadowsting": "Shadowsting can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableDormantRelic": "Dormant Relic can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableWhisperwind": "Whisperwind can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableEmberlash": "Emberlash can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableWaxweaver": "Waxweaver can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableHiveheart": "Hiveheart can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableStarsEdge": "Star's Edge can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableWickpiercer": "Wickpiercer can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableTempest": "Tempest can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableFlamewind": "Flamewind can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableRibboncleaver": "Ribboncleaver can be looted", - "text.autoconfig.simplyswords_main.option.loot.enableCaelestis": "Caelestis can be looted", "simplyswords.general": "General Settings", "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", From c44f45321db38ef10bd0cd06b96720c349f452e3 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Mon, 21 Oct 2024 21:28:45 -0400 Subject: [PATCH 24/37] big batch of uniques config work. update to fconfig 0.5.5 --- .../sweenus/simplyswords/SimplySwords.java | 5 +- .../sweenus/simplyswords/config/Config.java | 10 +- .../simplyswords/config/ConfigWrapper.java | 9 - .../simplyswords/config/LootConfig.java | 14 +- .../config/UniqueEffectsConfig.java | 101 ++----- .../config/UniqueEffectsConfigOld.java | 267 ++++++++++++++++++ .../ChanceDurationRadiusSettings.java | 37 +++ ...tings.java => ChanceDurationSettings.java} | 6 +- .../settings/ItemStackTooltipAppender.java | 49 ++++ .../item/component/RelocationComponent.java | 58 ++++ .../item/component/StoredChargeComponent.java | 24 ++ .../item/custom/BrambleSwordItem.java | 39 ++- .../item/custom/BrimstoneClaymoreItem.java | 30 +- .../item/custom/EmberIreSwordItem.java | 57 ++-- .../item/custom/FrostfallSwordItem.java | 54 ++-- .../item/custom/HearthflameSwordItem.java | 88 +++--- .../item/custom/PlagueSwordItem.java | 34 ++- .../item/custom/SoulPyreSwordItem.java | 123 ++++---- .../item/custom/SoulkeeperSwordItem.java | 58 ++-- .../item/custom/SoulrenderSwordItem.java | 103 ++++--- .../item/custom/StealSwordItem.java | 76 +++-- .../item/custom/StormSwordItem.java | 60 ++-- .../item/custom/TwistedBladeItem.java | 59 ++-- .../item/custom/WatcherSwordItem.java | 65 +++-- .../mixin/ServerPlayerEntityMixin.java | 3 +- .../simplyswords/power/powers/FloatPower.java | 4 +- .../power/powers/FreezePower.java | 4 +- .../power/powers/ShieldingPower.java | 4 +- .../simplyswords/power/powers/SlowPower.java | 4 +- .../power/powers/StoneskinPower.java | 4 +- .../power/powers/SwiftnessPower.java | 4 +- .../power/powers/TrailblazePower.java | 4 +- .../power/powers/WeakenPower.java | 4 +- .../power/powers/WildfirePower.java | 12 +- .../power/powers/ZephyrPower.java | 4 +- .../registry/ComponentTypeRegistry.java | 10 +- .../simplyswords/util/AbilityMethods.java | 1 + .../simplyswords/util/HelperMethods.java | 2 +- .../util/ModLootTableModifiers.java | 32 ++- .../net/sweenus/simplyswords/util/Styles.java | 1 + .../assets/simplyswords/lang/en_us.json | 150 +++++----- .../fabric/FabricHelperMethods.java | 20 +- gradle.properties | 2 +- 43 files changed, 1138 insertions(+), 557 deletions(-) create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationRadiusSettings.java rename common/src/main/java/net/sweenus/simplyswords/config/settings/{BasicSettings.java => ChanceDurationSettings.java} (74%) create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index c03fffe6..b616e293 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -66,7 +66,7 @@ public class SimplySwords { public static LootConfigOld lootConfigOld; public static RunicEffectsConfig runicEffectsConfig; public static StatusEffectsConfig statusEffectsConfig; - public static UniqueEffectsConfig uniqueEffectsConfig; + public static UniqueEffectsConfigOld uniqueEffectsConfigOld; public static WeaponAttributesConfig weaponAttributesConfig; public static String minimumEldritchEndVersion = "0.2.40"; @@ -81,9 +81,6 @@ public static void init() { AutoConfig.register(ConfigWrapper.class, PartitioningSerializer.wrap(JanksonConfigSerializer::new)); lootConfigOld = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().loot; - runicEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().runic_effects; - statusEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().status_effects; - uniqueEffectsConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().unique_effects; weaponAttributesConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().weapon_attributes; String version = SimplySwordsExpectPlatform.getVersion(); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index 88760586..576c768a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -21,10 +21,7 @@ public class Config { public static void init() {} - public static final GeneralConfig general = ConfigApiJava.registerAndLoadConfig(GeneralConfig::new); - public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); - public static final LootConfig loot = ConfigApiJava.registerAndLoadConfig(LootConfig::new); - public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); + public static File createFile(String path, String contents, boolean overwrite) { File file = new File(path); @@ -190,4 +187,9 @@ public static void safeValueFetch(String type, String parent) { } + public static final GeneralConfig general = ConfigApiJava.registerAndLoadConfig(GeneralConfig::new); + public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); + public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); + public static final UniqueEffectsConfig uniqueEffects = ConfigApiJava.registerAndLoadConfig(UniqueEffectsConfig::new); + } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java index fbd1913d..0c58a204 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java @@ -11,15 +11,6 @@ public class ConfigWrapper extends PartitioningSerializer.GlobalData { @ConfigEntry.Category("loot") @ConfigEntry.Gui.TransitiveObject public LootConfigOld loot = new LootConfigOld(); - @ConfigEntry.Category("runic_effects") - @ConfigEntry.Gui.TransitiveObject - public RunicEffectsConfig runic_effects = new RunicEffectsConfig(); - @ConfigEntry.Category("status_effects") - @ConfigEntry.Gui.TransitiveObject - public StatusEffectsConfig status_effects = new StatusEffectsConfig(); - @ConfigEntry.Category("unique_effects") - @ConfigEntry.Gui.TransitiveObject - public UniqueEffectsConfig unique_effects = new UniqueEffectsConfig(); @ConfigEntry.Category("weapon_attributes") @ConfigEntry.Gui.TransitiveObject public WeaponAttributesConfig weapon_attributes = new WeaponAttributesConfig(); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index cb9e2733..7965bda3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableMap; import me.fzzyhmstrs.fzzy_config.annotations.Action; import me.fzzyhmstrs.fzzy_config.annotations.RequiresAction; +import me.fzzyhmstrs.fzzy_config.api.ConfigApiJava; import me.fzzyhmstrs.fzzy_config.config.Config; import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedIdentifierMap; import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; @@ -12,13 +13,14 @@ import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import net.minecraft.item.Item; -import net.minecraft.item.Items; +import net.minecraft.loot.LootTables; import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKeys; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; @RequiresAction(action = Action.RELOAD_DATA) public class LootConfig extends Config { @@ -27,6 +29,8 @@ public LootConfig() { super(Identifier.of(SimplySwords.MOD_ID, "loot")); } + public static final LootConfig INSTANCE = ConfigApiJava.registerAndLoadConfig(LootConfig::new); + public ValidatedBoolean enableLootDrops = new ValidatedBoolean(true); public ValidatedBoolean enableLootInVillages = new ValidatedBoolean(false); @@ -35,11 +39,11 @@ public LootConfig() { public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); - public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() == 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); + public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() > 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); @SuppressWarnings("deprecation") public ValidatedIdentifierMap uniqueLootTableOptions = new ValidatedIdentifierMap.Builder() - .keyHandler(ValidatedIdentifier.ofRegistryKey(RegistryKeys.LOOT_TABLE)) + .keyHandler(ValidatedIdentifier.ofRegistryKey(LootTables.END_CITY_TREASURE_CHEST.getValue(), RegistryKeys.LOOT_TABLE)) .valueHandler(new ValidatedFloat(0.01f, 1f, 0f)) .defaults( ImmutableMap.builder() @@ -55,7 +59,7 @@ public LootConfig() { .put(Identifier.ofVanilla("chests/village/village_mason"), 0f) .put(Identifier.ofVanilla("chests/village/village_plains_house"), 0f) .put(Identifier.ofVanilla("chests/village/village_savanna_house"), 0f) - .put(Identifier.ofVanilla("chests/village/village_shepard"), 0f) + .put(Identifier.ofVanilla("chests/village/village_shepherd"), 0f) .put(Identifier.ofVanilla("chests/village/village_snowy_house"), 0f) .put(Identifier.ofVanilla("chests/village/village_taiga_house"), 0f) .put(Identifier.ofVanilla("chests/village/village_tannery"), 0f) @@ -65,5 +69,5 @@ public LootConfig() { .build() ).build(); - public ValidatedSet disabledUniqueWeaponLoot = ValidatedRegistryType.of(Items.AIR, Registries.ITEM, (entry) -> entry.value() instanceof UniqueSwordItem).toSet(); + public ValidatedSet disabledUniqueWeaponLoot = ValidatedRegistryType.of(ItemsRegistry.ARCANETHYST.value(), Registries.ITEM, (entry) -> entry.value() instanceof UniqueSwordItem).toSet(); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index b6e99628..768e764f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -1,11 +1,21 @@ package net.sweenus.simplyswords.config; import me.fzzyhmstrs.fzzy_config.config.Config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.ConfigEntry; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; -import org.jetbrains.annotations.NotNull; +import net.sweenus.simplyswords.item.custom.BrambleSwordItem; +import net.sweenus.simplyswords.item.custom.BrimstoneClaymoreItem; +import net.sweenus.simplyswords.item.custom.EmberIreSwordItem; +import net.sweenus.simplyswords.item.custom.FrostfallSwordItem; +import net.sweenus.simplyswords.item.custom.HearthflameSwordItem; +import net.sweenus.simplyswords.item.custom.PlagueSwordItem; +import net.sweenus.simplyswords.item.custom.SoulPyreSwordItem; +import net.sweenus.simplyswords.item.custom.SoulkeeperSwordItem; +import net.sweenus.simplyswords.item.custom.SoulrenderSwordItem; +import net.sweenus.simplyswords.item.custom.StealSwordItem; +import net.sweenus.simplyswords.item.custom.StormSwordItem; +import net.sweenus.simplyswords.item.custom.TwistedBladeItem; +import net.sweenus.simplyswords.item.custom.WatcherSwordItem; public class UniqueEffectsConfig extends Config { @@ -13,78 +23,23 @@ public UniqueEffectsConfig() { super(Identifier.of(SimplySwords.MOD_ID, "unique_effects")); } - @ConfigEntry.Gui.Tooltip public float abilityAbsorptionCap = 20f; - @ConfigEntry.Gui.PrefixText - public float watcherChance = 5f; - public float watcherRestoreAmount = 0.5f; - public float watcherRadius = 8f; - public float omenChance = 5f; - public float omenAbsorptionCap = 20f; - public float omenInstantKillThreshold = 0.25f; - - @ConfigEntry.Gui.PrefixText - public float stealChance = 25f; - public float stealDuration = 400f; - public float stealInvisDuration = 120f; - public float stealBlindDuration = 200f; - public float stealRadius = 30f; - public float stealSpellScaling = 2.6f; - - @ConfigEntry.Gui.PrefixText - public float soulMeldChance = 75f; - public float soulMeldDuration = 250f; - public float soulMeldRadius = 5f; - - @ConfigEntry.Gui.PrefixText - public float soulrendChance = 85f; - public float soulrendDuration = 500f; - public float soulrendDamageMulti = 3f; - public float soulrendHealMulti = 0.5f; - public float soulrendRadius = 10f; - public float soulrendMaxStacks = 8f; - public float soulrendDamageSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float ferocityChance = 75f; - public float ferocityDuration = 100f; - public float ferocityMaxStacks = 15f; - public float ferocityStrengthTier = 2f; - - @ConfigEntry.Gui.PrefixText - public float emberIreChance = 30f; - public float emberIreDuration = 150f; + public WatcherSwordItem.EffectSettings watcher = new WatcherSwordItem.EffectSettings(); + public StealSwordItem.EffectSettings steal = new StealSwordItem.EffectSettings(); + public SoulkeeperSwordItem.EffectSettings soulkeeper = new SoulkeeperSwordItem.EffectSettings(); + public SoulrenderSwordItem.EffectSettings soulRend = new SoulrenderSwordItem.EffectSettings(); + public TwistedBladeItem.EffectSettings ferocity = new TwistedBladeItem.EffectSettings(); + public EmberIreSwordItem.EffectSettings emberIre = new EmberIreSwordItem.EffectSettings(); + public HearthflameSwordItem.EffectSettings volcanicFury = new HearthflameSwordItem.EffectSettings(); + public StormSwordItem.EffectSettings storm = new StormSwordItem.EffectSettings(); + public PlagueSwordItem.EffectSettings plague = new PlagueSwordItem.EffectSettings(); + public BrimstoneClaymoreItem.EffectSettings brimstone = new BrimstoneClaymoreItem.EffectSettings(); + public BrambleSwordItem.EffectSettings bramble = new BrambleSwordItem.EffectSettings(); + public SoulPyreSwordItem.EffectSettings soultether = new SoulPyreSwordItem.EffectSettings(); + public FrostfallSwordItem.EffectSettings frostFury = new FrostfallSwordItem.EffectSettings(); - @ConfigEntry.Gui.PrefixText - public float volcanicFuryChance = 25f; - public float volcanicFuryRadius = 3f; - public float volcanicFuryCooldown = 300f; - public float volcanicFuryDamage = 3f; - public float volcanicFurySpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float stormChance = 15f; - public float stormRadius = 10f; - public float stormCooldown = 700f; - public float stormFrequency = 10f; - public float stormDuration = 200f; - - @ConfigEntry.Gui.PrefixText - public float plagueChance = 55f; - - @ConfigEntry.Gui.PrefixText - public float brimstoneChance = 15f; - - @ConfigEntry.Gui.PrefixText - public float brambleChance = 45f; - - @ConfigEntry.Gui.PrefixText - public float soultetherRange = 32f; - public float soultetherRadius = 8f; - public float soultetherDuration = 120f; - public float soultetherIgniteDuration = 120f; - public float soultetherResistanceDuration = 60f; + /* @ConfigEntry.Gui.PrefixText public float frostFuryCooldown = 380f; @@ -265,5 +220,5 @@ public UniqueEffectsConfig() { public float astralShiftDuration = 100f; public float astralShiftDamageModifier = 1.0f; public float astralShiftDamageMax = 300f; - public float astralShiftChance = 5f; + public float astralShiftChance = 5f;*/ } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java new file mode 100644 index 00000000..1e3b4407 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java @@ -0,0 +1,267 @@ +package net.sweenus.simplyswords.config; + +import me.fzzyhmstrs.fzzy_config.config.Config; +import me.shedaniel.autoconfig.annotation.ConfigEntry; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; + +public class UniqueEffectsConfigOld extends Config { + + public UniqueEffectsConfigOld() { + super(Identifier.of(SimplySwords.MOD_ID, "unique_effects")); + } + + @ConfigEntry.Gui.Tooltip + public float abilityAbsorptionCap = 20f; + + @ConfigEntry.Gui.PrefixText + public float watcherChance = 5f; + public float watcherRestoreAmount = 0.5f; + public float watcherRadius = 8f; + public float omenChance = 5f; + public float omenAbsorptionCap = 20f; + public float omenInstantKillThreshold = 0.25f; + + @ConfigEntry.Gui.PrefixText + public float stealChance = 25f; + public float stealDuration = 400f; + public float stealInvisDuration = 120f; + public float stealBlindDuration = 200f; + public float stealRadius = 30f; + public float stealSpellScaling = 2.6f; + + @ConfigEntry.Gui.PrefixText + public float soulMeldChance = 75f; + public float soulMeldDuration = 250f; + public float soulMeldRadius = 5f; + + @ConfigEntry.Gui.PrefixText + public float soulrendChance = 85f; + public float soulrendDuration = 500f; + public float soulrendDamageMulti = 3f; + public float soulrendHealMulti = 0.5f; + public float soulrendRadius = 10f; + public float soulrendMaxStacks = 8f; + public float soulrendDamageSpellScaling = 0.4f; + + @ConfigEntry.Gui.PrefixText + public float ferocityChance = 75f; + public float ferocityDuration = 100f; + public float ferocityMaxStacks = 15f; + public float ferocityStrengthTier = 2f; + + @ConfigEntry.Gui.PrefixText + public float emberIreChance = 30f; + public float emberIreDuration = 150f; + + @ConfigEntry.Gui.PrefixText + public float volcanicFuryChance = 25f; + public float volcanicFuryRadius = 3f; + public float volcanicFuryCooldown = 300f; + public float volcanicFuryDamage = 3f; + public float volcanicFurySpellScaling = 1.4f; + + @ConfigEntry.Gui.PrefixText + public float stormChance = 15f; + public float stormRadius = 10f; + public float stormCooldown = 700f; + public float stormFrequency = 10f; + public float stormDuration = 200f; + + @ConfigEntry.Gui.PrefixText + public float plagueChance = 55f; + + @ConfigEntry.Gui.PrefixText + public float brimstoneChance = 15f; + + @ConfigEntry.Gui.PrefixText + public float brambleChance = 45f; + + @ConfigEntry.Gui.PrefixText + public float soultetherRange = 32f; + public float soultetherRadius = 8f; + public float soultetherDuration = 120f; + public float soultetherIgniteDuration = 120f; + public float soultetherResistanceDuration = 60f; + + @ConfigEntry.Gui.PrefixText + public float frostFuryCooldown = 380f; + public float frostFuryRadius = 3f; + public float frostFuryDamage = 18f; + public float frostFuryChance = 15f; + public float frostFuryDuration = 80f; + public float frostFurySpellScaling = 1.4f; + + @ConfigEntry.Gui.PrefixText + public float moltenRoarCooldown = 320f; + public float moltenRoarRadius = 5f; + public float moltenRoarKnockbackStrength = 5f; + public float moltenRoarChance = 15f; + public float moltenRoarDuration = 100f; + + @ConfigEntry.Gui.PrefixText + public float frostShatterRadius = 3f; + public float frostShatterDamage = 18f; + public float frostShatterChance = 15f; + public float frostShatterDuration = 80f; + public float frostShatterSpellScaling = 1.7f; + + @ConfigEntry.Gui.PrefixText + public float permafrostRadius = 4f; + public float permafrostDamage = 1f; + public float permafrostCooldown = 600f; + public float permafrostDuration = 200f; + public float permafrostSpellScaling = 0.9f; + + @ConfigEntry.Gui.PrefixText + public float arcaneAssaultRadius = 6f; + public float arcaneAssaultDamage = 1f; + public float arcaneAssaultCooldown = 220; + public float arcaneAssaultChance = 25f; + public float arcaneAssaultDuration = 120f; + public float arcaneAssaultSpellScaling = 1.4f; + + @ConfigEntry.Gui.PrefixText + public float thunderBlitzRadius = 2f; + public float thunderBlitzDamage = 3f; + public float thunderBlitzCooldown = 250; + public float thunderBlitzChance = 15f; + public float thunderBlitzSpellScaling = 1.7f; + + @ConfigEntry.Gui.PrefixText + public float stormJoltCooldown = 100f; + public float stormJoltChance = 15f; + + @ConfigEntry.Gui.PrefixText + public float soulAnguishRadius = 3f; + public float soulAnguishAbsorptionCap = 8f; + public float soulAnguishDamage = 4f; + public float soulAnguishCooldown = 700; + public float soulAnguishDuration = 200f; + public float soulAnguishHeal = 0.5f; + public float soulAnguishRange = 22f; + public float soulAnguishSpellScaling = 1.6f; + + @ConfigEntry.Gui.PrefixText + public float shockDeflectBlockDuration = 35f; + public float shockDeflectDamage = 12f; + public float shockDeflectCooldown = 90; + public float shockDeflectParryDuration = 10f; + public float shockDeflectSpellScaling = 2.3f; + + @ConfigEntry.Gui.PrefixText + public float shadowmistCooldown = 200f; + public float shadowmistChance = 25f; + public float shadowmistDamageMulti = 0.8f; + public float shadowmistBlindDuration = 60f; + public float shadowmistRadius = 4f; + + @ConfigEntry.Gui.PrefixText + public float abyssalStandardCooldown = 700; + public float abyssalStandardChance = 15f; + public float abyssalStandardDamage = 3f; + public float abyssalStandardSpellScaling = 1.2f; + + @ConfigEntry.Gui.PrefixText + public float righteousStandardCooldown = 700f; + public float righteousStandardChance = 15f; + public float righteousStandardDamage = 3f; + public float righteousStandardSpellScaling = 1.1f; + public float righteousStandardSpellScalingHeal = 1.3f; + + @ConfigEntry.Gui.PrefixText + public float fatalFlickerCooldown = 175f; + public float fatalFlickerChance = 15f; + public float fatalFlickerRadius = 3f; + public float fatalFlickerMaxStacks = 99f; + public float fatalFlickerDashVelocity = 3f; + + @ConfigEntry.Gui.PrefixText + public float smoulderCooldown = 80f; + public float smoulderMaxStacks = 5f; + public float smoulderHeal = 15f; + public float smoulderSpellScaling = 0.4f; + + @ConfigEntry.Gui.PrefixText + public float waxweaveCooldown = 1200f; + public float waxweaveMaxStacks = 3f; + + @ConfigEntry.Gui.PrefixText + public float hivemindCooldown = 60f; + public float hivemindDuration = 450f; + public float hivemindDamage = 1.1f; + + @ConfigEntry.Gui.PrefixText + public float celestialSurgeCooldown = 120f; + public float celestialSurgeDuration = 120f; + public float celestialSurgeStacks = 6f; + public float celestialSurgeDamageModifier = 0.40f; + public float celestialSurgeLifestealModifier = 0.10f; + + @ConfigEntry.Gui.PrefixText + public float flickerFuryCooldown = 220f; + public float flickerFuryDuration = 40f; + public float flickerFuryDamage = 1.0f; + + @ConfigEntry.Gui.PrefixText + public float vortexDuration = 1200f; + public float vortexMaxSize = 30f; + public float vortexMaxStacks = 10f; + public float vortexSpellScaling = 0.3f; + + @ConfigEntry.Gui.PrefixText + public float voidcallerDuration = 250f; + public float voidcallerStartingTickFrequency = 12f; + public float voidcallerDamageModifier = 1.0f; + public float voidcallerCorruptionFrequency = 60f; + public float voidcallerCorruptionPerTick = 1.0f; + public float voidcallerCorruptionDuration = 1200f; + public float voidcallerCorruptionMax = 100f; + + @ConfigEntry.Gui.PrefixText + public float emberstormSpreadCap = 6f; + public float emberstormDamage = 5f; + public float emberstormDetonationDamage = 15f; + public float emberstormCooldown = 980f; + public float emberstormMaxHaste = 10f; + public float emberstormSpellScaling = 0.4f; + + @ConfigEntry.Gui.PrefixText + public float ribbonwrathCooldown = 40f; + public float ribbonwrathResilienceAmplifier = 1f; + public float ribbonwrathDamageBonusPercent = 0.95f; + + @ConfigEntry.Gui.PrefixText + public float magistormCooldown = 980f; + public float magistormDuration = 400f; + public float magistormRadius = 4f; + public float magistormDamage = 3f; + public float magistormRepairChance = 0.25f; + public float magistormSpellScaling = 0.5f; + + @ConfigEntry.Gui.PrefixText + public float enigmaCooldown = 800f; + public float enigmaDecayRate = 2f; + public float enigmaChaseRadius = 16f; + + @ConfigEntry.Gui.PrefixText + public float magibladeCooldown = 35; + public float magibladeSonicDistance = 16f; + public float magibladeDamageModifier = 0.7f; + public float magibladeRepelChance = 55f; + public float magibladeRepelRadius = 4f; + + @ConfigEntry.Gui.PrefixText + public float magislamCooldown = 140; + public float magislamRadius = 4f; + public float magislamDamageModifier = 2.0f; + public float magislamMagicChance = 35f; + public float magislamMagicModifier = 0.5f; + + @ConfigEntry.Gui.PrefixText + public float astralShiftCooldown = 420; + public float astralShiftDuration = 100f; + public float astralShiftDamageModifier = 1.0f; + public float astralShiftDamageMax = 300f; + public float astralShiftChance = 5f; +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationRadiusSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationRadiusSettings.java new file mode 100644 index 00000000..baf4f942 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationRadiusSettings.java @@ -0,0 +1,37 @@ +package net.sweenus.simplyswords.config.settings; + +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; +import net.minecraft.item.tooltip.TooltipAppender; + +import java.util.function.Supplier; + +public class ChanceDurationRadiusSettings extends TooltipSettings { + + public ChanceDurationRadiusSettings(int chance, int duration, double radius, Supplier appender) { + super(appender); + this.chance = chance; + this.duration = duration; + this.radius = radius; + } + + public ChanceDurationRadiusSettings(int chance, int duration, double radius) { + super(); + this.chance = chance; + this.duration = duration; + this.radius = radius; + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 0) + public int duration; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedDouble.Restrict(min = 0.0) + public double radius; +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationSettings.java similarity index 74% rename from common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java rename to common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationSettings.java index 8aae0514..84811850 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/settings/BasicSettings.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/ChanceDurationSettings.java @@ -6,15 +6,15 @@ import java.util.function.Supplier; -public class BasicSettings extends TooltipSettings { +public class ChanceDurationSettings extends TooltipSettings { - public BasicSettings(int chance, int duration, Supplier appender) { + public ChanceDurationSettings(int chance, int duration, Supplier appender) { super(appender); this.chance = chance; this.duration = duration; } - public BasicSettings(int chance, int duration) { + public ChanceDurationSettings(int chance, int duration) { super(); this.chance = chance; this.duration = duration; diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java new file mode 100644 index 00000000..c7269b63 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java @@ -0,0 +1,49 @@ +package net.sweenus.simplyswords.config.settings; + +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.AttributeModifiersComponent; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipAppender; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; + +public class ItemStackTooltipAppender implements Supplier { + + @SafeVarargs + public ItemStackTooltipAppender(Supplier... itemStacks) { + this.appenders = Arrays.stream(itemStacks).map(StackAppender::new).toList(); + } + + private final List appenders; + + private final static AttributeModifiersComponent hider = new AttributeModifiersComponent(new ArrayList<>(), false); + + @Override + public TooltipAppender get() { + long threeSeconds = System.currentTimeMillis() / 3000L; + + return appenders.get((int) (threeSeconds % appenders.size())); + } + + private record StackAppender(Supplier stack) implements TooltipAppender { + + @Override + public void appendTooltip(Item.TooltipContext context, Consumer tooltip, TooltipType type) { + Item s = stack.get(); + List list = new ArrayList<>(); + s.appendTooltip(s.getDefaultStack(), context, list, type); + if (!list.isEmpty() && Objects.equals(list.get(0).getString(), "")) { + list.remove(0); + } + list.forEach(tooltip); + } + } +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java new file mode 100644 index 00000000..9ec6d286 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java @@ -0,0 +1,58 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.util.Uuids; + +import java.util.UUID; + +public record RelocationComponent(double relocateX, double relocateY, double relocateZ, UUID relocateTarget, int relocationTimer, boolean canRelocate) { + + public boolean ready() { + return relocationTimer <= 0 && canRelocate; + } + + public boolean almostReady() { + return relocationTimer == 40; + } + + public RelocationComponent tickDown() { + if (this == DEFAULT) return this; + return new RelocationComponent(relocateX, relocateY, relocateZ, relocateTarget, relocationTimer - 1, canRelocate); + } + + public RelocationComponent clear() { + return DEFAULT; + } + + public static RelocationComponent DEFAULT = new RelocationComponent(0.0, 0.0, 0.0, UUID.randomUUID(), 0, false); + + public static Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + Codec.DOUBLE.fieldOf("x").forGetter(RelocationComponent::relocateX), + Codec.DOUBLE.fieldOf("y").forGetter(RelocationComponent::relocateY), + Codec.DOUBLE.fieldOf("z").forGetter(RelocationComponent::relocateZ), + Uuids.CODEC.fieldOf("target").forGetter(RelocationComponent::relocateTarget), + Codec.INT.fieldOf("timer").forGetter(RelocationComponent::relocationTimer), + Codec.BOOL.fieldOf("canRelocate").forGetter(RelocationComponent::canRelocate) + ).apply(instance, RelocationComponent::new)); + + public static PacketCodec PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.DOUBLE, + RelocationComponent::relocateX, + PacketCodecs.DOUBLE, + RelocationComponent::relocateY, + PacketCodecs.DOUBLE, + RelocationComponent::relocateZ, + PacketCodecs.STRING.xmap(UUID::fromString, UUID::toString), + RelocationComponent::relocateTarget, + PacketCodecs.INTEGER, + RelocationComponent::relocationTimer, + PacketCodecs.BOOL, + RelocationComponent::canRelocate, + RelocationComponent::new + ); +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java new file mode 100644 index 00000000..a789fa48 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java @@ -0,0 +1,24 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; + +public record StoredChargeComponent(int charge) { + + public StoredChargeComponent add(int addedCharge) { + return new StoredChargeComponent(this.charge + addedCharge); + } + + public StoredChargeComponent set(int newCharge) { + return new StoredChargeComponent(newCharge); + } + + public static StoredChargeComponent DEFAULT = new StoredChargeComponent(0); + + public static Codec CODEC = Codec.INT.xmap(StoredChargeComponent::new, StoredChargeComponent::charge); + + public static PacketCodec PACKET_CODEC = PacketCodecs.INTEGER.xmap(StoredChargeComponent::new, StoredChargeComponent::charge).cast(); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index bec18c6b..86c5e7ab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -12,9 +13,13 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -29,9 +34,9 @@ public BrambleSwordItem(ToolMaterial toolMaterial, Settings settings) { public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - int fhitchance = (int) Config.getFloat("brambleChance", "UniqueEffects", ConfigDefaultValues.brambleChance); + int hitChance = Config.uniqueEffects.bramble.chance; HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= fhitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { if (!attacker.hasStatusEffect(EffectRegistry.SPORE_SWARM)) attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.SPORE_SWARM, 200, 2, false, false, true)); } @@ -51,20 +56,28 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip8").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.bramblesworditem.tooltip8").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.BRAMBLETHORN::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 45; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java index a6eeb648..56f3331b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -14,10 +15,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -26,13 +31,11 @@ public BrimstoneClaymoreItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - int fhitchance = (int) Config.getFloat("brimstoneChance", "UniqueEffects", ConfigDefaultValues.brimstoneChance); + int fhitchance = Config.uniqueEffects.brimstone.chance; HelperMethods.playHitSounds(attacker, target); if (attacker.getRandom().nextInt(100) <= fhitchance && attacker instanceof PlayerEntity player) { @@ -75,8 +78,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, ParticleTypes.SMOKE, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -84,13 +86,21 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style TEXT = HelperMethods.getStyle("text"); - Style ABILITY = HelperMethods.getStyle("ability"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.firesworditem.tooltip2").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.BRIMSTONE_CLAYMORE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index 99fdd2b8..16a3c43a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -23,9 +24,13 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; import java.util.Optional; @@ -35,7 +40,6 @@ public EmberIreSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; private static SimpleParticleType particleWalk = ParticleTypes.FALLING_LAVA; private static SimpleParticleType particleSprint = ParticleTypes.FALLING_LAVA; private static SimpleParticleType particlePassive = ParticleTypes.SMOKE; @@ -108,13 +112,13 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); user.velocityModified = true; - int fhitchance = (int) Config.getFloat("emberIreChance", "UniqueEffects", ConfigDefaultValues.emberIreChance); - int fduration = (int) Config.getFloat("emberIreDuration", "UniqueEffects", ConfigDefaultValues.emberIreDuration); + int hitChance = Config.uniqueEffects.emberIre.chance; + int duration = Config.uniqueEffects.emberIre.duration; - if (user.getRandom().nextInt((int) (250 - (chargeRatio * 100))) <= fhitchance) { - user.addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, fduration, 0), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, fduration, 1), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, fduration, 0), user); + if (user.getRandom().nextInt((int) (250 - (chargeRatio * 100))) <= hitChance) { + user.addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, duration, 0), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 1), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, 0), user); world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_01.get(), user.getSoundCategory(), 0.5f, 2f); particlePassive = ParticleTypes.LAVA; @@ -145,35 +149,38 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, particleSprint = ParticleTypes.FALLING_LAVA; } } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, particleWalk, particleSprint, particlePassive, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip1").setStyle(ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip1").setStyle(Styles.ABILITY)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip5").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip8").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip8").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip11").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberiresworditem.tooltip11").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + @Translation(prefix = "", negate = true) + public static class EffectSettings extends ChanceDurationSettings { + + public EffectSettings() { + super(30, 150, new ItemStackTooltipAppender(ItemsRegistry.EMBERBLADE::get)); + } + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 0954388b..d0ae672f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -22,10 +26,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -34,7 +42,6 @@ public FrostfallSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; public static boolean scalesWithSpellPower; private final int abilityCooldown = (int) Config.getFloat("frostFuryCooldown", "UniqueEffects", ConfigDefaultValues.frostFuryCooldown); @@ -130,7 +137,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max, 4), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, shatter_timer_max, 2), user); player_shatter_timer = shatter_timer_max; - user.getItemCooldownManager().set(this, abilityCooldown); + user.getItemCooldownManager().set(this, Config.uniqueEffects.frostFury.cooldown); } return super.use(world, user, hand); } @@ -220,8 +227,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost"); scalesWithSpellPower = true; } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -229,23 +235,39 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip4", shatter_timer_max / 20, abilityDamage).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip4", shatter_timer_max / 20, abilityDamage).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip5", shatter_timer_max / 20).setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip5", shatter_timer_max / 20).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip6").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.FROSTFALL::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public float duration = 80; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 380; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 3.0; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 18f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.4f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java index 4c21ec15..ee55c59c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -12,7 +15,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -20,12 +22,17 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -34,15 +41,7 @@ public HearthflameSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int radius = (int) Config.getFloat("volcanicFuryRadius", "UniqueEffects", ConfigDefaultValues.volcanicFuryRadius); - float abilityDamage = Config.getFloat("volcanicFuryDamage", "UniqueEffects", ConfigDefaultValues.volcanicFuryDamage); int ability_timer_max = 120; - int skillCooldown = (int) Config.getFloat("volcanicFuryCooldown", "UniqueEffects", ConfigDefaultValues.volcanicFuryCooldown); - int chargeChance = (int) Config.getFloat("volcanicFuryChance", "UniqueEffects", ConfigDefaultValues.volcanicFuryChance); - float spellPowerModifier = Config.getFloat("volcanicFurySpellScaling", "UniqueEffects", ConfigDefaultValues.volcanicFurySpellScaling); - int chargePower; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -50,7 +49,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack ServerWorld world = (ServerWorld) attacker.getWorld(); HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= chargeChance) { + if (attacker.getRandom().nextInt(100) <= Config.uniqueEffects.volcanicFury.chance) { target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 10, 1), attacker); target.setVelocity(target.getX() - attacker.getX(), 0.5, target.getZ() - attacker.getZ()); target.setOnFireFor(5); @@ -86,10 +85,14 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && (user instanceof PlayerEntity player)) { + int radius = Config.uniqueEffects.volcanicFury.radius; + float spellScaling = HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.volcanicFury.spellScaling, user, "fire"); + float abilityDamage = spellScaling > 0f ? spellScaling : Config.uniqueEffects.volcanicFury.damage; + int chargePower = stack.getOrDefault(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT).charge(); AbilityMethods.tickAbilityVolcanicFury(stack, world, user, remainingUseTicks, ability_timer_max, - abilityDamage, skillCooldown, radius, chargePower); + abilityDamage, Config.uniqueEffects.volcanicFury.cooldown, radius, chargePower); if (player.age % 20 == 0) { - chargePower += 2; + stack.apply(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT, comp -> comp.add(2)); } } } @@ -108,7 +111,7 @@ public UseAction getUseAction(ItemStack stack) { public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient) { if (user instanceof PlayerEntity player) { - player.getItemCooldownManager().set(this, skillCooldown); + player.getItemCooldownManager().set(this, Config.uniqueEffects.volcanicFury.chance); } int choose_sound = (int) (Math.random() * 30); if (choose_sound <= 10) @@ -121,16 +124,20 @@ else if (choose_sound <= 30) world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03.get(), user.getSoundCategory(), 0.6f, 1.2f); //Damage + int radius = Config.uniqueEffects.volcanicFury.radius; Box box = new Box(user.getX() + radius, user.getY() + radius, user.getZ() + radius, user.getX() - radius, user.getY() - radius, user.getZ() - radius); for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire((LivingEntity) entity, user)) { float choose = (float) (Math.random() * 1); + float spellScaling = HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.volcanicFury.spellScaling, user, "fire"); + float abilityDamage = spellScaling > 0f ? spellScaling : Config.uniqueEffects.volcanicFury.damage; + int chargePower = stack.getOrDefault(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT).charge(); le.damage(user.getDamageSources().indirectMagic(user, user), abilityDamage * (chargePower * 0.3f)); le.setOnFireFor(6); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_POISON_ATTACK_01.get(), le.getSoundCategory(), 0.1f, choose); - chargePower = 0; + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT); le.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 10, 1), user); le.setVelocity(le.getX() - user.getX(), 0.5, le.getZ() - user.getZ()); } @@ -140,12 +147,7 @@ else if (choose_sound <= 30) @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellPowerModifier, entity, "fire") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellPowerModifier, entity, "fire"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -153,27 +155,41 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip6").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip9").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.volcanicfurysworditem.tooltip9").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.HEARTHFLAME::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 25; + @ValidatedInt.Restrict(min = 1) + public int radius = 3; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 300; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 3f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.4f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index d890c58c..79e81724 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -13,8 +14,12 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,14 +28,12 @@ public PlagueSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int phitchance = (int) Config.getFloat("plagueChance", "UniqueEffects", ConfigDefaultValues.plagueChance); + int hitChance = Config.uniqueEffects.plague.chance; HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= phitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { //Convert Haste if (target.hasStatusEffect(StatusEffects.HASTE)) { @@ -109,8 +112,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.FALLING_SPORE_BLOSSOM, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -118,14 +120,22 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.plaguesworditem.tooltip3").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.TOXIC_LONGSWORD::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 55; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index 0cda7845..b9537dc7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -10,19 +12,24 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.text.Style; +import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.RelocationComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -31,15 +38,6 @@ public SoulPyreSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private int relocationTimer; - private static int stepMod = 0; - private final int relocationDuration = (int) Config.getFloat("soultetherDuration", "UniqueEffects", ConfigDefaultValues.soultetherDuration); - private boolean canRelocate; - private LivingEntity relocateTarget; - private double relocateX; - private double relocateY; - private double relocateZ; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -51,36 +49,33 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient()) { - int range = (int) Config.getFloat("soultetherRange", "UniqueEffects", ConfigDefaultValues.soultetherRange); - int radius = (int) Config.getFloat("soultetherRadius", "UniqueEffects", ConfigDefaultValues.soultetherRadius); - int ignite_duration = (int) (Config.getFloat("soultetherIgniteDuration", "UniqueEffects", ConfigDefaultValues.soultetherIgniteDuration) / 20); - int resistance_duration = (int) Config.getFloat("soultetherResistanceDuration", "UniqueEffects", ConfigDefaultValues.soultetherResistanceDuration); + double range = Config.uniqueEffects.soultether.range; + double radius = Config.uniqueEffects.soultether.radius; + int ignite_duration = Config.uniqueEffects.soultether.igniteDuration / 20; + int resistance_duration = Config.uniqueEffects.soultether.resistanceDuration; + int relocationDuration = Config.uniqueEffects.soultether.duration; //Position swap target & player LivingEntity target = (LivingEntity) HelperMethods.getTargetedEntity(user, range); if (target != null && HelperMethods.checkFriendlyFire(target, user)) { - relocateX = user.getX(); - relocateY = user.getY(); - relocateZ = user.getZ(); - relocateTarget = target; - double rememberx = target.getX(); - double remembery = target.getY(); - double rememberz = target.getZ(); + ItemStack stack = user.getStackInHand(hand); + double rememberX = target.getX(); + double rememberY = target.getY(); + double rememberZ = target.getZ(); target.teleport(user.getX(), user.getY(), user.getZ(), true); - user.teleport(rememberx, remembery, rememberz, true); + user.teleport(rememberX, rememberY, rememberZ, true); world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_SWORD_SCIFI_ATTACK_01.get(), user.getSoundCategory(), 0.3f, 1f); user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, relocationDuration, 3), user); target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, relocationDuration - 10, 0), user); - canRelocate = true; - relocationTimer = relocationDuration; + stack.set(ComponentTypeRegistry.RELOCATION.get(), new RelocationComponent(user.getX(), user.getY(), user.getZ(), target.getUuid(), relocationDuration, true)); //AOE ignite & pull - Box box = new Box(rememberx + radius, remembery + radius, rememberz + radius, - rememberx - radius, remembery - radius, rememberz - radius); + Box box = new Box(rememberX + radius, rememberY + radius, rememberZ + radius, + rememberX - radius, rememberY - radius, rememberZ - radius); for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - le.setVelocity((rememberx - le.getX()) / 4, (remembery - le.getY()) / 4, (rememberz - le.getZ()) / 4); + le.setVelocity((rememberX - le.getX()) / 4, (rememberY - le.getY()) / 4, (rememberZ - le.getZ()) / 4); le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 40, 3), user); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03.get(), le.getSoundCategory(), 0.1f, 3f); @@ -95,23 +90,25 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (!world.isClient && (entity instanceof PlayerEntity player) && canRelocate) { - relocationTimer--; - if (relocationTimer <= 0) { - if (relocateTarget != null) { - relocateTarget.teleport(player.getX(), player.getY(), player.getZ(), true); + if (!world.isClient && (entity instanceof PlayerEntity player)) { + RelocationComponent component = stack.apply(ComponentTypeRegistry.RELOCATION.get(), RelocationComponent.DEFAULT, RelocationComponent::tickDown); + if (component != null) { + if (component.ready()) { + Entity relocateTarget = ((ServerWorld) world).getEntity(component.relocateTarget()); + if (relocateTarget instanceof LivingEntity livingTarget) { + livingTarget.teleport(player.getX(), player.getY(), player.getZ(), true); + } + player.teleport(component.relocateX(), component.relocateY(), component.relocateZ(), true); + world.playSoundFromEntity(null, player, SoundRegistry.ELEMENTAL_SWORD_SCIFI_ATTACK_03.get(), + player.getSoundCategory(), 0.3f, 1f); + stack.set(ComponentTypeRegistry.RELOCATION.get(), null); + } else if (component.almostReady()) { + world.playSoundFromEntity(null, player, SoundRegistry.ELEMENTAL_BOW_RECHARGE.get(), + player.getSoundCategory(), 0.3f, 0.4f); } - player.teleport(relocateX, relocateY, relocateZ, true); - world.playSoundFromEntity(null, player, SoundRegistry.ELEMENTAL_SWORD_SCIFI_ATTACK_03.get(), - player.getSoundCategory(), 0.3f, 1f); - canRelocate = false; - } else if (relocationTimer == 40) { - world.playSoundFromEntity(null, player, SoundRegistry.ELEMENTAL_BOW_RECHARGE.get(), - player.getSoundCategory(), 0.3f, 0.4f); } } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SOUL_FIRE_FLAME, ParticleTypes.SOUL_FIRE_FLAME, ParticleTypes.MYCELIUM, true); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SMALL_FLAME, @@ -123,24 +120,38 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip1").setStyle(ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip1").setStyle(Styles.ABILITY)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip6").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip7", relocationDuration / 20).setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip9").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip7", Config.uniqueEffects.soultether.duration / 20).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulpyresworditem.tooltip9").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SOULPYRE::get)); + } + + @ValidatedDouble.Restrict(min = 1.0) + public double range = 32.0; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 8.0; + @ValidatedInt.Restrict(min = 0) + public int duration = 120; + @ValidatedInt.Restrict(min = 0) + public int igniteDuration = 120; + @ValidatedInt.Restrict(min = 0) + public int resistanceDuration = 60; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java index a4777757..f374883c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -11,18 +13,20 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -36,23 +40,23 @@ public SoulkeeperSwordItem(ToolMaterial toolMaterial, Settings settings) { @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - int fhitchance = (int) Config.getFloat("soulMeldChance", "UniqueEffects", ConfigDefaultValues.soulMeldChance); - int fduration = (int) Config.getFloat("soulMeldDuration", "UniqueEffects", ConfigDefaultValues.soulMeldDuration); + int hitChance = Config.uniqueEffects.soulkeeper.chance; + int duration = Config.uniqueEffects.soulkeeper.duration; HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= fhitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { //world.playSoundFromEntity(null, target, SoundRegistry.MAGIC_BOW_CHARGE_SHORT_VERSION.get(), SoundCategory.PLAYERS, 0.3f, 1.2f); if (attacker.hasStatusEffect(StatusEffects.MINING_FATIGUE) && attacker.hasStatusEffect(StatusEffects.RESISTANCE)) { int a = (attacker.getStatusEffect(StatusEffects.MINING_FATIGUE).getAmplifier() + 1); if ((attacker.getStatusEffect(StatusEffects.MINING_FATIGUE).getAmplifier() <= 2)) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, fduration, a), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, fduration, a), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, duration, a), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, a), attacker); } } else { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, fduration, 1), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, fduration, 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, duration, 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 1), attacker); } } } @@ -62,8 +66,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient()) { - int hradius = (int) Config.getFloat("soulMeldRadius", "UniqueEffects", ConfigDefaultValues.soulMeldRadius); - int vradius = (int) (Config.getFloat("soulMeldRadius", "UniqueEffects", ConfigDefaultValues.soulMeldRadius) / 2); + double hradius = Config.uniqueEffects.soulkeeper.radius; + double vradius = Config.uniqueEffects.soulkeeper.radius; double x = user.getX(); double y = user.getY(); double z = user.getZ(); @@ -101,20 +105,30 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip1").setStyle(Styles.NETHERFUSED)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.soulsworditem.tooltip6").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SOULKEEPER::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 75; + @ValidatedInt.Restrict(min = 0) + public int duration = 250; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 5.0; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java index a490faba..a9d301f4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -19,10 +23,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -31,21 +39,15 @@ public SoulrenderSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - float abilityDamage = Config.getFloat("soulrendDamageMulti", "UniqueEffects", ConfigDefaultValues.soulrendDamageMulti); - float spellScalingModifier = Config.getFloat("soulrendDamageSpellScaling", "UniqueEffects", ConfigDefaultValues.soulrendDamageSpellScaling); - - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - int fhitchance = (int) Config.getFloat("soulrendChance", "UniqueEffects", ConfigDefaultValues.soulrendChance); - int fduration = (int) Config.getFloat("soulrendDuration", "UniqueEffects", ConfigDefaultValues.soulrendDuration); - int maxstacks = (int) Config.getFloat("soulrendMaxStacks", "UniqueEffects", ConfigDefaultValues.soulrendMaxStacks); + int hitChance = Config.uniqueEffects.soulRend.chance; + int duration = Config.uniqueEffects.soulRend.duration; + int maxStacks = Config.uniqueEffects.soulRend.maxStacks; - if (attacker.getRandom().nextInt(100) <= fhitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { int choose_sound = (int) (Math.random() * 30); if (choose_sound <= 10) @@ -62,20 +64,20 @@ else if (choose_sound <= 30) int a = (target.getStatusEffect(StatusEffects.WEAKNESS).getAmplifier() + 1); if ((target.getStatusEffect(StatusEffects.WEAKNESS).getAmplifier() <= 0)) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, fduration, a), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, a), attacker); } } else { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, fduration, 0), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, 0), attacker); } if (target.hasStatusEffect(StatusEffects.SLOWNESS)) { int a = (target.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() + 1); - if ((target.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() < maxstacks)) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, fduration, a), attacker); + if ((target.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() < maxStacks)) { + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, a), attacker); } } else { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, fduration, 0), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 0), attacker); } } } @@ -85,11 +87,10 @@ else if (choose_sound <= 30) @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient()) { - float heal_amount = Config.getFloat("soulrendHealMulti", "UniqueEffects", ConfigDefaultValues.soulrendHealMulti); + float heal_amount = Config.uniqueEffects.soulRend.healMulti; int healamp = 0; - boolean cantrigger = false; - int hradius = (int) Config.getFloat("soulrendRadius", "UniqueEffects", ConfigDefaultValues.soulrendRadius); - int vradius = (int) (Config.getFloat("soulrendRadius", "UniqueEffects", ConfigDefaultValues.soulrendRadius) / 2); + double hradius = Config.uniqueEffects.soulRend.radius; + double vradius = Config.uniqueEffects.soulRend.radius / 2.0; double x = user.getX(); double y = user.getY(); double z = user.getZ(); @@ -101,21 +102,22 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han && le.hasStatusEffect(StatusEffects.WEAKNESS) && HelperMethods.checkFriendlyFire(le, user)) { healamp += (le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier()); - cantrigger = true; - le.damage(user.getDamageSources().indirectMagic(user, user), le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() * abilityDamage); + float scaling = HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.soulRend.damageSpellScaling, entity, "soul"); + float multiplier = scaling > 0f ? scaling : Config.uniqueEffects.soulRend.damageMulti; + le.damage(user.getDamageSources().indirectMagic(user, user), le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() * multiplier); le.removeStatusEffect(StatusEffects.WEAKNESS); le.removeStatusEffect(StatusEffects.SLOWNESS); world.playSoundFromEntity(null, entity, SoundRegistry.DARK_SWORD_SPELL.get(), entity.getSoundCategory(), 0.1f, 2f); } } - if (cantrigger) { - healamp = (int) (healamp * heal_amount); + if (healamp > 0) { + float heal = ((float)healamp * heal_amount); - if (healamp < 1) healamp = 1; - else if (healamp > 6) healamp = 6; + if (heal < 1f) heal = 1f; + else if (heal > 6f) heal = 6f; - user.heal(healamp); + user.heal(heal); } } return super.use(world, user, hand); @@ -123,12 +125,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = (int)(world.getTime() % 7) + 1; HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SOUL, ParticleTypes.SCULK_SOUL, ParticleTypes.WARPED_SPORE, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -136,23 +133,41 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.rendsworditem.tooltip6").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SOULRENDER::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 85; + @ValidatedInt.Restrict(min = 0) + public int duration = 500; + @ValidatedFloat.Restrict(min = 0f) + public float damageMulti = 3f; + @ValidatedFloat.Restrict(min = 0f) + public float healMulti = 0.5f; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 10.0; + @ValidatedInt.Restrict(min = 1) + public int maxStacks = 8; + @ValidatedFloat.Restrict(min = 0f) + public float damageSpellScaling = 0.4f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index 0256c2ac..d181a5ea 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -20,10 +23,13 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -35,20 +41,19 @@ public StealSwordItem(ToolMaterial toolMaterial, Settings settings) { private static int stepMod = 0; public static boolean scalesWithSpellPower; float abilityDamage = 5; - float spellScalingModifier = Config.getFloat("stealSpellScaling", "UniqueEffects", ConfigDefaultValues.stealSpellScaling); @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld sworld = (ServerWorld) attacker.getWorld(); - int fhitchance = (int) Config.getFloat("stealChance", "UniqueEffects", ConfigDefaultValues.stealChance); - int fduration = (int) Config.getFloat("stealDuration", "UniqueEffects", ConfigDefaultValues.stealDuration); + int hitChance = Config.uniqueEffects.steal.chance; + int duration = Config.uniqueEffects.steal.duration; attacker.setVelocity(attacker.getRotationVector().multiply(+1)); attacker.velocityModified = true; HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= fhitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { int choose_sound = (int) (Math.random() * 30); if (choose_sound <= 10) { sworld.playSoundFromEntity(null, target, SoundRegistry.MAGIC_SWORD_ATTACK_WITH_BLOOD_01.get(), @@ -61,9 +66,9 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target.getSoundCategory(), 0.5f, 2f); } - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, fduration, 2), attacker); - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, fduration, 1), attacker); - target.addStatusEffect(new StatusEffectInstance(StatusEffects.GLOWING, fduration, 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, 2), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); + target.addStatusEffect(new StatusEffectInstance(StatusEffects.GLOWING, duration, 1), attacker); } } return super.postHit(stack, target, attacker); @@ -72,8 +77,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient()) { - int sradius = (int) Config.getFloat("stealRadius", "UniqueEffects", ConfigDefaultValues.stealRadius); - int vradius = (int) (Config.getFloat("stealRadius", "UniqueEffects", ConfigDefaultValues.stealRadius) / 2); + double sradius = Config.uniqueEffects.steal.radius; + double vradius = Config.uniqueEffects.steal.radius / 2.0; double x = user.getX(); double y = user.getY(); @@ -83,8 +88,8 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han x - sradius, y - vradius, z - sradius); for (Entity entity : sworld.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - int iduration = (int) Config.getFloat("stealInvisDuration", "UniqueEffects", ConfigDefaultValues.stealInvisDuration); - int bduration = (int) Config.getFloat("stealBlindDuration", "UniqueEffects", ConfigDefaultValues.stealBlindDuration); + int iduration = Config.uniqueEffects.steal.invisDuration; + int bduration = Config.uniqueEffects.steal.blindDuration; if (le.hasStatusEffect(StatusEffects.SLOWNESS) && le.hasStatusEffect(StatusEffects.GLOWING)) { if (le.distanceTo(user) > 5) { //can we check target here? @@ -111,6 +116,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { + float spellScalingModifier = Config.uniqueEffects.steal.spellScaling; if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul") > 0) { abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul"); scalesWithSpellPower = true; @@ -128,28 +134,44 @@ public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip7").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip10").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip10").setStyle(Styles.TEXT)); if (scalesWithSpellPower) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SOULSTEALER::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 25; + @ValidatedInt.Restrict(min = 0) + public int duration = 400; + @ValidatedInt.Restrict(min = 0) + public int invisDuration = 120; + @ValidatedInt.Restrict(min = 0) + public int blindDuration = 200; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 30.0; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 2.6f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index a6ec41fc..7e3b3476 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -17,10 +20,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -29,16 +36,14 @@ public StormSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { HelperMethods.playHitSounds(attacker, target); - int phitchance = (int) Config.getFloat("stormChance", "UniqueEffects", ConfigDefaultValues.stormChance); + int hitChance = Config.uniqueEffects.storm.chance; - if (attacker.getRandom().nextInt(100) <= phitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { target.addStatusEffect(new StatusEffectInstance(EffectRegistry.STORM, 2, 1), attacker); } } @@ -53,7 +58,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han } user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, 20, 5), user); user.setCurrentHand(hand); - int cooldown = (int) Config.getFloat("stormCooldown", "UniqueEffects", ConfigDefaultValues.stormCooldown); + int cooldown = Config.uniqueEffects.storm.cooldown; user.getItemCooldownManager().set(this, cooldown); return TypedActionResult.consume(itemStack); } @@ -61,15 +66,15 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient) { - int radius = (int) Config.getFloat("stormRadius", "UniqueEffects", ConfigDefaultValues.stormRadius); - int cooldown = (int) Config.getFloat("stormCooldown", "UniqueEffects", ConfigDefaultValues.stormCooldown); + int radius = Config.uniqueEffects.storm.radius; + int cooldown = Config.uniqueEffects.storm.cooldown; AbilityMethods.tickAbilityStorm(stack, world, user, remainingUseTicks, cooldown, radius); } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - return (int) Config.getFloat("stormDuration", "UniqueEffects", ConfigDefaultValues.stormDuration); + return Config.uniqueEffects.storm.duration; } @Override @@ -79,28 +84,41 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; + int stepMod = 7 - (int)(world.getTime() % 7); HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FIREWORK, ParticleTypes.FIREWORK, ParticleTypes.ELECTRIC_SPARK, false); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsworditem.tooltip6").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.MJOLNIR::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 1) + public int radius = 10; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 700; + @ValidatedInt.Restrict(min = 1) + public int frequency = 10; + @ValidatedInt.Restrict(min = 0) + public int duration = 200; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java index 28ae7292..c1f7f0de 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -17,10 +20,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -35,25 +42,25 @@ public TwistedBladeItem(ToolMaterial toolMaterial, Settings settings) { public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - int fhitchance = (int) Config.getFloat("ferocityChance", "UniqueEffects", ConfigDefaultValues.ferocityChance); - int fduration = (int) Config.getFloat("ferocityDuration", "UniqueEffects", ConfigDefaultValues.ferocityDuration); - int maximum_stacks = (int) Config.getFloat("ferocityMaxStacks", "UniqueEffects", ConfigDefaultValues.ferocityMaxStacks); + int hitChance = Config.uniqueEffects.ferocity.chance; + int duration = Config.uniqueEffects.ferocity.duration; + int maxStacks = Config.uniqueEffects.ferocity.maxStacks; HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= fhitchance) { + if (attacker.getRandom().nextInt(100) <= hitChance) { if (attacker.hasStatusEffect(StatusEffects.HASTE)) { int a = (attacker.getStatusEffect(StatusEffects.HASTE).getAmplifier() + 1); world.playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_BOW_HOLY_SHOOT_IMPACT_02.get(), attacker.getSoundCategory(), 0.3f, 1f + (a / 10f)); - if ((attacker.getStatusEffect(StatusEffects.HASTE).getAmplifier() < maximum_stacks)) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, fduration, a), attacker); + if ((attacker.getStatusEffect(StatusEffects.HASTE).getAmplifier() < maxStacks)) { + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, a), attacker); } else { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, fduration, a - 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, a - 1), attacker); } } else { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, fduration, 1), attacker); + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, 1), attacker); } } } @@ -63,7 +70,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (user.hasStatusEffect(StatusEffects.HASTE)) { - int strength_tier = (int) Config.getFloat("ferocityStrengthTier", "UniqueEffects", ConfigDefaultValues.ferocityStrengthTier); + int strength_tier = Config.uniqueEffects.ferocity.strengthTier; int a = (user.getStatusEffect(StatusEffects.HASTE).getAmplifier() * 20); user.addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, a, strength_tier), user); @@ -86,20 +93,32 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ferocitysworditem.tooltip6").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.TWISTED_BLADE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 75; + @ValidatedInt.Restrict(min = 0) + public int duration = 100; + @ValidatedInt.Restrict(min = 0) + public int maxStacks = 15; + @ValidatedInt.Restrict(min = 0) + public int strengthTier = 2; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index e0b334cf..59c46193 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -1,7 +1,12 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.annotations.Translation; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; @@ -15,9 +20,14 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.GemPowerRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -33,18 +43,18 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - int watcherChance = (int) Config.getFloat("watcherChance", "UniqueEffects", ConfigDefaultValues.watcherChance); - int omenChance = (int) Config.getFloat("omenChance", "UniqueEffects", ConfigDefaultValues.omenChance); + int watcherChance = Config.uniqueEffects.watcher.watcherChance; + int omenChance = Config.uniqueEffects.watcher.omenChance; HelperMethods.playHitSounds(attacker, target); if (attacker.getRandom().nextInt(100) <= watcherChance) { - int hradius = (int) (Config.getFloat("watcherRadius", "UniqueEffects", ConfigDefaultValues.watcherRadius)); - int vradius = (int) (Config.getFloat("watcherRadius", "UniqueEffects", ConfigDefaultValues.watcherRadius) / 2); + double hradius = Config.uniqueEffects.watcher.watcherRadius; + double vradius = Config.uniqueEffects.watcher.watcherRadius / 2.0; double x = target.getX(); double y = target.getY(); double z = target.getZ(); - float rAmount = Config.getFloat("watcherRestoreAmount", "UniqueEffects", ConfigDefaultValues.watcherRestoreAmount); + float rAmount = Config.uniqueEffects.watcher.watcherRestoreAmount; Box box = new Box(x + hradius, y + vradius, z + hradius, x - hradius, y - vradius, z - hradius); @@ -61,13 +71,13 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (attacker.getRandom().nextInt(100) <= omenChance) { BlockPos position = target.getBlockPos(); - float overallAbsorptionCap = Config.getFloat("abilityAbsorptionCap", "UniqueEffects", ConfigDefaultValues.abilityAbsorptionCap); - float absorptionCap = Config.getFloat("omenAbsorptionCap", "UniqueEffects", ConfigDefaultValues.omenAbsorptionCap); - float threshold = Config.getFloat("omenInstantKillThreshold", "UniqueEffects", ConfigDefaultValues.omenInstantKillThreshold) * target.getMaxHealth(); + float overallAbsorptionCap = Config.uniqueEffects.abilityAbsorptionCap; + float absorptionCap = Config.uniqueEffects.watcher.omenAbsorptionCap; + float threshold = Config.uniqueEffects.watcher.omenInstantKillThreshold * target.getMaxHealth(); float remainingHealth = target.getHealth(); if (remainingHealth <= threshold) { - attacker.setAbsorptionAmount(Math.min(overallAbsorptionCap, attacker.getAbsorptionAmount() + remainingHealth)); + attacker.setAbsorptionAmount(Math.min(Math.min(absorptionCap, overallAbsorptionCap), attacker.getAbsorptionAmount() + remainingHealth)); world.playSound(null, position, SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_03.get(), target.getSoundCategory(), 0.7f, 1.2f); target.damage(attacker.getDamageSources().indirectMagic(attacker, attacker), 1000); @@ -88,20 +98,37 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip3", - (Config.getFloat("omenInstantKillThreshold", "UniqueEffects", ConfigDefaultValues.omenInstantKillThreshold) * 100)).setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip4").setStyle(TEXT)); + (Config.getFloat("omenInstantKillThreshold", "UniqueEffects", ConfigDefaultValues.omenInstantKillThreshold) * 100)).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip5").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip5").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip7").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.WATCHER_CLAYMORE::get, ItemsRegistry.WATCHING_WARGLAIVE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int watcherChance = 5; + @ValidatedFloat.Restrict(min = 0f) + public float watcherRestoreAmount = 0.5f; + @ValidatedDouble.Restrict(min = 1.0) + public double watcherRadius = 8.0; + @ValidatedInt.Restrict(min = 0, max = 100) + public int omenChance = 5; + @ValidatedFloat.Restrict(min = 0, max = 100) + public float omenAbsorptionCap = 20f; + @ValidatedFloat.Restrict(min = 0f, max = 1f) + public float omenInstantKillThreshold = 0.25f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index ec0f277a..850c36cb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -24,6 +24,7 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.LootConfig; import net.sweenus.simplyswords.item.custom.CaelestisSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; @@ -165,7 +166,7 @@ public abstract class ServerPlayerEntityMixin { ItemStack stackInSlot = serverPlayer.getInventory().getStack(i); if (stackInSlot.isOf(containedRemnant.getItem()) || stackInSlot.isOf(tamperedRemnant.getItem())) { - if (chance < 21 && Config.loot.enableContainedRemnants.get()) { + if (chance < 21 && LootConfig.INSTANCE.enableContainedRemnants.get()) { List itemsFromTag = Registries.ITEM.stream() .filter(item -> item.getDefaultStack().isIn(desiredItemsTag)) .toList(); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java index 201178aa..6e7299da 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -44,7 +44,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.levitationsworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 50, GemPowerRegistry.FLOAT); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java index c7bb6e4c..b7cdf6d6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java @@ -12,7 +12,7 @@ import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -48,7 +48,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.freezesworditem.tooltip2").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 120, GemPowerRegistry.FREEZE); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java index a1056ea0..d70f61e4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -44,7 +44,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.shieldingsworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 120, GemPowerRegistry.SHIELDING); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java index f5166f04..d21f8f14 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -46,7 +46,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.slownesssworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(50, 50, GemPowerRegistry.SLOW); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java index 91c6f79b..3e268e60 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -46,7 +46,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.stoneskinsworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 60, GemPowerRegistry.STONESKIN); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java index 04fbbfeb..406b0107 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -44,7 +44,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.speedsworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 300, GemPowerRegistry.SWIFTNESS); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java index 15b3e879..ca21aad7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java @@ -12,7 +12,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -46,7 +46,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.trailblazesworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 120, GemPowerRegistry.TRAILBLAZE); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java index 4b325d86..cb026a38 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -45,7 +45,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.weakensworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 120, GemPowerRegistry.WEAKEN); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java index 5af5edfc..b36c65db 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java @@ -2,7 +2,6 @@ import me.fzzyhmstrs.fzzy_config.annotations.Translation; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.Item; @@ -10,11 +9,12 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationRadiusSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -47,14 +47,10 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.wildfiresworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationRadiusSettings { public Settings() { - super(10, 180, GemPowerRegistry.WILDFIRE); + super(10, 180, 10.0, GemPowerRegistry.WILDFIRE); } - - @Translation(prefix = "simplyswords.config.basic_settings") - @ValidatedDouble.Restrict(min = 0.0) - public double radius = 10.0; } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java index 81e4968e..dbcc0c93 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java @@ -11,7 +11,7 @@ import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.BasicSettings; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -45,7 +45,7 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext tooltipContex tooltip.add(Text.translatable("item.simplyswords.zephyrsworditem.tooltip3").setStyle(Styles.TEXT)); } - public static class Settings extends BasicSettings { + public static class Settings extends ChanceDurationSettings { public Settings() { super(15, 180, GemPowerRegistry.ZEPHYR); diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java index b2c9f80a..364d405f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java @@ -3,20 +3,18 @@ import dev.architectury.registry.registries.DeferredRegister; import dev.architectury.registry.registries.RegistrySupplier; import net.minecraft.component.ComponentType; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnGroup; import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; -import net.sweenus.simplyswords.entity.BattleStandardEntity; -import net.sweenus.simplyswords.entity.SimplySwordsBeeEntity; +import net.sweenus.simplyswords.item.component.RelocationComponent; import net.sweenus.simplyswords.power.GemPowerComponent; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; public class ComponentTypeRegistry { public static final DeferredRegister> COMPONENT_TYPES = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.DATA_COMPONENT_TYPE); public static final RegistrySupplier> GEM_POWER = COMPONENT_TYPES.register("gem_power", () -> ComponentType.builder().codec(GemPowerComponent.CODEC).packetCodec(GemPowerComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> STORED_CHARGE = COMPONENT_TYPES.register("stored_charge", () -> ComponentType.builder().codec(StoredChargeComponent.CODEC).packetCodec(StoredChargeComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> RELOCATION = COMPONENT_TYPES.register("relocation", () -> ComponentType.builder().codec(RelocationComponent.CODEC).packetCodec(RelocationComponent.PACKET_CODEC).build()); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index fbe76810..ef47e31e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -410,6 +410,7 @@ public static void tickAbilityVolcanicFury(ItemStack stack, World world, LivingE } } } + public static void astralShiftSounds(ServerPlayerEntity serverPlayer) { SoundEvent[] soundOptions = new SoundEvent[]{ SoundRegistry.DISTORTION_ARC_01.get(), diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 4597e30f..cea34cf5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -56,7 +56,7 @@ public static Random random() { * getTargetedEntity taken heavily from ZsoltMolnarrr's CombatSpells * https://github.com/ZsoltMolnarrr/SpellEngine/blob/1.19.2/common/src/main/java/net/spell_engine/utils/TargetHelper.java#L136 */ - public static Entity getTargetedEntity(Entity user, int range) { + public static Entity getTargetedEntity(Entity user, double range) { Vec3d rayCastOrigin = user.getEyePos(); Vec3d userView = user.getRotationVec(1.0F).normalize().multiply(range); Vec3d rayCastEnd = rayCastOrigin.add(userView); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java index aae2475c..e40eedab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java @@ -13,7 +13,7 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.tag.EnchantmentTags; import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.LootConfig; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.ItemsRegistry; @@ -23,18 +23,20 @@ public class ModLootTableModifiers { private static final Supplier> swords = Suppliers.memoize(() -> Registries.ITEM.stream().filter(it -> it instanceof UniqueSwordItem).toList()); + + public static void init() { // 1.21 temp //STANDARD LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { Identifier id = key.getValue(); - if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + if (LootConfig.INSTANCE.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { //System.out.println( id.getNamespace() + ":" + id.getPath()); //PRINT POSSIBLE PATHS - if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { + if (LootConfig.INSTANCE.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(Config.loot.standardLootTableWeight.get())) // 1 = 100% of the time + .conditionally(RandomChanceLootCondition.builder(LootConfig.INSTANCE.standardLootTableWeight.get())) // 1 = 100% of the time .apply(EnchantRandomlyFromTagLootFunction.create(EnchantmentTags.ON_RANDOM_LOOT)) //This is not ideal, but forge doesn't expose the registry wrapper so... .with(ItemEntry.builder(ItemsRegistry.IRON_LONGSWORD.get())) .with(ItemEntry.builder(ItemsRegistry.IRON_TWINBLADE.get())) @@ -75,11 +77,11 @@ public static void init() { //RARE LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { Identifier id = key.getValue(); - if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { - if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { + if (LootConfig.INSTANCE.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + if (LootConfig.INSTANCE.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(Config.loot.rareLootTableWeight.get())) // 1 = 100% of the time + .conditionally(RandomChanceLootCondition.builder(LootConfig.INSTANCE.rareLootTableWeight.get())) // 1 = 100% of the time .apply(EnchantRandomlyFromTagLootFunction.create(EnchantmentTags.ON_RANDOM_LOOT)) //This is not ideal, but forge doesn't expose the registry wrapper so... .with(ItemEntry.builder(ItemsRegistry.DIAMOND_LONGSWORD.get())) .with(ItemEntry.builder(ItemsRegistry.DIAMOND_TWINBLADE.get())) @@ -105,11 +107,11 @@ public static void init() { //Runic / Rare 2 LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { Identifier id = key.getValue(); - if (Config.loot.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { - if (Config.loot.enableLootInVillages.get() || !id.getPath().contains("village")) { + if (LootConfig.INSTANCE.enableLootDrops.get() && id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { + if (LootConfig.INSTANCE.enableLootInVillages.get() || !id.getPath().contains("village")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(Config.loot.runicLootTableWeight.get())) // 1 = 100% of the time + .conditionally(RandomChanceLootCondition.builder(LootConfig.INSTANCE.runicLootTableWeight.get())) // 1 = 100% of the time .with(ItemEntry.builder(ItemsRegistry.RUNIC_TABLET.get())); context.addPool(pool); } @@ -122,15 +124,15 @@ public static void init() { LootEvent.MODIFY_LOOT_TABLE.register(((RegistryKey key, LootEvent.LootTableModificationContext context, boolean builtin) -> { Identifier id = key.getValue(); - if (Config.loot.enableLootDrops.get()) { - Float lootChance = Config.loot.uniqueLootTableOptions.get(id); + if (LootConfig.INSTANCE.enableLootDrops.get()) { + Float lootChance = LootConfig.INSTANCE.uniqueLootTableOptions.get(id); if (lootChance != null && lootChance > 0f) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) .conditionally(RandomChanceLootCondition.builder(lootChance)); - swords.get().stream().filter(it -> !Config.loot.disabledUniqueWeaponLoot.contains(it)).forEach( item -> + swords.get().stream().filter(it -> !LootConfig.INSTANCE.disabledUniqueWeaponLoot.contains(it)).forEach( item -> pool.with(ItemEntry.builder(item)) ); @@ -140,9 +142,9 @@ public static void init() { if (id.getPath().contains("chests") && !id.getPath().contains("spectrum")) { LootPool.Builder pool = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .conditionally(RandomChanceLootCondition.builder(Config.loot.uniqueLootTableWeight.get())); // 1 = 100% of the time + .conditionally(RandomChanceLootCondition.builder(LootConfig.INSTANCE.uniqueLootTableWeight.get())); // 1 = 100% of the time - swords.get().stream().filter(it -> !Config.loot.disabledUniqueWeaponLoot.contains(it)).forEach( item -> + swords.get().stream().filter(it -> !LootConfig.INSTANCE.disabledUniqueWeaponLoot.contains(it)).forEach( item -> pool.with(ItemEntry.builder(item)) ); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/Styles.java b/common/src/main/java/net/sweenus/simplyswords/util/Styles.java index 53145c0c..3a1f979e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/Styles.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/Styles.java @@ -9,6 +9,7 @@ public class Styles { public static Style UNIQUE = color(0xE2A834); public static Style LEGENDARY = color(0xE26234); public static Style NETHERFUSED = LEGENDARY; + public static Style ABILITY = UNIQUE; public static Style RIGHT_CLICK = color(0x20BD69); public static Style CORRUPTED = color(0x544988); public static Style CORRUPTED_LIGHT = color(0x7140A3); diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index b848a1e6..1d8d68e2 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1346,81 +1346,81 @@ "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", - "simplyswords.general.compatEnableSpellPowerScaling.desc" : "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", - - - "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap" : "Absorption cap", - "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap.@Tooltip" : "Abilities cannot give the user more absorption than this value", - - "text.autoconfig.simplyswords_main.option.unique_effects.watcherChance.@PrefixText" : "§6[The Watcher & Watching Warglaives]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherChance": "Watcher chance", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherRestoreAmount": "Watcher restore amount", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherRadius": "Watcher radius", - "text.autoconfig.simplyswords_main.option.unique_effects.omenChance": "Omen chance", - "text.autoconfig.simplyswords_main.option.unique_effects.omenAbsorptionCap": "Omen absorption cap", - "text.autoconfig.simplyswords_main.option.unique_effects.omenInstantKillThreshold": "Omen instant-kill threshold", - - "text.autoconfig.simplyswords_main.option.unique_effects.stealChance.@PrefixText" : "§6[Soulstealer]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stealChance": "Steal chance", - "text.autoconfig.simplyswords_main.option.unique_effects.stealDuration": "Steal duration", - "text.autoconfig.simplyswords_main.option.unique_effects.stealInvisDuration": "Steal Invisible duration", - "text.autoconfig.simplyswords_main.option.unique_effects.stealBlindDuration": "Steal Blind duration", - "text.autoconfig.simplyswords_main.option.unique_effects.stealRadius": "Steal radius", - "text.autoconfig.simplyswords_main.option.unique_effects.stealSpellScaling": "Steal Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldChance.@PrefixText" : "§6[Soulkeeper]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldChance": "Soulmeld chance", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldDuration": "Soulmeld duration", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldRadius": "Soulmeld Iradius", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendChance.@PrefixText" : "§6[Soulrender]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendChance": "Soulrend chance", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDuration": "Soulrend duration", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDamageMulti": "Soulrend damage multiplier", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendHealMulti": "Soulrend heal multiplier", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendRadius": "Soulrend radius", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendMaxStacks": "Soulrend max stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDamageSpellScaling": "Soulrend Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityChance.@PrefixText" : "§6[Twisted Blade]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityChance": "Ferocity chance", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityDuration": "Ferocity duration", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityMaxStacks": "Ferocity max stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityStrengthTier": "Ferocity strength amplifier", - - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreChance.@PrefixText" : "§6[Emberblade]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreChance": "Ember Ire chance", - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreDuration": "Ember Ire duration", - - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryChance.@PrefixText" : "§6[Hearthflame]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryChance": "Volcanic Fury chance", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryRadius": "Volcanic Fury radius", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryCooldown": "Volcanic Fury cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryDamage": "Volcanic Fury damage", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFurySpellScaling": "Volcanic Fury Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.stormChance.@PrefixText" : "§6[Mjolnir]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stormChance": "Storm chance", - "text.autoconfig.simplyswords_main.option.unique_effects.stormRadius": "Storm radius", - "text.autoconfig.simplyswords_main.option.unique_effects.stormCooldown": "Storm cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.stormFrequency": "Storm frequency", - "text.autoconfig.simplyswords_main.option.unique_effects.stormDuration": "Storm duration", - - "text.autoconfig.simplyswords_main.option.unique_effects.plagueChance.@PrefixText" : "§6[Longsword of The Plague]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.plagueChance": "Plague chance", - - "text.autoconfig.simplyswords_main.option.unique_effects.brimstoneChance.@PrefixText" : "§6[Brimstone Claymore]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.brimstoneChance": "Brimstone chance", - - "text.autoconfig.simplyswords_main.option.unique_effects.brambleChance.@PrefixText" : "§6[Bramblethorn]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.brambleChance": "Bramble chance", - - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRange.@PrefixText" : "§6[Soulpyre]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRange": "Soultether range", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRadius": "Soultether radius", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherDuration": "Soultether duration", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherIgniteDuration": "Soultether Ignite duration", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherResistanceDuration": "Soultether Resistance duration", + "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", + + + "simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", + "simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", + + "simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", + "simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", + "simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", + "simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", + "simplyswords.unique_effects.watcher.omenChance": "Omen chance", + "simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", + "simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", + + "simplyswords.unique_effects.steal": "§6[Soulstealer]§7", + "simplyswords.unique_effects.steal.chance": "Steal chance", + "simplyswords.unique_effects.steal.duration": "Steal duration", + "simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", + "simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", + "simplyswords.unique_effects.steal.radius": "Steal radius", + "simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", + + "simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", + "simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", + "simplyswords.unique_effects.soulkeeper.duration": "Soulmeld duration", + "simplyswords.unique_effects.soulkeeper.radius": "Soulmeld radius", + + "simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", + "simplyswords.unique_effects.soulRend.chance": "Soulrend chance", + "simplyswords.unique_effects.soulRend.duration": "Soulrend duration", + "simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", + "simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", + "simplyswords.unique_effects.soulRend.radius": "Soulrend radius", + "simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", + "simplyswords.unique_effects.soulRend.damageSpellScaling": "Soulrend Spell Power DMG multi", + + "simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", + "simplyswords.unique_effects.ferocity.chance": "Ferocity chance", + "simplyswords.unique_effects.ferocity.duration": "Ferocity duration", + "simplyswords.unique_effects.ferocity.maxStacks": "Ferocity max stacks", + "simplyswords.unique_effects.ferocity.strengthTier": "Ferocity strength amplifier", + + "simplyswords.unique_effects.emberIre": "§6[Emberblade]§7", + "simplyswords.unique_effects.emberIre.chance": "Ember Ire chance", + "simplyswords.unique_effects.emberIre.duration": "Ember Ire duration", + + "simplyswords.unique_effects.volcanicFury" : "§6[Hearthflame]§7", + "simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", + "simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", + "simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", + "simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", + "simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", + + "simplyswords.unique_effects.storm" : "§6[Mjolnir]§7", + "simplyswords.unique_effects.storm.chance": "Storm chance", + "simplyswords.unique_effects.storm.radius": "Storm radius", + "simplyswords.unique_effects.storm.cooldown": "Storm cooldown", + "simplyswords.unique_effects.storm.frequency": "Storm frequency", + "simplyswords.unique_effects.storm.duration": "Storm duration", + + "simplyswords.unique_effects.plague" : "§6[Longsword of The Plague]§7", + "simplyswords.unique_effects.plague.chance": "Plague chance", + + "simplyswords.unique_effects.brimstone" : "§6[Brimstone Claymore]§7", + "simplyswords.unique_effects.brimstone.chance": "Brimstone chance", + + "simplyswords.unique_effects.bramble" : "§6[Bramblethorn]§7", + "simplyswords.unique_effects.bramble.Chance": "Bramble chance", + + "simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", + "simplyswords.unique_effects.soultether.range": "Soultether range", + "simplyswords.unique_effects.soultether.radius": "Soultether radius", + "simplyswords.unique_effects.soultether.duration": "Soultether duration", + "simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", + "simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown.@PrefixText" : "§6[Frostfall]§7", "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown": "Frost Fury cooldown", diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/FabricHelperMethods.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/FabricHelperMethods.java index 882c3858..5eaba128 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/FabricHelperMethods.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/FabricHelperMethods.java @@ -17,25 +17,19 @@ public static float useSpellAttributeScaling(float damageModifier, PlayerEntity double damageOutput = 0.1; // Fetch attributes (crit damage/chance is now handled internally in API via randomValue) - double lightningPower = SpellPower.getSpellPower(SpellSchools.LIGHTNING, player).randomValue(); - double firePower = SpellPower.getSpellPower(SpellSchools.FIRE, player).randomValue(); - double frostPower = SpellPower.getSpellPower(SpellSchools.FROST, player).randomValue(); - double arcanePower = SpellPower.getSpellPower(SpellSchools.ARCANE, player).randomValue(); - double soulPower = SpellPower.getSpellPower(SpellSchools.SOUL, player).randomValue(); - double healingPower = SpellPower.getSpellPower(SpellSchools.HEALING, player).randomValue(); if (magicSchool.contains("lightning")) - attributePower = lightningPower; + attributePower = SpellPower.getSpellPower(SpellSchools.LIGHTNING, player).randomValue(); else if (magicSchool.contains("fire")) - attributePower = firePower; + attributePower = SpellPower.getSpellPower(SpellSchools.FIRE, player).randomValue(); else if (magicSchool.contains("frost")) - attributePower = frostPower; + attributePower = SpellPower.getSpellPower(SpellSchools.FROST, player).randomValue(); else if (magicSchool.contains("arcane")) - attributePower = arcanePower; + attributePower = SpellPower.getSpellPower(SpellSchools.ARCANE, player).randomValue(); else if (magicSchool.contains("soul")) - attributePower = soulPower; + attributePower = SpellPower.getSpellPower(SpellSchools.SOUL, player).randomValue(); else if (magicSchool.contains("healing")) - attributePower = healingPower; + attributePower = SpellPower.getSpellPower(SpellSchools.HEALING, player).randomValue(); damageOutput = (damageModifier * attributePower); @@ -45,4 +39,4 @@ else if (magicSchool.contains("healing")) } return 0; } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0815ce7c..8f1a786b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,7 +23,7 @@ spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 cloth_config_version=15.0.130 -fzz_config_version=0.5.4+1.21 +fzz_config_version=0.5.5+1.21 mod_menu_version=11.0.2 eldritch_end_version=5035580 necronomicon_version=5041803 \ No newline at end of file From 076c7919b2e3eb96cd7fa7369579940aea8db542 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Sun, 27 Oct 2024 01:37:16 -0400 Subject: [PATCH 25/37] unique effects config buttoned up?? --- .../EldritchEndCompatMethods.java | 10 +- .../config/UniqueEffectsConfig.java | 271 ++++--------- .../settings/ItemStackTooltipAppender.java | 3 +- .../effect/AstralShiftEffect.java | 7 +- .../effect/ElementalVortexEffect.java | 20 +- .../effect/FatalFlickerEffect.java | 9 +- .../simplyswords/effect/FireVortexEffect.java | 14 +- .../simplyswords/effect/FlameSeedEffect.java | 11 +- .../effect/FrostVortexEffect.java | 8 +- .../simplyswords/effect/MagislamEffect.java | 7 +- .../simplyswords/effect/MagistormEffect.java | 14 +- .../effect/VoidAssaultEffect.java | 5 +- .../entity/BattleStandardDarkEntity.java | 12 +- .../entity/BattleStandardEntity.java | 13 +- .../component/ChargedLocationComponent.java | 41 ++ .../component/MoltenParticleComponent.java | 30 ++ .../item/component/ParryComponent.java | 39 ++ .../item/component/RelocationComponent.java | 2 +- .../item/component/StoredChargeComponent.java | 8 + .../component/TargetedLocationComponent.java | 54 +++ .../item/custom/ArcanethystSwordItem.java | 77 ++-- .../item/custom/BrambleSwordItem.java | 8 +- .../item/custom/BrimstoneClaymoreItem.java | 5 +- .../item/custom/CaelestisSwordItem.java | 68 ++-- .../item/custom/DormantRelicSwordItem.java | 5 +- .../item/custom/DreadtideSwordItem.java | 73 ++-- .../item/custom/EmberIreSwordItem.java | 4 +- .../item/custom/EmberlashSwordItem.java | 75 ++-- .../item/custom/EnigmaSwordItem.java | 53 ++- .../item/custom/FlamewindSwordItem.java | 74 ++-- .../item/custom/FrostfallSwordItem.java | 206 +++++----- .../item/custom/HarbingerSwordItem.java | 40 +- .../item/custom/HearthflameSwordItem.java | 9 +- .../item/custom/HiveheartSwordItem.java | 63 +-- .../item/custom/IcewhisperSwordItem.java | 100 ++--- .../item/custom/LichbladeSwordItem.java | 202 +++++---- .../item/custom/LivyatanSwordItem.java | 150 +++---- .../item/custom/MagibladeSwordItem.java | 62 +-- .../item/custom/MagiscytheSwordItem.java | 79 ++-- .../item/custom/MagispearSwordItem.java | 64 +-- .../item/custom/MoltenEdgeSwordItem.java | 153 +++---- .../item/custom/PlagueSwordItem.java | 5 +- .../item/custom/RibboncleaverSwordItem.java | 58 +-- .../item/custom/RighteousRelicSwordItem.java | 6 +- .../item/custom/ShadowstingSwordItem.java | 62 +-- .../item/custom/SoulPyreSwordItem.java | 16 +- .../item/custom/SoulkeeperSwordItem.java | 6 +- .../item/custom/SoulrenderSwordItem.java | 22 +- .../item/custom/StarsEdgeSwordItem.java | 67 +-- .../item/custom/StealSwordItem.java | 27 +- .../item/custom/StormSwordItem.java | 16 +- .../item/custom/StormbringerSwordItem.java | 107 ++--- .../item/custom/StormsEdgeSwordItem.java | 50 ++- .../item/custom/SunfireSwordItem.java | 63 +-- .../item/custom/TaintedRelicSwordItem.java | 4 +- .../item/custom/TempestSwordItem.java | 68 ++-- .../item/custom/ThunderbrandSwordItem.java | 73 ++-- .../item/custom/TwistedBladeItem.java | 8 +- .../item/custom/WatcherSwordItem.java | 19 +- .../item/custom/WaxweaverSwordItem.java | 50 ++- .../item/custom/WhisperwindSwordItem.java | 57 ++- .../item/custom/WickpiercerSwordItem.java | 65 +-- .../simplyswords/mixin/LivingEntityMixin.java | 3 +- .../mixin/ServerPlayerEntityMixin.java | 5 +- .../registry/ComponentTypeRegistry.java | 11 +- .../simplyswords/registry/EffectRegistry.java | 29 +- .../simplyswords/util/AbilityMethods.java | 169 ++++---- .../simplyswords/util/HelperMethods.java | 21 +- .../assets/simplyswords/lang/en_us.json | 383 +++++++++--------- 69 files changed, 1973 insertions(+), 1645 deletions(-) create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/ChargedLocationComponent.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/MoltenParticleComponent.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/ParryComponent.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java index ed1c0711..5c337721 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/eldritch_end/EldritchEndCompatMethods.java @@ -20,7 +20,7 @@ public static void generateVoidcloakStacks(LivingEntity livingEntity) { livingEntity.getSoundCategory(), 0.1f, 1.4f); } } - int voidcallerCorruptionFrequency = (int) Config.getFloat("voidcallerCorruptionFrequency", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionFrequency); + int voidcallerCorruptionFrequency = Config.uniqueEffects.voidcaller.get().corruptionFrequency; if (player.age % voidcallerCorruptionFrequency == 0) { generateVoidhungerStacks(player, stack); } @@ -28,13 +28,13 @@ public static void generateVoidcloakStacks(LivingEntity livingEntity) { } public static void generateVoidhungerStacks(LivingEntity livingEntity, ItemStack stack) { - int voidcallerCorruptionPerTick = (int) Config.getFloat("voidcallerCorruptionPerTick", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionPerTick); - int voidcallerCorruptionDuration = (int) Config.getFloat("voidcallerCorruptionDuration", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionDuration); - int voidcallerCorruptionMax = (int) Config.getFloat("voidcallerCorruptionMax", "UniqueEffects", ConfigDefaultValues.voidcallerCorruptionMax); + int voidcallerCorruptionPerTick = Config.uniqueEffects.voidcaller.get().corruptionPerTick; + int voidcallerCorruptionDuration = Config.uniqueEffects.voidcaller.get().corruptionDuration; + int voidcallerCorruptionMax = Config.uniqueEffects.voidcaller.get().corruptionMax; if (!stack.isEmpty() && (stack.isOf(EldritchEndCompat.DREADTIDE.get()))) { HelperMethods.incrementStatusEffect(livingEntity, EldritchEndCompatRegistry.VOIDHUNGER, voidcallerCorruptionDuration, voidcallerCorruptionPerTick, voidcallerCorruptionMax); } */ } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index 768e764f..9ad8e9db 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -1,21 +1,50 @@ package net.sweenus.simplyswords.config; import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedAny; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.item.custom.ArcanethystSwordItem; import net.sweenus.simplyswords.item.custom.BrambleSwordItem; import net.sweenus.simplyswords.item.custom.BrimstoneClaymoreItem; +import net.sweenus.simplyswords.item.custom.CaelestisSwordItem; +import net.sweenus.simplyswords.item.custom.DreadtideSwordItem; import net.sweenus.simplyswords.item.custom.EmberIreSwordItem; +import net.sweenus.simplyswords.item.custom.EmberlashSwordItem; +import net.sweenus.simplyswords.item.custom.EnigmaSwordItem; +import net.sweenus.simplyswords.item.custom.FlamewindSwordItem; import net.sweenus.simplyswords.item.custom.FrostfallSwordItem; +import net.sweenus.simplyswords.item.custom.HarbingerSwordItem; import net.sweenus.simplyswords.item.custom.HearthflameSwordItem; +import net.sweenus.simplyswords.item.custom.HiveheartSwordItem; +import net.sweenus.simplyswords.item.custom.IcewhisperSwordItem; +import net.sweenus.simplyswords.item.custom.LichbladeSwordItem; +import net.sweenus.simplyswords.item.custom.LivyatanSwordItem; +import net.sweenus.simplyswords.item.custom.MagibladeSwordItem; +import net.sweenus.simplyswords.item.custom.MagiscytheSwordItem; +import net.sweenus.simplyswords.item.custom.MagispearSwordItem; +import net.sweenus.simplyswords.item.custom.MoltenEdgeSwordItem; import net.sweenus.simplyswords.item.custom.PlagueSwordItem; +import net.sweenus.simplyswords.item.custom.RibboncleaverSwordItem; +import net.sweenus.simplyswords.item.custom.ShadowstingSwordItem; import net.sweenus.simplyswords.item.custom.SoulPyreSwordItem; import net.sweenus.simplyswords.item.custom.SoulkeeperSwordItem; import net.sweenus.simplyswords.item.custom.SoulrenderSwordItem; +import net.sweenus.simplyswords.item.custom.StarsEdgeSwordItem; import net.sweenus.simplyswords.item.custom.StealSwordItem; import net.sweenus.simplyswords.item.custom.StormSwordItem; +import net.sweenus.simplyswords.item.custom.StormbringerSwordItem; +import net.sweenus.simplyswords.item.custom.StormsEdgeSwordItem; +import net.sweenus.simplyswords.item.custom.SunfireSwordItem; +import net.sweenus.simplyswords.item.custom.TempestSwordItem; +import net.sweenus.simplyswords.item.custom.ThunderbrandSwordItem; import net.sweenus.simplyswords.item.custom.TwistedBladeItem; import net.sweenus.simplyswords.item.custom.WatcherSwordItem; +import net.sweenus.simplyswords.item.custom.WaxweaverSwordItem; +import net.sweenus.simplyswords.item.custom.WhisperwindSwordItem; +import net.sweenus.simplyswords.item.custom.WickpiercerSwordItem; public class UniqueEffectsConfig extends Config { @@ -25,200 +54,50 @@ public UniqueEffectsConfig() { public float abilityAbsorptionCap = 20f; - public WatcherSwordItem.EffectSettings watcher = new WatcherSwordItem.EffectSettings(); - public StealSwordItem.EffectSettings steal = new StealSwordItem.EffectSettings(); - public SoulkeeperSwordItem.EffectSettings soulkeeper = new SoulkeeperSwordItem.EffectSettings(); - public SoulrenderSwordItem.EffectSettings soulRend = new SoulrenderSwordItem.EffectSettings(); - public TwistedBladeItem.EffectSettings ferocity = new TwistedBladeItem.EffectSettings(); - public EmberIreSwordItem.EffectSettings emberIre = new EmberIreSwordItem.EffectSettings(); - public HearthflameSwordItem.EffectSettings volcanicFury = new HearthflameSwordItem.EffectSettings(); - public StormSwordItem.EffectSettings storm = new StormSwordItem.EffectSettings(); - public PlagueSwordItem.EffectSettings plague = new PlagueSwordItem.EffectSettings(); - public BrimstoneClaymoreItem.EffectSettings brimstone = new BrimstoneClaymoreItem.EffectSettings(); - public BrambleSwordItem.EffectSettings bramble = new BrambleSwordItem.EffectSettings(); - public SoulPyreSwordItem.EffectSettings soultether = new SoulPyreSwordItem.EffectSettings(); - public FrostfallSwordItem.EffectSettings frostFury = new FrostfallSwordItem.EffectSettings(); - - /* - - @ConfigEntry.Gui.PrefixText - public float frostFuryCooldown = 380f; - public float frostFuryRadius = 3f; - public float frostFuryDamage = 18f; - public float frostFuryChance = 15f; - public float frostFuryDuration = 80f; - public float frostFurySpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float moltenRoarCooldown = 320f; - public float moltenRoarRadius = 5f; - public float moltenRoarKnockbackStrength = 5f; - public float moltenRoarChance = 15f; - public float moltenRoarDuration = 100f; - - @ConfigEntry.Gui.PrefixText - public float frostShatterRadius = 3f; - public float frostShatterDamage = 18f; - public float frostShatterChance = 15f; - public float frostShatterDuration = 80f; - public float frostShatterSpellScaling = 1.7f; - - @ConfigEntry.Gui.PrefixText - public float permafrostRadius = 4f; - public float permafrostDamage = 1f; - public float permafrostCooldown = 600f; - public float permafrostDuration = 200f; - public float permafrostSpellScaling = 0.9f; - - @ConfigEntry.Gui.PrefixText - public float arcaneAssaultRadius = 6f; - public float arcaneAssaultDamage = 1f; - public float arcaneAssaultCooldown = 220; - public float arcaneAssaultChance = 25f; - public float arcaneAssaultDuration = 120f; - public float arcaneAssaultSpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float thunderBlitzRadius = 2f; - public float thunderBlitzDamage = 3f; - public float thunderBlitzCooldown = 250; - public float thunderBlitzChance = 15f; - public float thunderBlitzSpellScaling = 1.7f; - - @ConfigEntry.Gui.PrefixText - public float stormJoltCooldown = 100f; - public float stormJoltChance = 15f; - - @ConfigEntry.Gui.PrefixText - public float soulAnguishRadius = 3f; - public float soulAnguishAbsorptionCap = 8f; - public float soulAnguishDamage = 4f; - public float soulAnguishCooldown = 700; - public float soulAnguishDuration = 200f; - public float soulAnguishHeal = 0.5f; - public float soulAnguishRange = 22f; - public float soulAnguishSpellScaling = 1.6f; - - @ConfigEntry.Gui.PrefixText - public float shockDeflectBlockDuration = 35f; - public float shockDeflectDamage = 12f; - public float shockDeflectCooldown = 90; - public float shockDeflectParryDuration = 10f; - public float shockDeflectSpellScaling = 2.3f; - - @ConfigEntry.Gui.PrefixText - public float shadowmistCooldown = 200f; - public float shadowmistChance = 25f; - public float shadowmistDamageMulti = 0.8f; - public float shadowmistBlindDuration = 60f; - public float shadowmistRadius = 4f; - - @ConfigEntry.Gui.PrefixText - public float abyssalStandardCooldown = 700; - public float abyssalStandardChance = 15f; - public float abyssalStandardDamage = 3f; - public float abyssalStandardSpellScaling = 1.2f; - - @ConfigEntry.Gui.PrefixText - public float righteousStandardCooldown = 700f; - public float righteousStandardChance = 15f; - public float righteousStandardDamage = 3f; - public float righteousStandardSpellScaling = 1.1f; - public float righteousStandardSpellScalingHeal = 1.3f; - - @ConfigEntry.Gui.PrefixText - public float fatalFlickerCooldown = 175f; - public float fatalFlickerChance = 15f; - public float fatalFlickerRadius = 3f; - public float fatalFlickerMaxStacks = 99f; - public float fatalFlickerDashVelocity = 3f; - - @ConfigEntry.Gui.PrefixText - public float smoulderCooldown = 80f; - public float smoulderMaxStacks = 5f; - public float smoulderHeal = 15f; - public float smoulderSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float waxweaveCooldown = 1200f; - public float waxweaveMaxStacks = 3f; - - @ConfigEntry.Gui.PrefixText - public float hivemindCooldown = 60f; - public float hivemindDuration = 450f; - public float hivemindDamage = 1.1f; - - @ConfigEntry.Gui.PrefixText - public float celestialSurgeCooldown = 120f; - public float celestialSurgeDuration = 120f; - public float celestialSurgeStacks = 6f; - public float celestialSurgeDamageModifier = 0.40f; - public float celestialSurgeLifestealModifier = 0.10f; - - @ConfigEntry.Gui.PrefixText - public float flickerFuryCooldown = 220f; - public float flickerFuryDuration = 40f; - public float flickerFuryDamage = 1.0f; - - @ConfigEntry.Gui.PrefixText - public float vortexDuration = 1200f; - public float vortexMaxSize = 30f; - public float vortexMaxStacks = 10f; - public float vortexSpellScaling = 0.3f; - - @ConfigEntry.Gui.PrefixText - public float voidcallerDuration = 250f; - public float voidcallerStartingTickFrequency = 12f; - public float voidcallerDamageModifier = 1.0f; - public float voidcallerCorruptionFrequency = 60f; - public float voidcallerCorruptionPerTick = 1.0f; - public float voidcallerCorruptionDuration = 1200f; - public float voidcallerCorruptionMax = 100f; - - @ConfigEntry.Gui.PrefixText - public float emberstormSpreadCap = 6f; - public float emberstormDamage = 5f; - public float emberstormDetonationDamage = 15f; - public float emberstormCooldown = 980f; - public float emberstormMaxHaste = 10f; - public float emberstormSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float ribbonwrathCooldown = 40f; - public float ribbonwrathResilienceAmplifier = 1f; - public float ribbonwrathDamageBonusPercent = 0.95f; - - @ConfigEntry.Gui.PrefixText - public float magistormCooldown = 980f; - public float magistormDuration = 400f; - public float magistormRadius = 4f; - public float magistormDamage = 3f; - public float magistormRepairChance = 0.25f; - public float magistormSpellScaling = 0.5f; - - @ConfigEntry.Gui.PrefixText - public float enigmaCooldown = 800f; - public float enigmaDecayRate = 2f; - public float enigmaChaseRadius = 16f; - - @ConfigEntry.Gui.PrefixText - public float magibladeCooldown = 35; - public float magibladeSonicDistance = 16f; - public float magibladeDamageModifier = 0.7f; - public float magibladeRepelChance = 55f; - public float magibladeRepelRadius = 4f; - - @ConfigEntry.Gui.PrefixText - public float magislamCooldown = 140; - public float magislamRadius = 4f; - public float magislamDamageModifier = 2.0f; - public float magislamMagicChance = 35f; - public float magislamMagicModifier = 0.5f; - - @ConfigEntry.Gui.PrefixText - public float astralShiftCooldown = 420; - public float astralShiftDuration = 100f; - public float astralShiftDamageModifier = 1.0f; - public float astralShiftDamageMax = 300f; - public float astralShiftChance = 5f;*/ + public WatcherSwordItem.EffectSettings watcher = new WatcherSwordItem.EffectSettings(); + public StealSwordItem.EffectSettings steal = new StealSwordItem.EffectSettings(); + public SoulkeeperSwordItem.EffectSettings soulkeeper = new SoulkeeperSwordItem.EffectSettings(); + public SoulrenderSwordItem.EffectSettings soulRend = new SoulrenderSwordItem.EffectSettings(); + public TwistedBladeItem.EffectSettings ferocity = new TwistedBladeItem.EffectSettings(); + public EmberIreSwordItem.EffectSettings emberIre = new EmberIreSwordItem.EffectSettings(); + public HearthflameSwordItem.EffectSettings volcanicFury = new HearthflameSwordItem.EffectSettings(); + public StormSwordItem.EffectSettings storm = new StormSwordItem.EffectSettings(); + public PlagueSwordItem.EffectSettings plague = new PlagueSwordItem.EffectSettings(); + public BrimstoneClaymoreItem.EffectSettings brimstone = new BrimstoneClaymoreItem.EffectSettings(); + public BrambleSwordItem.EffectSettings bramble = new BrambleSwordItem.EffectSettings(); + public SoulPyreSwordItem.EffectSettings soultether = new SoulPyreSwordItem.EffectSettings(); + public FrostfallSwordItem.EffectSettings frostFury = new FrostfallSwordItem.EffectSettings(); + public MoltenEdgeSwordItem.EffectSettings moltenRoar = new MoltenEdgeSwordItem.EffectSettings(); + public LivyatanSwordItem.EffectSettings frostShatter = new LivyatanSwordItem.EffectSettings(); + public IcewhisperSwordItem.EffectSettings permafrost = new IcewhisperSwordItem.EffectSettings(); + public ArcanethystSwordItem.EffectSettings arcaneAssault = new ArcanethystSwordItem.EffectSettings(); + public ThunderbrandSwordItem.EffectSettings thunderBlitz = new ThunderbrandSwordItem.EffectSettings(); + public StormsEdgeSwordItem.EffectSettings stormJolt = new StormsEdgeSwordItem.EffectSettings(); + public LichbladeSwordItem.EffectSettings soulAnguish = new LichbladeSwordItem.EffectSettings(); + public StormbringerSwordItem.EffectSettings shockDeflect = new StormbringerSwordItem.EffectSettings(); + public ShadowstingSwordItem.EffectSettings shadowmist = new ShadowstingSwordItem.EffectSettings(); + public HarbingerSwordItem.EffectSettings abyssalStandard = new HarbingerSwordItem.EffectSettings(); + public SunfireSwordItem.EffectSettings righteousStandard = new SunfireSwordItem.EffectSettings(); + public WhisperwindSwordItem.EffectSettings fatalFlicker = new WhisperwindSwordItem.EffectSettings(); + public EmberlashSwordItem.EffectSettings smoulder = new EmberlashSwordItem.EffectSettings(); + public WaxweaverSwordItem.EffectSettings waxweave = new WaxweaverSwordItem.EffectSettings(); + public HiveheartSwordItem.EffectSettings hivemind = new HiveheartSwordItem.EffectSettings(); + public StarsEdgeSwordItem.EffectSettings celestialSurge = new StarsEdgeSwordItem.EffectSettings(); + public WickpiercerSwordItem.EffectSettings flickerFury = new WickpiercerSwordItem.EffectSettings(); + public TempestSwordItem.EffectSettings vortex = new TempestSwordItem.EffectSettings(); + public FlamewindSwordItem.EffectSettings emberstorm = new FlamewindSwordItem.EffectSettings(); + public RibboncleaverSwordItem.EffectSettings ribbonwrath = new RibboncleaverSwordItem.EffectSettings(); + public MagiscytheSwordItem.EffectSettings magistorm = new MagiscytheSwordItem.EffectSettings(); + public EnigmaSwordItem.EffectSettings enigma = new EnigmaSwordItem.EffectSettings(); + public MagibladeSwordItem.EffectSettings magiblade = new MagibladeSwordItem.EffectSettings(); + public MagispearSwordItem.EffectSettings magislam = new MagispearSwordItem.EffectSettings(); + public CaelestisSwordItem.EffectSettings astralShift = new CaelestisSwordItem.EffectSettings(); + + // eldritch end compat + public ValidatedCondition voidcaller = new ValidatedAny<>(new DreadtideSwordItem.EffectSettings()) + .toCondition( + () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), + Text.translatable("simplyswords.unique_effects.voidcaller.compat"), + DreadtideSwordItem.EffectSettings::new + ); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java index c7269b63..335ad687 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/ItemStackTooltipAppender.java @@ -1,9 +1,7 @@ package net.sweenus.simplyswords.config.settings; -import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipAppender; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; @@ -38,6 +36,7 @@ private record StackAppender(Supplier stack) implements TooltipA @Override public void appendTooltip(Item.TooltipContext context, Consumer tooltip, TooltipType type) { Item s = stack.get(); + if (s == null) return; List list = new ArrayList<>(); s.appendTooltip(s.getDefaultStack(), context, list, type); if (!list.isEmpty() && Objects.equals(list.get(0).getString(), "")) { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java index f02cd42f..9b1f86a5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java @@ -12,7 +12,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -36,8 +35,8 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { double x = entity.getX(); double y = entity.getY(); double z = entity.getZ(); - float damageMulti = (int) Config.getFloat("astralShiftDamageModifier", "UniqueEffects", ConfigDefaultValues.astralShiftDamageModifier); - float damageMax = (int) Config.getFloat("astralShiftDamageMax", "UniqueEffects", ConfigDefaultValues.astralShiftDamageMax); + float damageMulti = Config.uniqueEffects.astralShift.damageModifier; + float damageMax = Config.uniqueEffects.astralShift.damageMax; double radius = 8; float damage = Math.min((amplifier) * damageMulti, damageMax); @@ -78,4 +77,4 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java index 6274fbb3..21f49b98 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java @@ -10,7 +10,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -35,9 +34,7 @@ public void setAdditionalData(int data) { public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); - float abilityDamageFire = 0; - float abilityDamageFrost = 0; - SoundHelper.loopSound(livingEntity, SoundRegistry.AMBIENCE_WIND_LOOP.getId(), 20); + SoundHelper.loopSound(livingEntity, SoundRegistry.AMBIENCE_WIND_LOOP.getId(), 20); if (livingEntity.getStatusEffect(EffectRegistry.ELEMENTAL_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); @@ -50,14 +47,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, livingEntity)) { if (additionalData != 0) { - DamageSource damageSource = livingEntity.getDamageSources().indirectMagic(le, livingEntity); - damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, sourceEntity); - float spellScalingModifier = Config.getFloat("vortexSpellScaling", "UniqueEffects", ConfigDefaultValues.vortexSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost") > 1) - abilityDamageFrost = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost"); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire") > 1) - abilityDamageFire = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire"); - le.timeUntilRegen = 0; + DamageSource damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, sourceEntity); + float spellScalingModifier = Config.uniqueEffects.vortex.spellScaling; + float abilityDamageFrost = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost"); + float abilityDamageFire = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire"); + le.timeUntilRegen = 0; le.damage(damageSource, (3 + ((float) amplifier / 2)) + (abilityDamageFire + abilityDamageFrost)); } @@ -86,4 +80,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java index 960e1acf..a7c4b462 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java @@ -11,7 +11,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -24,8 +23,8 @@ public FatalFlickerEffect(StatusEffectCategory statusEffectCategory, int color) } public static void performDash(LivingEntity user, World world, int radius) { - int dashDistance = (int) Config.getFloat("fatalFlickerDashVelocity", "UniqueEffects", ConfigDefaultValues.fatalFlickerDashVelocity); - int maxAmplifier = (int) Config.getFloat("fatalFlickerMaxStacks", "UniqueEffects", ConfigDefaultValues.fatalFlickerMaxStacks); + float dashDistance = Config.uniqueEffects.fatalFlicker.dashVelocity; + int maxAmplifier = Config.uniqueEffects.fatalFlicker.maxStacks; int amplifier = 1; user.setVelocity(user.getRotationVector().multiply(+dashDistance)); @@ -64,7 +63,7 @@ public boolean applyUpdateEffect(LivingEntity user, int amplifier) { int ability_timer = Objects.requireNonNull(user.getStatusEffect(EffectRegistry.FATAL_FLICKER)).getDuration(); World world = user.getWorld(); - int radius = (int) Config.getFloat("fatalFlickerRadius", "UniqueEffects", ConfigDefaultValues.fatalFlickerRadius); + int radius = Config.uniqueEffects.fatalFlicker.radius; //Player dash forward if (ability_timer >= 5) { @@ -103,4 +102,4 @@ public boolean applyUpdateEffect(LivingEntity user, int amplifier) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java index 62d0cd68..2e6967ae 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java @@ -8,7 +8,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -31,8 +30,7 @@ public void setAdditionalData(int data) { public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); - float abilityDamage = 0; - if (livingEntity.getStatusEffect(EffectRegistry.FIRE_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.FIRE_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -40,11 +38,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (livingEntity.age % Math.max(1, (15 - (amplifier))) == 0 && additionalData != 0) { DamageSource damageSource = livingEntity.getDamageSources().magic(); livingEntity.timeUntilRegen = 0; - if (sourceEntity != null) { + float abilityDamage = 0; + if (sourceEntity != null) { damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, sourceEntity); - float spellScalingModifier = Config.getFloat("vortexSpellScaling", "UniqueEffects", ConfigDefaultValues.vortexSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire") > 1) - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire"); + float spellScalingModifier = Config.uniqueEffects.vortex.spellScaling; + abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire"); if (livingEntity instanceof PlayerEntity && sourceEntity instanceof PlayerEntity sourcePlayer) damageSource = livingEntity.getDamageSources().playerAttack(sourcePlayer); } @@ -69,4 +67,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java index 8c5032a4..2ec5913d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java @@ -14,7 +14,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -39,7 +38,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { int duration = 0; if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); - float abilityDamage = Config.getFloat("emberstormDamage", "UniqueEffects", ConfigDefaultValues.emberstormDamage); + float abilityDamage = Config.uniqueEffects.emberstorm.damage; float volume = 0.3f; float pitch = 1.3f; int frequency = 20; @@ -60,12 +59,12 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { HelperMethods.spawnOrbitParticles(serverWorld, livingEntity.getPos(), ParticleTypes.POOF, 1, 10); HelperMethods.spawnOrbitParticles(serverWorld, livingEntity.getPos(), ParticleTypes.EXPLOSION, 0.5, 2); HelperMethods.spawnOrbitParticles(serverWorld, livingEntity.getPos(), ParticleTypes.WARPED_SPORE, 1, 10); - abilityDamage = Config.getFloat("emberstormDetonationDamage", "UniqueEffects", ConfigDefaultValues.emberstormDetonationDamage); + abilityDamage = Config.uniqueEffects.emberstorm.detonationDamage; volume = 0.6f; pitch = 1.0f; soundEvent = SoundRegistry.SPELL_FIRE.get(); if (livingEntity.distanceTo(sourceEntity) < 30) { - int maxHaste = (int) Config.getFloat("emberstormMaxHaste", "UniqueEffects", ConfigDefaultValues.emberstormMaxHaste); + int maxHaste = Config.uniqueEffects.emberstorm.maxHaste; HelperMethods.incrementStatusEffect(sourceEntity, StatusEffects.HASTE, 120, 1, maxHaste); //HelperMethods.spawnWaistHeightParticles(serverWorld, ParticleTypes.EFFECT, sourceEntity, livingEntity, 20); } @@ -90,7 +89,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (sourceEntity != null) { damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, sourceEntity); - float spellScalingModifier = Config.getFloat("emberstormSpellScaling", "UniqueEffects", ConfigDefaultValues.emberstormSpellScaling); + float spellScalingModifier = Config.uniqueEffects.emberstorm.spellScaling; if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire") > abilityDamage) abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "fire"); } @@ -119,4 +118,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java index 310756b3..020db59b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java @@ -8,7 +8,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -42,9 +41,8 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { livingEntity.timeUntilRegen = 0; if (sourceEntity != null) { damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, sourceEntity); - float spellScalingModifier = Config.getFloat("vortexSpellScaling", "UniqueEffects", ConfigDefaultValues.vortexSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost") > 1) - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost"); + float spellScalingModifier = Config.uniqueEffects.vortex.spellScaling; + abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, sourceEntity, "frost"); if (livingEntity instanceof PlayerEntity && sourceEntity instanceof PlayerEntity sourcePlayer) damageSource = livingEntity.getDamageSources().playerAttack(sourcePlayer); } @@ -69,4 +67,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java index d8da0161..5a17748a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java @@ -12,7 +12,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -32,11 +31,11 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (livingEntity instanceof PlayerEntity player) { int ability_timer = Objects.requireNonNull(player.getStatusEffect(EffectRegistry.MAGISLAM)).getDuration(); - int radius = (int) Config.getFloat("magislamRadius", "UniqueEffects", ConfigDefaultValues.magislamRadius); + double radius = Config.uniqueEffects.magislam.radius; double leapVelocity = 1.5; double height = 0.9; double descentVelocity = 1; - double damage_multiplier = Config.getFloat("magislamDamageModifier", "UniqueEffects", ConfigDefaultValues.magislamDamageModifier); + double damage_multiplier = Config.uniqueEffects.magislam.damageModifier; double damage = (HelperMethods.getEntityAttackDamage(livingEntity) * damage_multiplier); if (ability_timer >= 60) { @@ -83,4 +82,4 @@ public boolean canApplyUpdateEffect(int duration, int amplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java index 962fd323..eb61df1f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java @@ -11,7 +11,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.item.custom.MagiscytheSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -36,14 +35,13 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { double x = livingEntity.getX(); double y = livingEntity.getY(); double z = livingEntity.getZ(); - float damage = Config.getFloat("magistormDamage", "UniqueEffects", ConfigDefaultValues.magistormDamage); - double radius = Config.getFloat("magistormRadius", "UniqueEffects", ConfigDefaultValues.magistormRadius); - float duration = Config.getFloat("magistormDuration", "UniqueEffects", ConfigDefaultValues.magistormDuration); + double radius = Config.uniqueEffects.magistorm.radius; + float duration = Config.uniqueEffects.magistorm.duration; int frequency = Math.max(3, 10 - amplifier); - float spellScalingModifier = Config.getFloat("magistormSpellScaling", "UniqueEffects", ConfigDefaultValues.magistormSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, livingEntity, "arcane") > damage) - damage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, livingEntity, "arcane"); + float spellScalingModifier = Config.uniqueEffects.magistorm.spellScaling; + + float damage = Math.max(Config.uniqueEffects.magistorm.damage, HelperMethods.commonSpellAttributeScaling(spellScalingModifier, livingEntity, "arcane")); DamageSource damageSource = livingEntity.getDamageSources().indirectMagic(livingEntity, livingEntity); if (livingEntity.age % frequency == 0 && livingEntity instanceof PlayerEntity player) { @@ -82,4 +80,4 @@ public boolean canApplyUpdateEffect(int duration, int amplifier) { return super.canApplyUpdateEffect(duration, amplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java index cb9a8dd2..6527f013 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java @@ -6,7 +6,6 @@ import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.particle.ParticleTypes; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; @@ -27,7 +26,7 @@ public void setAdditionalData(int data) { @Override public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { - int voidcallerStartingTickFrequency = (int) Config.getFloat("voidcallerStartingTickFrequency", "UniqueEffects", ConfigDefaultValues.voidcallerStartingTickFrequency); + int voidcallerStartingTickFrequency = Config.uniqueEffects.voidcaller.get().startingTickFrequency; if (livingEntity.getStatusEffect(EffectRegistry.VOIDASSAULT) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); @@ -55,4 +54,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java index f47f75db..6bfbe061 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java @@ -19,7 +19,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -31,8 +30,6 @@ public class BattleStandardDarkEntity extends PathAwareEntity { public static final Supplier> TYPE = Suppliers.memoize(() -> EntityType.Builder.create(BattleStandardDarkEntity::new, SpawnGroup.MISC).build("battlestandarddark")); - float abilityDamage = Config.getFloat("abyssalStandardDamage", "UniqueEffects", ConfigDefaultValues.abyssalStandardDamage); - float spellScalingModifier = Config.getFloat("abyssalStandardSpellScaling", "UniqueEffects", ConfigDefaultValues.abyssalStandardSpellScaling); public PlayerEntity ownerEntity; public String standardType; public int decayRate; @@ -78,15 +75,12 @@ public void baseTick() { if (!ownerEntity.isAlive()) this.setHealth(this.getHealth() - 1000); int radius = 6; - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "soul") > 0) - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "soul"); if (standardType.equals("enigma") && !this.isInvisible()) this.setInvisible(true); if (standardType.equals("enigma")) { radius = 2; - int moveRadius = (int) Config.getFloat("enigmaChaseRadius", "UniqueEffects", ConfigDefaultValues.enigmaChaseRadius); - abilityDamage = 1; + double moveRadius = Config.uniqueEffects.enigma.enigmaChaseRadius; Box box = HelperMethods.createBox(this, moveRadius); Entity closestEntity = this.getWorld().getOtherEntities(this, box, EntityPredicates.VALID_LIVING_ENTITY).stream() .filter(entity -> { @@ -107,6 +101,8 @@ public void baseTick() { } } + float abilityDamage = standardType.equals("enigma") ? 1f : HelperMethods.spellScaledDamage("soul", ownerEntity, Config.uniqueEffects.abyssalStandard.spellScaling, Config.uniqueEffects.abyssalStandard.damage); + //AOE Aura if (this.age % 10 == 0) { Box box = new Box(this.getX() + radius, this.getY() + (float) radius / 3, this.getZ() + radius, @@ -184,4 +180,4 @@ public void baseTick() { } super.baseTick(); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java index ad6fd4cf..d079b434 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java @@ -21,7 +21,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -32,10 +31,6 @@ public class BattleStandardEntity extends PathAwareEntity { public static final Supplier> TYPE = Suppliers.memoize(() -> EntityType.Builder.create(BattleStandardEntity::new, SpawnGroup.MISC).build("battlestandard")); - float abilityDamage = Config.getFloat("righteousStandardDamage", "UniqueEffects", ConfigDefaultValues.righteousStandardDamage); - float abilityHeal = 3; - float abilityHealScalingModifier = Config.getFloat("righteousStandardSpellScalingHeal", "UniqueEffects", ConfigDefaultValues.righteousStandardSpellScalingHeal); - float spellScalingModifier = Config.getFloat("righteousStandardSpellScaling", "UniqueEffects", ConfigDefaultValues.righteousStandardSpellScaling); public LivingEntity ownerEntity; public String standardType; public int decayRate; @@ -93,9 +88,7 @@ public void baseTick() { if (!ownerEntity.isAlive()) this.setHealth(this.getHealth() - 1000); int radius = 6; - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "fire") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, ownerEntity, "fire"); - } + float abilityDamage = HelperMethods.spellScaledDamage("fire", ownerEntity, Config.uniqueEffects.righteousStandard.spellScaling, Config.uniqueEffects.righteousStandard.damage); // AOE Aura //living entity, ownerEntity, abilityDamage, if (this.age % 10 == 0) { @@ -179,9 +172,7 @@ public void baseTick() { this.getX() - radius, this.getY() - (float) radius / 3, this.getZ() - radius); for (Entity entities : getWorld().getOtherEntities(this, box, EntityPredicates.VALID_LIVING_ENTITY)) { if (entities instanceof LivingEntity le && !HelperMethods.checkFriendlyFire(le, ownerEntity)) { - if (HelperMethods.commonSpellAttributeScaling(abilityHealScalingModifier, ownerEntity, "healing") > 0) { - abilityHeal = HelperMethods.commonSpellAttributeScaling(abilityHealScalingModifier, ownerEntity, "healing"); - } + float abilityHeal = HelperMethods.spellScaledDamage("healing", ownerEntity, Config.uniqueEffects.righteousStandard.spellScalingHeal, 3f); //Sunfire positive effects switch (standardType) { case "sunfire" -> { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/ChargedLocationComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/ChargedLocationComponent.java new file mode 100644 index 00000000..d43758f5 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/ChargedLocationComponent.java @@ -0,0 +1,41 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; + +public record ChargedLocationComponent(int charge, double lastX, double lastY, double lastZ) { + + public ChargedLocationComponent(double lastX, double lastY, double lastZ) { + this(0, lastX, lastY, lastZ); + } + + public ChargedLocationComponent decrement() { + return new ChargedLocationComponent(Math.max(0, charge - 1), lastX, lastY, lastZ); + } + + public static ChargedLocationComponent DEFAULT = new ChargedLocationComponent(0, 0.0, 0.0, 0.0); + + public static Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + Codec.INT.fieldOf("charge").forGetter(ChargedLocationComponent::charge), + Codec.DOUBLE.fieldOf("x").forGetter(ChargedLocationComponent::lastX), + Codec.DOUBLE.fieldOf("y").forGetter(ChargedLocationComponent::lastY), + Codec.DOUBLE.fieldOf("z").forGetter(ChargedLocationComponent::lastZ) + ).apply(instance, ChargedLocationComponent::new)); + + public static PacketCodec PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.INTEGER, + ChargedLocationComponent::charge, + PacketCodecs.DOUBLE, + ChargedLocationComponent::lastX, + PacketCodecs.DOUBLE, + ChargedLocationComponent::lastY, + PacketCodecs.DOUBLE, + ChargedLocationComponent::lastZ, + ChargedLocationComponent::new + ); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/MoltenParticleComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/MoltenParticleComponent.java new file mode 100644 index 00000000..6c8e14da --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/MoltenParticleComponent.java @@ -0,0 +1,30 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; + +public record MoltenParticleComponent(ParticleEffect walk, ParticleEffect sprint, ParticleEffect passive) { + + public static MoltenParticleComponent DEFAULT = new MoltenParticleComponent(ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, ParticleTypes.SMOKE); + + public static Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + ParticleTypes.TYPE_CODEC.fieldOf("walk").forGetter(MoltenParticleComponent::walk), + ParticleTypes.TYPE_CODEC.fieldOf("sprint").forGetter(MoltenParticleComponent::sprint), + ParticleTypes.TYPE_CODEC.fieldOf("passive").forGetter(MoltenParticleComponent::passive) + ).apply(instance, MoltenParticleComponent::new)); + + public static PacketCodec PACKET_CODEC = PacketCodec.tuple( + ParticleTypes.PACKET_CODEC, + MoltenParticleComponent::walk, + ParticleTypes.PACKET_CODEC, + MoltenParticleComponent::sprint, + ParticleTypes.PACKET_CODEC, + MoltenParticleComponent::passive, + MoltenParticleComponent::new + ); +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/ParryComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/ParryComponent.java new file mode 100644 index 00000000..6e8be502 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/ParryComponent.java @@ -0,0 +1,39 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; + +public record ParryComponent(boolean parried, int parrySuccession) { + + public ParryComponent success() { + return new ParryComponent(true, Math.max(20, parrySuccession + 1)); + } + + public ParryComponent resetFull() { + return DEFAULT; + } + + public ParryComponent resetParry() { + return new ParryComponent(false, parrySuccession); + } + + public static ParryComponent DEFAULT = new ParryComponent(false, 0); + + public static Codec CODEC = RecordCodecBuilder.create( instance -> + instance.group( + Codec.BOOL.fieldOf("parried").forGetter(ParryComponent::parried), + Codec.INT.fieldOf("succession").forGetter(ParryComponent::parrySuccession) + ).apply(instance, ParryComponent::new)); + + public static PacketCodec PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.BOOL, + ParryComponent::parried, + PacketCodecs.INTEGER, + ParryComponent::parrySuccession, + ParryComponent::new + ); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java index 9ec6d286..4d0c10dc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/RelocationComponent.java @@ -21,7 +21,7 @@ public boolean almostReady() { public RelocationComponent tickDown() { if (this == DEFAULT) return this; - return new RelocationComponent(relocateX, relocateY, relocateZ, relocateTarget, relocationTimer - 1, canRelocate); + return new RelocationComponent(relocateX, relocateY, relocateZ, relocateTarget, Math.max(0, relocationTimer - 1), canRelocate); } public RelocationComponent clear() { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java index a789fa48..d3ac773d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/StoredChargeComponent.java @@ -11,6 +11,14 @@ public StoredChargeComponent add(int addedCharge) { return new StoredChargeComponent(this.charge + addedCharge); } + public StoredChargeComponent increment() { + return new StoredChargeComponent(charge + 1); + } + + public StoredChargeComponent decrement() { + return new StoredChargeComponent(Math.max(0, charge - 1)); + } + public StoredChargeComponent set(int newCharge) { return new StoredChargeComponent(newCharge); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java new file mode 100644 index 00000000..c22cf0f4 --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java @@ -0,0 +1,54 @@ +package net.sweenus.simplyswords.item.component; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.Uuids; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +public record TargetedLocationComponent(UUID uuid, double lastX, double lastY, double lastZ) { + + public TargetedLocationComponent(double lastX, double lastY, double lastZ) { + this(UUID.randomUUID(), lastX, lastY, lastZ); + } + + @Nullable + public LivingEntity getEntity(ServerWorld world) { + Entity entity = world.getEntity(uuid); + return entity instanceof LivingEntity ? (LivingEntity) entity : null; + } + + public TargetedLocationComponent setTarget(Entity newTarget) { + return new TargetedLocationComponent(newTarget.getUuid(), lastX, lastY, lastZ); + } + + public static TargetedLocationComponent DEFAULT = new TargetedLocationComponent(UUID.randomUUID(), 0.0, 0.0, 0.0); + + public static Codec CODEC = RecordCodecBuilder.create(instance -> + instance.group( + Uuids.CODEC.fieldOf("uuid").forGetter(TargetedLocationComponent::uuid), + Codec.DOUBLE.fieldOf("x").forGetter(TargetedLocationComponent::lastX), + Codec.DOUBLE.fieldOf("y").forGetter(TargetedLocationComponent::lastY), + Codec.DOUBLE.fieldOf("z").forGetter(TargetedLocationComponent::lastZ) + ).apply(instance, TargetedLocationComponent::new)); + + public static PacketCodec PACKET_CODEC = PacketCodec.tuple( + PacketCodecs.STRING.xmap(UUID::fromString, UUID::toString), + TargetedLocationComponent::uuid, + PacketCodecs.DOUBLE, + TargetedLocationComponent::lastX, + PacketCodecs.DOUBLE, + TargetedLocationComponent::lastY, + PacketCodecs.DOUBLE, + TargetedLocationComponent::lastZ, + TargetedLocationComponent::new + ); + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java index 4cf79319..21ebdeca 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ArcanethystSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,19 +13,21 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -31,20 +36,11 @@ public ArcanethystSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int radius = (int) Config.getFloat("arcaneAssaultRadius", "UniqueEffects", ConfigDefaultValues.arcaneAssaultRadius); - float abilityDamage = Config.getFloat("arcaneAssaultDamage", "UniqueEffects", ConfigDefaultValues.arcaneAssaultDamage); - int arcane_timer_max = (int) Config.getFloat("arcaneAssaultDuration", "UniqueEffects", ConfigDefaultValues.arcaneAssaultDuration); - int skillCooldown = (int) Config.getFloat("arcaneAssaultCooldown", "UniqueEffects", ConfigDefaultValues.arcaneAssaultCooldown); - int chargeChance = (int) Config.getFloat("arcaneAssaultChance", "UniqueEffects", ConfigDefaultValues.arcaneAssaultChance); - int spellScalingModifier = (int) Config.getFloat("arcaneAssaultSpellScaling", "UniqueEffects", ConfigDefaultValues.arcaneAssaultSpellScaling); - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= chargeChance) { + if (attacker.getRandom().nextInt(100) <= Config.uniqueEffects.arcaneAssault.chance) { target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 60, 1), attacker); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_BOW_SHOOT_IMPACT_01.get(), attacker.getSoundCategory(), 0.5f, 1.2f); @@ -71,14 +67,15 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user instanceof PlayerEntity) { - AbilityMethods.tickAbilityArcaneAssault(stack, world, user, remainingUseTicks, arcane_timer_max, abilityDamage, - skillCooldown, radius); + int radius = Config.uniqueEffects.arcaneAssault.radius; + float abilityDamage = HelperMethods.spellScaledDamage("arcane", user, Config.uniqueEffects.arcaneAssault.spellScaling, Config.uniqueEffects.arcaneAssault.damage); + AbilityMethods.tickAbilityArcaneAssault(stack, world, user, remainingUseTicks, abilityDamage, radius); } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - return arcane_timer_max; + return Config.uniqueEffects.arcaneAssault.duration; } @Override @@ -89,42 +86,52 @@ public UseAction getUseAction(ItemStack stack) { @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient && (user instanceof PlayerEntity player)) { - player.getItemCooldownManager().set(stack.getItem(), skillCooldown); + player.getItemCooldownManager().set(stack.getItem(), Config.uniqueEffects.arcaneAssault.cooldown); } } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "arcane") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "arcane"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.DRAGON_BREATH, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.DRAGON_BREATH, ParticleTypes.DRAGON_BREATH, ParticleTypes.REVERSE_PORTAL, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.arcanethystsworditem.tooltip6").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleArcane")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.ARCANETHYST::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 25; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 220; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 1f; + @ValidatedInt.Restrict(min = 0) + public int duration = 120; + @ValidatedInt.Restrict(min = 1) + public int radius = 6; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.4f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index 86c5e7ab..6deb010e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -8,11 +8,9 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; @@ -28,8 +26,6 @@ public BrambleSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -47,9 +43,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SPORE_BLOSSOM_AIR, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java index 56f3331b..d33ec559 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrimstoneClaymoreItem.java @@ -10,11 +10,9 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; @@ -78,8 +76,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, ParticleTypes.SMOKE, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java index 25d1b455..e5177610 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/CaelestisSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -9,17 +11,19 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -28,8 +32,6 @@ public CaelestisSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -42,8 +44,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("astralShiftCooldown", "UniqueEffects", ConfigDefaultValues.astralShiftCooldown); - int duration = (int) Config.getFloat("astralShiftDuration", "UniqueEffects", ConfigDefaultValues.astralShiftDuration); + int skillCooldown = Config.uniqueEffects.astralShift.cooldown; + int duration = Config.uniqueEffects.astralShift.duration; world.playSound(null, user.getBlockPos(), SoundRegistry.ACTIVATE_PLINTH_03.get(), @@ -62,37 +64,49 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENCHANT, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip7", - (int) Config.getFloat("astralShiftDuration", "UniqueEffects", ConfigDefaultValues.astralShiftDuration) / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip7", Config.uniqueEffects.astralShift.duration / 20).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip11").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip12").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip11").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.caelestissworditem.tooltip12").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.CAELESTIS::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 5; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 420; + @ValidatedFloat.Restrict(min = 0) + public float damageMax = 300f; + @ValidatedFloat.Restrict(min = 0f) + public float damageModifier = 1.0f; + @ValidatedInt.Restrict(min = 0) + public int duration = 100; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index e6886c2c..9d78b526 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -21,7 +21,6 @@ import java.util.List; public class DormantRelicSwordItem extends UniqueSwordItem { - private static int stepMod = 0; public DormantRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); @@ -40,9 +39,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index 745770cd..0031d98d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -1,6 +1,8 @@ package net.sweenus.simplyswords.item.custom; import elocindev.necronomicon.api.text.TextAPI; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -10,22 +12,27 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.registry.Registries; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.text.MutableText; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Box; import net.minecraft.world.World; +import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.ArrayList; import java.util.Comparator; @@ -36,8 +43,6 @@ public DreadtideSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -50,8 +55,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient() && world instanceof ServerWorld serverWorld) { - int voidcallerDuration = (int) Config.getFloat("voidcallerDuration", "UniqueEffects", ConfigDefaultValues.voidcallerDuration); - float voidcallerDamageModifier = Config.getFloat("voidcallerDamageModifier", "UniqueEffects", ConfigDefaultValues.voidcallerDamageModifier); + int voidcallerDuration = Config.uniqueEffects.voidcaller.get().duration; + float voidcallerDamageModifier = Config.uniqueEffects.voidcaller.get().damageModifier; int skillCooldown = 20; Box box = HelperMethods.createBox(user, 10); @@ -104,9 +109,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -120,32 +123,52 @@ public Text getName(ItemStack stack) { @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style CORRUPTED_LIGHT = HelperMethods.getStyle("corrupted_light"); - Style CORRUPTED_ABILITY = HelperMethods.getStyle("corrupted_ability"); - Style TEXT = HelperMethods.getStyle("corrupted_text"); MutableText ability_icon = Text.empty().append("\uA996 "); MutableText types = TextAPI.Styles.getGradient(Text.translatable("item.eldritch_end.corrupted_item.type"), 1, 6043781, 9326287, 1.0F); tooltip.add(Text.literal("\uA999 ").append(types.fillStyle(types.getStyle().withUnderline(true)))); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip1").setStyle(CORRUPTED_ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip1").setStyle(Styles.CORRUPTED_ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip5").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip7").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(ability_icon.append(Text.translatable("item.simplyswords.onrightclick").setStyle(CORRUPTED_LIGHT))); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip11").setStyle(TEXT)); + tooltip.add(ability_icon.append(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.CORRUPTED_LIGHT))); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip11").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.literal("\uA999 ").append(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip12").setStyle(HelperMethods.getStyle("corrupted")))); - tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip13").setStyle(HelperMethods.getStyle("corrupted"))); + tooltip.add(Text.literal("\uA999 ").append(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip12").setStyle(Styles.CORRUPTED))); + tooltip.add(Text.translatable("item.simplyswords.dreadtidesworditem.tooltip13").setStyle(Styles.CORRUPTED)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(() -> Registries.ITEM.get(Identifier.of(SimplySwords.MOD_ID, "dreadtide")))); + } + + @ValidatedFloat.Restrict(min = 0) + public float damageModifier = 1.0f; + @ValidatedInt.Restrict(min = 0) + public int duration = 250; + @ValidatedInt.Restrict(min = 1) + public int corruptionFrequency = 60; + @ValidatedFloat.Restrict(min = 0) + public float corruptionPerTick = 1.0f; + @ValidatedInt.Restrict(min = 0) + public int corruptionDuration = 1200; + @ValidatedFloat.Restrict(min = 0) + public float corruptionMax = 100f; + @ValidatedInt.Restrict(min = 1) + public int startingTickFrequency = 12; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java index 16a3c43a..17d86b82 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberIreSwordItem.java @@ -16,14 +16,12 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.item.UniqueSwordItem; @@ -150,7 +148,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, particleWalk, particleSprint, particlePassive, true); + HelperMethods.createFootfalls(entity, stack, world, particleWalk, particleSprint, particlePassive, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index c9a09aa3..b0432979 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -10,17 +13,19 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -29,37 +34,27 @@ public EmberlashSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; public static float tooltipEffectDamage = 0.20f; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld world = (ServerWorld) attacker.getWorld(); - DamageSource damageSource = world.getDamageSources().generic(); - float abilityDamage = (float) HelperMethods.getEntityAttackDamage(attacker); - float spellScalingModifier = Config.getFloat("smoulderSpellScaling", "UniqueEffects", ConfigDefaultValues.smoulderSpellScaling); - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire") > HelperMethods.getEntityAttackDamage(attacker)) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, attacker, "fire"); - scalesWithSpellPower = true; - } - - if (attacker instanceof PlayerEntity player) - damageSource = attacker.getDamageSources().playerAttack(player); - int maximum_stacks = (int) Config.getFloat("smoulderMaxStacks", "UniqueEffects", ConfigDefaultValues.smoulderMaxStacks); HelperMethods.playHitSounds(attacker, target); if (target.hasStatusEffect(EffectRegistry.SMOULDERING)) { target.timeUntilRegen = 0; StatusEffectInstance smoulderingEffect = target.getStatusEffect(EffectRegistry.SMOULDERING); if (smoulderingEffect != null) { + DamageSource damageSource = attacker instanceof PlayerEntity player ? player.getDamageSources().playerAttack(player) : world.getDamageSources().generic(); + float abilityDamage = Math.max(HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.smoulder.spellScaling, attacker, "fire"), (float) HelperMethods.getEntityAttackDamage(attacker)); float damageMultiplier = 0.15f * smoulderingEffect.getAmplifier(); target.damage(damageSource, abilityDamage * damageMultiplier); } } - HelperMethods.incrementStatusEffect(target, EffectRegistry.SMOULDERING, 100, 1, maximum_stacks+1); + int maximum_stacks = Config.uniqueEffects.smoulder.maxStacks; + HelperMethods.incrementStatusEffect(target, EffectRegistry.SMOULDERING, 100, 1, maximum_stacks + 1); } return super.postHit(stack, target, attacker); @@ -67,7 +62,6 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("smoulderCooldown", "UniqueEffects", ConfigDefaultValues.smoulderCooldown); user.swingHand(hand); world.playSound(null, user.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), user.getSoundCategory(), 0.5f, 1.0f); @@ -75,43 +69,54 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.setVelocity(user.getRotationVector().negate().multiply(+1.5)); user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent user flying to the heavens user.velocityModified = true; - user.heal(user.getMaxHealth() * 0.15f); - user.getItemCooldownManager().set(this, skillCooldown); + user.heal(user.getMaxHealth() * Config.uniqueEffects.smoulder.heal / 100f); + user.getItemCooldownManager().set(this, Config.uniqueEffects.smoulder.cooldown); return super.use(world, user, hand); } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_LAVA, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FALLING_LAVA, ParticleTypes.SMOKE, ParticleTypes.SMOKE, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", tooltipEffectDamage).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip5", tooltipEffectDamage).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip7", Config.getFloat("smoulderHeal", "UniqueEffects",ConfigDefaultValues.smoulderHeal)).setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.emberlashsworditem.tooltip7", Config.uniqueEffects.smoulder.heal).setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.EMBERLASH::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 80; + @ValidatedFloat.Restrict(min = 0f, max = 100f) + public float heal = 15f; + @ValidatedInt.Restrict(min = 1) + public int maxStacks = 5; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 0.4f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index 936215cc..e0dbb314 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -1,6 +1,8 @@ package net.sweenus.simplyswords.item.custom; import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -15,14 +17,14 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; @@ -30,6 +32,7 @@ import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -38,8 +41,6 @@ public EnigmaSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -66,14 +67,14 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (banner != null) { banner.setVelocity(0, -1, 0); banner.ownerEntity = user; - banner.decayRate = (int) Config.getFloat("enigmaDecayRate", "UniqueEffects", ConfigDefaultValues.enigmaDecayRate); + banner.decayRate = Config.uniqueEffects.enigma.enigmaDecayRate; banner.standardType = "enigma"; banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); banner.setCustomNameVisible(false); banner.setInvisible(true); banner.addStatusEffect( new StatusEffectInstance(EffectRegistry.ELEMENTAL_VORTEX, 900, 11, false, false, false)); } - user.getItemCooldownManager().set(this.getDefaultStack().getItem(), (int) Config.getFloat("enigmaCooldown", "UniqueEffects", ConfigDefaultValues.enigmaCooldown)); + user.getItemCooldownManager().set(this, Config.uniqueEffects.enigma.enigmaCooldown); } } return super.use(world, user, hand); @@ -81,8 +82,6 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; //Drag weapon particles if (entity.isOnGround() && Platform.isModLoaded("bettercombat") && HelperMethods.isWalking(entity) @@ -124,22 +123,34 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip8").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.enigmasworditem.tooltip8").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.ENIGMA::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int enigmaCooldown = 800; + @ValidatedDouble.Restrict(min = 1.0) + public double enigmaChaseRadius = 16.0; + @ValidatedInt.Restrict(min = 1) + public int enigmaDecayRate = 2; + + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index cea8bd66..63c303e5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -10,7 +13,6 @@ import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -18,11 +20,15 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.Comparator; import java.util.List; @@ -32,9 +38,6 @@ public FlamewindSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -50,8 +53,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient() && world instanceof ServerWorld serverWorld) { int flameSeedDuration = 101; - int flameSeedSpreadCap = (int) Config.getFloat("emberstormSpreadCap", "UniqueEffects", ConfigDefaultValues.emberstormSpreadCap); - int skillCooldown = (int) Config.getFloat("emberstormCooldown", "UniqueEffects", ConfigDefaultValues.emberstormCooldown); + int flameSeedSpreadCap = Config.uniqueEffects.emberstorm.spreadCap; + int skillCooldown = Config.uniqueEffects.emberstorm.cooldown; Box box = HelperMethods.createBox(user, 10); Entity closestEntity = world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY).stream() @@ -84,12 +87,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(0.5f, entity, "fire") > 0) { - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FLAME, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FLAME, ParticleTypes.FLAME, ParticleTypes.ASH, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -97,31 +95,47 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip6").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip11", - (int) Config.getFloat("emberstormSpreadCap", "UniqueEffects", ConfigDefaultValues.emberstormSpreadCap)).setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip11", (int) Config.getFloat("emberstormSpreadCap", "UniqueEffects", ConfigDefaultValues.emberstormSpreadCap)).setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.FLAMEWIND::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 980; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 5f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 0.4f; + @ValidatedFloat.Restrict(min = 0f) + public float detonationDamage = 15f; + @ValidatedInt.Restrict(min = 0) + public int maxHaste = 10; + @ValidatedInt.Restrict(min = 1) + public int spreadCap = 6; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index d0ae672f..0cdf0b69 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -6,6 +6,7 @@ import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -17,7 +18,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -25,10 +25,12 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.ChargedLocationComponent; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -42,122 +44,111 @@ public FrostfallSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - public static boolean scalesWithSpellPower; - - private final int abilityCooldown = (int) Config.getFloat("frostFuryCooldown", "UniqueEffects", ConfigDefaultValues.frostFuryCooldown); - int radius = (int) Config.getFloat("frostFuryRadius", "UniqueEffects", ConfigDefaultValues.frostFuryRadius); - float abilityDamage = Config.getFloat("frostFuryDamage", "UniqueEffects", ConfigDefaultValues.frostFuryDamage); - int proc_chance = (int) Config.getFloat("frostFuryChance", "UniqueEffects", ConfigDefaultValues.frostFuryChance); - int shatter_timer_max = (int) Config.getFloat("frostFuryDuration", "UniqueEffects", ConfigDefaultValues.frostFuryDuration); - float spellScalingModifier = Config.getFloat("frostFurySpellScaling", "UniqueEffects", ConfigDefaultValues.frostFurySpellScaling); - int shatter_timer; - int player_shatter_timer; - double lastX; - double lastY; - double lastZ; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.getWorld().isClient()) { - ServerWorld world = (ServerWorld) attacker.getWorld(); - HelperMethods.playHitSounds(attacker, target); - //AOE freeze - if (attacker.getRandom().nextInt(100) <= proc_chance) { - Box box = new Box(target.getX() + radius, target.getY() + radius, target.getZ() + radius, - target.getX() - radius, target.getY() - radius, target.getZ() - radius); - for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); - le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); - world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), - le.getSoundCategory(), 0.1f, 3f); - BlockPos pos = BlockPos.ofFloored(le.getX(), le.getY(), le.getZ()); - BlockPos pos2 = BlockPos.ofFloored(le.getX(), le.getY() + 1, le.getZ()); - BlockState state = Blocks.ICE.getDefaultState(); - if (world.getBlockState(pos) == Blocks.AIR.getDefaultState()) - world.setBlockState(pos, state); - if (world.getBlockState(pos2) == Blocks.AIR.getDefaultState()) - world.setBlockState(pos2, state); - } + if (attacker.getWorld().isClient()) super.postHit(stack, target, attacker); + + ServerWorld world = (ServerWorld) attacker.getWorld(); + HelperMethods.playHitSounds(attacker, target); + //AOE freeze + int proc_chance = Config.uniqueEffects.frostFury.chance; + double radius = Config.uniqueEffects.frostFury.radius; + int shatter_timer_max = Config.uniqueEffects.frostFury.duration; + if (attacker.getRandom().nextInt(100) <= proc_chance) { + Box box = new Box(target.getX() + radius, target.getY() + radius, target.getZ() + radius, + target.getX() - radius, target.getY() - radius, target.getZ() - radius); + for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); + world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), + le.getSoundCategory(), 0.1f, 3f); + BlockPos pos = BlockPos.ofFloored(le.getX(), le.getY(), le.getZ()); + BlockPos pos2 = BlockPos.ofFloored(le.getX(), le.getY() + 1, le.getZ()); + BlockState state = Blocks.ICE.getDefaultState(); + if (world.getBlockState(pos) == Blocks.AIR.getDefaultState()) + world.setBlockState(pos, state); + if (world.getBlockState(pos2) == Blocks.AIR.getDefaultState()) + world.setBlockState(pos2, state); } - shatter_timer = shatter_timer_max; } + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), new StoredChargeComponent(shatter_timer_max)); } return super.postHit(stack, target, attacker); } @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - if (!user.getWorld().isClient()) { - lastX = user.getX(); - lastY = user.getY(); - lastZ = user.getZ(); + if (user.getWorld().isClient()) return super.use(world, user, hand); - world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), - user.getSoundCategory(), 0.6f, 2f); + double lastX = user.getX(); + double lastY = user.getY(); + double lastZ = user.getZ(); - double xpos = user.getX() - 2; - double ypos = user.getY(); - double zpos = user.getZ() - 2; - user.setVelocity(0, 0, 0); // Stop player in place - user.velocityModified = true; - user.teleport(lastX, lastY, lastZ, false); // Ensure they don't end up stuck inside a block + world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), + user.getSoundCategory(), 0.6f, 2f); - for (int i = 3; i > 0; i--) { - for (int j = 3; j > 0; j--) { - BlockPos poscheck = BlockPos.ofFloored(xpos + i, ypos, zpos + j); - BlockPos poscheck2 = BlockPos.ofFloored(xpos + i, ypos + 1, zpos + j); - BlockPos poscheck3 = BlockPos.ofFloored(xpos + i, ypos + 2, zpos + j); - BlockPos poscheck4 = BlockPos.ofFloored(xpos + i, ypos - 1, zpos + j); + double xPos = user.getX() - 2; + double yPos = user.getY(); + double zPos = user.getZ() - 2; + user.setVelocity(0, 0, 0); // Stop player in place + user.velocityModified = true; + user.teleport(lastX, lastY, lastZ, false); // Ensure they don't end up stuck inside a block - BlockState currentState = world.getBlockState(poscheck); - BlockState currentState2 = world.getBlockState(poscheck2); - BlockState currentState3 = world.getBlockState(poscheck3); - BlockState currentState4 = world.getBlockState(poscheck4); - BlockState state = Blocks.ICE.getDefaultState(); - if (i + j != 4) { - if (currentState == Blocks.AIR.getDefaultState() || currentState == Blocks.SNOW.getDefaultState() || currentState == Blocks.GRASS_BLOCK.getDefaultState() - || currentState == Blocks.LARGE_FERN.getDefaultState() || currentState == Blocks.FERN.getDefaultState()) - world.setBlockState(poscheck, state); - if (currentState2 == Blocks.AIR.getDefaultState() || currentState2 == Blocks.SNOW.getDefaultState() || currentState2 == Blocks.GRASS_BLOCK.getDefaultState() - || currentState2 == Blocks.LARGE_FERN.getDefaultState() || currentState2 == Blocks.FERN.getDefaultState()) - world.setBlockState(poscheck2, state); - } - if (currentState3 == Blocks.AIR.getDefaultState() || currentState3 == Blocks.SNOW.getDefaultState() || currentState3 == Blocks.GRASS_BLOCK.getDefaultState() - || currentState3 == Blocks.LARGE_FERN.getDefaultState() || currentState3 == Blocks.FERN.getDefaultState()) - world.setBlockState(poscheck3, state); - if (currentState4 == Blocks.AIR.getDefaultState() || currentState4 == Blocks.SNOW.getDefaultState() || currentState4 == Blocks.GRASS_BLOCK.getDefaultState() - || currentState4 == Blocks.LARGE_FERN.getDefaultState() || currentState4 == Blocks.FERN.getDefaultState()) - world.setBlockState(poscheck4, state); + for (int i = 3; i > 0; i--) { + for (int j = 3; j > 0; j--) { + BlockPos poscheck = BlockPos.ofFloored(xPos + i, yPos, zPos + j); + BlockPos poscheck2 = BlockPos.ofFloored(xPos + i, yPos + 1, zPos + j); + BlockPos poscheck3 = BlockPos.ofFloored(xPos + i, yPos + 2, zPos + j); + BlockPos poscheck4 = BlockPos.ofFloored(xPos + i, yPos - 1, zPos + j); + + BlockState currentState = world.getBlockState(poscheck); + BlockState currentState2 = world.getBlockState(poscheck2); + BlockState currentState3 = world.getBlockState(poscheck3); + BlockState currentState4 = world.getBlockState(poscheck4); + BlockState state = Blocks.ICE.getDefaultState(); + if (i + j != 4) { + if (currentState == Blocks.AIR.getDefaultState() || currentState == Blocks.SNOW.getDefaultState() || currentState == Blocks.GRASS_BLOCK.getDefaultState() + || currentState == Blocks.LARGE_FERN.getDefaultState() || currentState == Blocks.FERN.getDefaultState()) + world.setBlockState(poscheck, state); + if (currentState2 == Blocks.AIR.getDefaultState() || currentState2 == Blocks.SNOW.getDefaultState() || currentState2 == Blocks.GRASS_BLOCK.getDefaultState() + || currentState2 == Blocks.LARGE_FERN.getDefaultState() || currentState2 == Blocks.FERN.getDefaultState()) + world.setBlockState(poscheck2, state); } + if (currentState3 == Blocks.AIR.getDefaultState() || currentState3 == Blocks.SNOW.getDefaultState() || currentState3 == Blocks.GRASS_BLOCK.getDefaultState() + || currentState3 == Blocks.LARGE_FERN.getDefaultState() || currentState3 == Blocks.FERN.getDefaultState()) + world.setBlockState(poscheck3, state); + if (currentState4 == Blocks.AIR.getDefaultState() || currentState4 == Blocks.SNOW.getDefaultState() || currentState4 == Blocks.GRASS_BLOCK.getDefaultState() + || currentState4 == Blocks.LARGE_FERN.getDefaultState() || currentState4 == Blocks.FERN.getDefaultState()) + world.setBlockState(poscheck4, state); } - user.teleport(lastX, lastY, lastZ, false); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, shatter_timer_max, 4), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, shatter_timer_max, 4), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max, 4), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, shatter_timer_max, 2), user); - player_shatter_timer = shatter_timer_max; - user.getItemCooldownManager().set(this, Config.uniqueEffects.frostFury.cooldown); } + user.teleport(lastX, lastY, lastZ, false); + int shatter_timer_max = Config.uniqueEffects.frostFury.duration; + user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, shatter_timer_max, 4), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, shatter_timer_max, 4), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max, 4), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, shatter_timer_max, 2), user); + ItemStack stack = user.getStackInHand(hand); + stack.set(ComponentTypeRegistry.CHARGED_LOCATION.get(), new ChargedLocationComponent(shatter_timer_max, lastX, lastY, lastZ)); + user.getItemCooldownManager().set(this, Config.uniqueEffects.frostFury.cooldown); return super.use(world, user, hand); } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { if (!world.isClient && (entity instanceof PlayerEntity player)) { - if (shatter_timer > 0) { - shatter_timer--; - } - if (player_shatter_timer > 0) { - player_shatter_timer--; - } - if (shatter_timer == 1) { + StoredChargeComponent shatterComponent = stack.apply(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT, StoredChargeComponent::decrement); + ChargedLocationComponent chargedLocationComponent = stack.apply(ComponentTypeRegistry.CHARGED_LOCATION.get(), ChargedLocationComponent.DEFAULT, ChargedLocationComponent::decrement); + if (shatterComponent != null && shatterComponent.charge() == 1) { + double radius = Config.uniqueEffects.frostFury.radius; Box box = new Box(player.getX() + radius + 10, player.getY() + radius + 10, player.getZ() + radius + 10, player.getX() - radius - 10, player.getY() - radius - 10, player.getZ() - radius - 10); for (Entity otherEntity : world.getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { //Ice shatter if (otherEntity instanceof LivingEntity le) { if (le.hasStatusEffect(EffectRegistry.FREEZE)) { + float abilityDamage = HelperMethods.spellScaledDamage("frost", player, Config.uniqueEffects.frostFury.spellScaling, Config.uniqueEffects.frostFury.damage); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); le.damage(player.getDamageSources().indirectMagic(entity, entity), abilityDamage); @@ -191,20 +182,21 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } } + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), null); } - if (player_shatter_timer == 1) { + if (chargedLocationComponent != null && chargedLocationComponent.charge() == 1) { world.playSoundFromEntity(null, player, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), player.getSoundCategory(), 0.6f, 3f); - double xpos = lastX - 2; - double ypos = lastY; - double zpos = lastZ - 2; + double xPos = chargedLocationComponent.lastX() - 2; + double yPos = chargedLocationComponent.lastY(); + double zPos = chargedLocationComponent.lastZ() - 2; for (int i = 3; i > 0; i--) { for (int j = 3; j > 0; j--) { - BlockPos poscheck = BlockPos.ofFloored(xpos + i, ypos, zpos + j); - BlockPos poscheck2 = BlockPos.ofFloored(xpos + i, ypos + 1, zpos + j); - BlockPos poscheck3 = BlockPos.ofFloored(xpos + i, ypos + 2, zpos + j); - BlockPos poscheck4 = BlockPos.ofFloored(xpos + i, ypos - 1, zpos + j); + BlockPos poscheck = BlockPos.ofFloored(xPos + i, yPos, zPos + j); + BlockPos poscheck2 = BlockPos.ofFloored(xPos + i, yPos + 1, zPos + j); + BlockPos poscheck3 = BlockPos.ofFloored(xPos + i, yPos + 2, zPos + j); + BlockPos poscheck4 = BlockPos.ofFloored(xPos + i, yPos - 1, zPos + j); BlockState currentState = world.getBlockState(poscheck); BlockState currentState2 = world.getBlockState(poscheck2); @@ -223,12 +215,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } } - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost"); - scalesWithSpellPower = true; - } - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -239,10 +226,11 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip1").setStyle(Styles.ABILITY)); tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip3").setStyle(Styles.TEXT)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip4", shatter_timer_max / 20, abilityDamage).setStyle(Styles.TEXT)); + float abilityDamage = HelperMethods.spellScaledDamage("frost", MinecraftClient.getInstance().player, Config.uniqueEffects.frostFury.spellScaling, Config.uniqueEffects.frostFury.damage); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip4", Config.uniqueEffects.frostFury.duration / 20, abilityDamage).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); - tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip5", shatter_timer_max / 20).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip5", Config.uniqueEffects.frostFury.duration / 20).setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.frostfallsworditem.tooltip6").setStyle(Styles.TEXT)); if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); @@ -260,13 +248,13 @@ public EffectSettings() { @ValidatedInt.Restrict(min = 0, max = 100) public int chance = 15; @ValidatedInt.Restrict(min = 0) - public float duration = 80; - @ValidatedInt.Restrict(min = 0) public int cooldown = 380; - @ValidatedDouble.Restrict(min = 1.0) - public double radius = 3.0; @ValidatedFloat.Restrict(min = 0f) public float damage = 18f; + @ValidatedInt.Restrict(min = 0) + public int duration = 80; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 3.0; @ValidatedFloat.Restrict(min = 0f) public float spellScaling = 1.4f; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index 1cb2d6fe..f9d86272 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -20,19 +23,20 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EntityRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; public class HarbingerSwordItem extends UniqueSwordItem { - private static int stepMod = 0; - public static boolean scalesWithSpellPower; + int skillCooldown = (int) Config.getFloat("abyssalStandardCooldown", "UniqueEffects", ConfigDefaultValues.abyssalStandardCooldown); - int abilityChance = (int) Config.getFloat("abyssalStandardChance", "UniqueEffects", ConfigDefaultValues.abyssalStandardChance); public HarbingerSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); @@ -41,7 +45,7 @@ public HarbingerSwordItem(ToolMaterial toolMaterial, Settings settings) { @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); - if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= abilityChance && attacker instanceof PlayerEntity) { + if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= Config.uniqueEffects.abyssalStandard.chance && attacker instanceof PlayerEntity) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.6f); target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 160, 0), attacker); @@ -69,7 +73,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han banner.standardType = "harbinger"; banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); } - user.getItemCooldownManager().set(this.getDefaultStack().getItem(), skillCooldown); + user.getItemCooldownManager().set(this.getDefaultStack().getItem(), Config.uniqueEffects.abyssalStandard.cooldown); } } return super.use(world, user, hand); @@ -77,12 +81,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(2, entity, "soul") > 0) { - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -102,10 +101,27 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip4").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip5").setStyle(TEXT)); tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.HARBINGER::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 700; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 3f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.2f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java index ee55c59c..14bd13b2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HearthflameSwordItem.java @@ -26,12 +26,12 @@ import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; -import net.sweenus.simplyswords.item.component.StoredChargeComponent; import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -147,8 +147,7 @@ else if (choose_sound <= 30) @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -183,12 +182,12 @@ public EffectSettings() { @ValidatedInt.Restrict(min = 0, max = 100) public int chance = 25; - @ValidatedInt.Restrict(min = 1) - public int radius = 3; @ValidatedInt.Restrict(min = 0) public int cooldown = 300; @ValidatedFloat.Restrict(min = 0f) public float damage = 3f; + @ValidatedInt.Restrict(min = 1) + public int radius = 3; @ValidatedFloat.Restrict(min = 0f) public float spellScaling = 1.4f; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java index 38356255..9c200390 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HiveheartSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; @@ -12,18 +14,20 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.entity.SimplySwordsBeeEntity; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EntityRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -32,14 +36,12 @@ public HiveheartSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) attacker.getWorld(); - int skillCooldown = (int) Config.getFloat("hivemindCooldown", "UniqueEffects", ConfigDefaultValues.hivemindCooldown); - float skillDamage = Config.getFloat("hivemindDamage", "UniqueEffects", ConfigDefaultValues.hivemindDamage); + int skillCooldown = Config.uniqueEffects.hivemind.cooldown; + float skillDamage = Config.uniqueEffects.hivemind.damage; HelperMethods.playHitSounds(attacker, target); if (attacker instanceof PlayerEntity player && !player.getItemCooldownManager().isCoolingDown(stack.getItem())) { @@ -68,8 +70,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int regenDuration = (int) Config.getFloat("hivemindDuration", "UniqueEffects", ConfigDefaultValues.hivemindDuration); - int skillCooldown = (int) Config.getFloat("hivemindCooldown", "UniqueEffects", ConfigDefaultValues.hivemindCooldown); + int regenDuration = Config.uniqueEffects.hivemind.duration; + int skillCooldown = Config.uniqueEffects.hivemind.cooldown; HelperMethods.incrementStatusEffect(user, StatusEffects.REGENERATION, regenDuration, 1, 3); ItemStack stack = user.getMainHandStack(); world.playSound(null, user.getBlockPos(), SoundRegistry.SPELL_MISC_02.get(), @@ -81,33 +83,42 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_HONEY, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FALLING_HONEY, ParticleTypes.LANDING_HONEY, ParticleTypes.LANDING_HONEY, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip6", Config.getFloat("hivemindCooldown", "UniqueEffects", ConfigDefaultValues.hivemindCooldown) / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip6", Config.uniqueEffects.hivemind.cooldown / 20).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip10").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.hiveheartsworditem.tooltip10").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.HIVEHEART::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 60; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 1.1f; + @ValidatedInt.Restrict(min = 0) + public int duration = 450; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java index 293d2cc2..cbca0679 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/IcewhisperSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -11,7 +14,6 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -19,12 +21,17 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.ChargedLocationComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -33,17 +40,6 @@ public IcewhisperSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int radius = (int) Config.getFloat("permafrostRadius", "UniqueEffects", ConfigDefaultValues.permafrostRadius); - float abilityDamage = Config.getFloat("permafrostDamage", "UniqueEffects", ConfigDefaultValues.permafrostDamage); - int blizzard_timer_max = (int) Config.getFloat("permafrostDuration", "UniqueEffects", ConfigDefaultValues.permafrostDuration); - int skillCooldown = (int) Config.getFloat("permafrostCooldown", "UniqueEffects", ConfigDefaultValues.permafrostCooldown); - float spellScalingModifier = Config.getFloat("permafrostSpellScaling", "UniqueEffects", ConfigDefaultValues.permafrostSpellScaling); - double lastX; - double lastY; - double lastZ; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); @@ -56,10 +52,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (itemStack.getDamage() >= itemStack.getMaxDamage() - 1) { return TypedActionResult.fail(itemStack); } - - lastX = user.getX(); - lastY = user.getY(); - lastZ = user.getZ(); + itemStack.set(ComponentTypeRegistry.CHARGED_LOCATION.get(), new ChargedLocationComponent(user.getX(), user.getY(), user.getZ())); user.setCurrentHand(hand); return TypedActionResult.consume(itemStack); @@ -68,14 +61,19 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user instanceof PlayerEntity) { - AbilityMethods.tickAbilityPermafrost(stack, world, user, remainingUseTicks, blizzard_timer_max, abilityDamage, - skillCooldown, radius, lastX, lastY, lastZ); + + ChargedLocationComponent location = stack.getOrDefault(ComponentTypeRegistry.CHARGED_LOCATION.get(), ChargedLocationComponent.DEFAULT); + int radius = Config.uniqueEffects.permafrost.radius; + float abilityDamage = HelperMethods.spellScaledDamage("frost", user, Config.uniqueEffects.permafrost.spellScaling, Config.uniqueEffects.permafrost.damage); + + AbilityMethods.tickAbilityPermafrost(stack, world, user, remainingUseTicks, abilityDamage, + radius, location.lastX(), location.lastY(), location.lastZ()); } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - return blizzard_timer_max; + return Config.uniqueEffects.permafrost.duration; } @Override @@ -86,19 +84,15 @@ public UseAction getUseAction(ItemStack stack) { @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient && (user instanceof PlayerEntity player)) { + int skillCooldown = Config.uniqueEffects.permafrost.cooldown; player.getItemCooldownManager().set(stack.getItem(), skillCooldown); } } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost"); - scalesWithSpellPower = true; - } - if (!world.isClient && (entity instanceof PlayerEntity player)) { - + int radius = Config.uniqueEffects.permafrost.radius; //AOE Aura if (player.age % 35 == 0 && player.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { Box box = new Box(player.getX() + radius, player.getY() + radius, player.getZ() + radius, @@ -107,18 +101,13 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, if ((otherEntity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, player)) { if (le.hasStatusEffect(StatusEffects.SLOWNESS)) { int a = (le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() + 1); - - if (a < 4) { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a), player); - } else { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a - 1), player); - } + le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, Math.max(a, 3)), player); } else { le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 0), player); } float choose = (float) (Math.random() * 1); - world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), - le.getSoundCategory(), 0.1f, choose); + world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), le.getSoundCategory(), 0.1f, choose); + float abilityDamage = HelperMethods.spellScaledDamage("frost", entity, Config.uniqueEffects.permafrost.spellScaling, Config.uniqueEffects.permafrost.damage); le.damage(player.getDamageSources().indirectMagic(entity, entity), abilityDamage); } } @@ -144,32 +133,45 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - + double radius = Config.uniqueEffects.permafrost.radius; tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip3", radius).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip3", radius).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip6", radius * 2).setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.icewhispersworditem.tooltip6", radius * 2).setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.ICEWHISPER::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 600; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 1f; + @ValidatedInt.Restrict(min = 0) + public int duration = 200; + @ValidatedInt.Restrict(min = 1) + public int radius = 4; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 0.9f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java index a54beb3a..467c9e71 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LichbladeSwordItem.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -11,7 +15,7 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.text.Style; +import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -19,13 +23,18 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.item.component.TargetedLocationComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -34,25 +43,6 @@ public LichbladeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - float overallAbsorptionCap = Config.getFloat("abilityAbsorptionCap", "UniqueEffects", ConfigDefaultValues.abilityAbsorptionCap); - int radius = (int) Config.getFloat("soulAnguishRadius", "UniqueEffects", ConfigDefaultValues.soulAnguishRadius); - float absorptionCap = Config.getFloat("soulAnguishAbsorptionCap", "UniqueEffects", ConfigDefaultValues.soulAnguishAbsorptionCap); - float abilityDamage = Config.getFloat("soulAnguishDamage", "UniqueEffects", ConfigDefaultValues.soulAnguishDamage); - int maxDuration = (int) Config.getFloat("soulAnguishDuration", "UniqueEffects", ConfigDefaultValues.soulAnguishDuration); - int skillCooldown = (int) Config.getFloat("soulAnguishCooldown", "UniqueEffects", ConfigDefaultValues.soulAnguishCooldown); - float healAmount = Config.getFloat("soulAnguishHeal", "UniqueEffects", ConfigDefaultValues.soulAnguishHeal); - int range = (int) Config.getFloat("soulAnguishRange", "UniqueEffects", ConfigDefaultValues.soulAnguishRange); - float spellScalingModifier = Config.getFloat("soulAnguishSpellScaling", "UniqueEffects", ConfigDefaultValues.soulAnguishSpellScaling); - public int damageTracker = 0; - double lastX; - double lastY; - double lastZ; - double targetX; - double targetY; - double targetZ; - LivingEntity abilityTarget; @Override @@ -70,14 +60,12 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (itemStack.isOf(ItemsRegistry.SLUMBERING_LICHBLADE.get())) { return TypedActionResult.pass(itemStack); } - abilityTarget = (LivingEntity) HelperMethods.getTargetedEntity(user, range); + LivingEntity abilityTarget = (LivingEntity) HelperMethods.getTargetedEntity(user, Config.uniqueEffects.soulAnguish.range); if (abilityTarget != null) { abilityTarget.addStatusEffect(new StatusEffectInstance(StatusEffects.GLOWING, 10, 0), user); world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), user.getSoundCategory(), 0.5f, 0.5f); - lastX = user.getX(); - lastY = user.getY(); - lastZ = user.getZ(); + itemStack.set(ComponentTypeRegistry.TARGETED_LOCATION.get(), new TargetedLocationComponent(abilityTarget.getUuid(), user.getX(), user.getY(), user.getZ())); } user.setCurrentHand(hand); return TypedActionResult.consume(itemStack); @@ -85,13 +73,21 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { - if (!world.isClient() && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && abilityTarget != null) { + if (world.isClient) return; + TargetedLocationComponent targetLocation = stack.getOrDefault(ComponentTypeRegistry.TARGETED_LOCATION.get(), TargetedLocationComponent.DEFAULT); + LivingEntity abilityTarget = targetLocation.getEntity((ServerWorld) world); + if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && abilityTarget != null) { //Return to user after the duration or after the enemy dies & buff user + int maxDuration = Config.uniqueEffects.soulAnguish.duration; + int radius = Config.uniqueEffects.soulAnguish.radius; + if (stack.isOf(ItemsRegistry.AWAKENED_LICHBLADE.get())) { if (abilityTarget.isDead() || abilityTarget == user || remainingUseTicks < maxDuration) { + stack.set(ComponentTypeRegistry.TARGETED_LOCATION.get(), targetLocation.setTarget(user)); abilityTarget = user; - if (user.squaredDistanceTo(lastX, lastY, lastZ) < radius) { - user.setAbsorptionAmount(Math.min(overallAbsorptionCap, user.getAbsorptionAmount() + Math.min(damageTracker / 2f, absorptionCap))); + if (user.squaredDistanceTo(targetLocation.lastX(), targetLocation.lastY(), targetLocation.lastZ()) < radius) { + int damageTracker = stack.getOrDefault(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT).charge(); + user.setAbsorptionAmount(Math.min(Config.uniqueEffects.abilityAbsorptionCap, user.getAbsorptionAmount() + Math.min(damageTracker / 2f, Config.uniqueEffects.soulAnguish.absorptionCap))); user.stopUsingItem(); world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_SPELL.get(), user.getSoundCategory(), 0.04f, 0.5f); @@ -100,11 +96,15 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai } else if (stack.isOf(ItemsRegistry.WAKING_LICHBLADE.get()) && (abilityTarget.isDead() || remainingUseTicks < maxDuration)) { user.stopUsingItem(); } + //Move aura to target + double lastX = targetLocation.lastX(); + double lastY = targetLocation.lastY(); + double lastZ = targetLocation.lastZ(); if (user.age % 5 == 0) { - targetX = abilityTarget.getX(); - targetY = abilityTarget.getY(); - targetZ = abilityTarget.getZ(); + double targetX = abilityTarget.getX(); + double targetY = abilityTarget.getY(); + double targetZ = abilityTarget.getZ(); if (targetX > lastX) lastX += 1; if (targetX < lastX) lastX -= 1; @@ -113,14 +113,16 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai if (targetY > lastY) lastY += 1; if (targetY < lastY) lastY -= 1; } - AbilityMethods.tickAbilitySoulAnguish(stack, world, user, abilityDamage, radius, lastX, lastY, lastZ, - healAmount, abilityTarget); + stack.set(ComponentTypeRegistry.TARGETED_LOCATION.get(), new TargetedLocationComponent(abilityTarget.getUuid(), lastX, lastY, lastZ)); + float abilityDamage = HelperMethods.spellScaledDamage("soul", user, Config.uniqueEffects.soulAnguish.spellScaling, Config.uniqueEffects.soulAnguish.damage); + float healAmount = Config.uniqueEffects.soulAnguish.heal; + AbilityMethods.tickAbilitySoulAnguish(stack, world, user, abilityDamage, radius, lastX, lastY, lastZ, healAmount, abilityTarget); } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - return maxDuration * 2; + return Config.uniqueEffects.soulAnguish.duration * 2; } @Override @@ -130,92 +132,114 @@ public UseAction getUseAction(ItemStack stack) { @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { - damageTracker = 0; - if (!world.isClient && (user instanceof PlayerEntity player) && abilityTarget != null) { - player.getItemCooldownManager().set(stack.getItem(), skillCooldown); + TargetedLocationComponent targetLocation = stack.get(ComponentTypeRegistry.TARGETED_LOCATION.get()); + if (!world.isClient && (user instanceof PlayerEntity player) && targetLocation != null && ((ServerWorld)world).getEntity(targetLocation.uuid()) != null) { + player.getItemCooldownManager().set(stack.getItem(), Config.uniqueEffects.soulAnguish.cooldown); } + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), null); + stack.set(ComponentTypeRegistry.TARGETED_LOCATION.get(), null); } @Override public void inventoryTick(ItemStack stack, World world, Entity user, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, user, "soul") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, user, "soul"); - scalesWithSpellPower = true; - } - if (!user.getWorld().isClient() && user instanceof LivingEntity livingUser) { + if (!user.getWorld().isClient() + && user instanceof LivingEntity livingUser + && livingUser.age % 35 == 0 + && livingUser.getEquippedStack(EquipmentSlot.MAINHAND) == stack + && !livingUser.isUsingItem()) { + + float abilityDamage = HelperMethods.spellScaledDamage("soul", user, Config.uniqueEffects.soulAnguish.spellScaling, Config.uniqueEffects.soulAnguish.damage); + int radius = Config.uniqueEffects.soulAnguish.radius; + //AOE Aura - if (livingUser.age % 35 == 0 && livingUser.getEquippedStack(EquipmentSlot.MAINHAND) == stack && !livingUser.isUsingItem()) { - Box box = new Box(livingUser.getX() + radius, livingUser.getY() + radius, livingUser.getZ() + radius, - livingUser.getX() - radius, livingUser.getY() - radius, livingUser.getZ() - radius); - for (Entity entity : world.getOtherEntities(livingUser, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire((LivingEntity) entity, livingUser)) { - le.damage(livingUser.getDamageSources().indirectMagic(user, user), abilityDamage); - } + Box box = new Box(livingUser.getX() + radius, livingUser.getY() + radius, livingUser.getZ() + radius, + livingUser.getX() - radius, livingUser.getY() - radius, livingUser.getZ() - radius); + for (Entity entity : world.getOtherEntities(livingUser, box, EntityPredicates.VALID_LIVING_ENTITY)) { + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire((LivingEntity) entity, livingUser)) { + le.damage(livingUser.getDamageSources().indirectMagic(user, user), abilityDamage); } - world.playSoundFromEntity(null, livingUser, SoundRegistry.DARK_SWORD_BLOCK.get(), - livingUser.getSoundCategory(), 0.1f, 0.2f); - double xpos = livingUser.getX() - (radius + 1); - double ypos = livingUser.getY(); - double zpos = livingUser.getZ() - (radius + 1); - - for (int i = radius * 2; i > 0; i--) { - for (int j = radius * 2; j > 0; j--) { - float choose = (float) (Math.random() * 1); - HelperMethods.spawnParticle(world, ParticleTypes.SCULK_SOUL, - xpos + i + choose, ypos, zpos + j + choose, - 0, 0.1, 0); - HelperMethods.spawnParticle(world, ParticleTypes.SOUL, - xpos + i + choose, ypos + 0.1, zpos + j + choose, - 0, 0, 0); - HelperMethods.spawnParticle(world, ParticleTypes.MYCELIUM, - xpos + i + choose, ypos + 2, zpos + j + choose, - 0, 0, 0); - } + } + world.playSoundFromEntity(null, livingUser, SoundRegistry.DARK_SWORD_BLOCK.get(), + livingUser.getSoundCategory(), 0.1f, 0.2f); + double xPos = livingUser.getX() - (radius + 1); + double yPos = livingUser.getY(); + double zPos = livingUser.getZ() - (radius + 1); + + for (int i = radius * 2; i > 0; i--) { + for (int j = radius * 2; j > 0; j--) { + float choose = (float) (Math.random() * 1); + HelperMethods.spawnParticle(world, ParticleTypes.SCULK_SOUL, + xPos + i + choose, yPos, zPos + j + choose, + 0, 0.1, 0); + HelperMethods.spawnParticle(world, ParticleTypes.SOUL, + xPos + i + choose, yPos + 0.1, zPos + j + choose, + 0, 0, 0); + HelperMethods.spawnParticle(world, ParticleTypes.MYCELIUM, + xPos + i + choose, yPos + 2, zPos + j + choose, + 0, 0, 0); } } + } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(user, stack, world, stepMod, ParticleTypes.SOUL, ParticleTypes.SOUL, - ParticleTypes.MYCELIUM, true); + HelperMethods.createFootfalls(user, stack, world, ParticleTypes.SOUL, ParticleTypes.SOUL, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, user, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); if (itemStack.isOf(ItemsRegistry.SLUMBERING_LICHBLADE.get())) - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1").setStyle(ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1").setStyle(Styles.ABILITY)); else if (itemStack.isOf(ItemsRegistry.WAKING_LICHBLADE.get())) - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1.2").setStyle(ABILITY)); - else tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1.3").setStyle(ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1.2").setStyle(Styles.ABILITY)); + else tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip1.3").setStyle(Styles.ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip3", radius).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add( Text.translatable("item.simplyswords.lichbladesworditem.tooltip3").setStyle(Styles.TEXT)); if (!itemStack.isOf(ItemsRegistry.SLUMBERING_LICHBLADE.get())) { tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip6").setStyle(Styles.TEXT)); if (itemStack.isOf(ItemsRegistry.AWAKENED_LICHBLADE.get())) { tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip9").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.lichbladesworditem.tooltip9").setStyle(Styles.TEXT)); } } - if (scalesWithSpellPower) { + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SLUMBERING_LICHBLADE::get, ItemsRegistry.WAKING_LICHBLADE::get, ItemsRegistry.AWAKENED_LICHBLADE::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int absorptionCap = 8; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 700; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 4f; + @ValidatedInt.Restrict(min = 0) + public int duration = 200; + @ValidatedFloat.Restrict(min = 0f) + public float heal = 0.5f; + @ValidatedInt.Restrict(min = 1) + public int radius = 3; + @ValidatedDouble.Restrict(min = 1.0) + public double range = 22.0; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.6f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index e5508d38..e4e1436b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -1,7 +1,12 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -13,7 +18,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -21,11 +25,16 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -34,68 +43,60 @@ public LivyatanSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int radius = (int) Config.getFloat("frostShatterRadius", "UniqueEffects", ConfigDefaultValues.frostShatterRadius); - float abilityDamage = Config.getFloat("frostShatterDamage", "UniqueEffects", ConfigDefaultValues.frostShatterDamage); - int proc_chance = (int) Config.getFloat("frostShatterChance", "UniqueEffects", ConfigDefaultValues.frostShatterChance); - int shatter_timer_max = (int) Config.getFloat("frostShatterDuration", "UniqueEffects", ConfigDefaultValues.frostShatterDuration); - float spellScalingModifier = Config.getFloat("frostShatterSpellScaling", "UniqueEffects", ConfigDefaultValues.frostShatterSpellScaling); - int shatter_timer; - int shatter_bonus; - int player_shatter_timer; - double lastX; - double lastY; - double lastZ; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.getWorld().isClient()) { - ServerWorld world = (ServerWorld) attacker.getWorld(); - HelperMethods.playHitSounds(attacker, target); - //AOE freeze - if (attacker.getRandom().nextInt(100) <= proc_chance) { - Box box = new Box(target.getX() + radius, target.getY() + radius, target.getZ() + radius, - target.getX() - radius, target.getY() - radius, target.getZ() - radius); - for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); - le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); - world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), - le.getSoundCategory(), 0.1f, 3f); - BlockPos pos = BlockPos.ofFloored(le.getX(), le.getY(), le.getZ()); - BlockPos pos2 = BlockPos.ofFloored(le.getX(), le.getY() + 1, le.getZ()); - BlockState state = Blocks.ICE.getDefaultState(); - if (world.getBlockState(pos) == Blocks.AIR.getDefaultState()) - world.setBlockState(pos, state); - if (world.getBlockState(pos2) == Blocks.AIR.getDefaultState()) - world.setBlockState(pos2, state); - } + if (attacker.getWorld().isClient()) return super.postHit(stack, target, attacker); + + ServerWorld world = (ServerWorld) attacker.getWorld(); + HelperMethods.playHitSounds(attacker, target); + //AOE freeze + + int proc_chance = Config.uniqueEffects.frostShatter.chance; + double radius = Config.uniqueEffects.frostShatter.radius; + int shatter_timer_max = Config.uniqueEffects.frostShatter.duration; + + if (attacker.getRandom().nextInt(100) <= proc_chance) { + Box box = new Box(target.getX() + radius, target.getY() + radius, target.getZ() + radius, + target.getX() - radius, target.getY() - radius, target.getZ() - radius); + for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); + world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), + le.getSoundCategory(), 0.1f, 3f); + BlockPos pos = BlockPos.ofFloored(le.getX(), le.getY(), le.getZ()); + BlockPos pos2 = BlockPos.ofFloored(le.getX(), le.getY() + 1, le.getZ()); + BlockState state = Blocks.ICE.getDefaultState(); + if (world.getBlockState(pos) == Blocks.AIR.getDefaultState()) + world.setBlockState(pos, state); + if (world.getBlockState(pos2) == Blocks.AIR.getDefaultState()) + world.setBlockState(pos2, state); } - shatter_timer = shatter_timer_max; } + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), new StoredChargeComponent(shatter_timer_max)); } return super.postHit(stack, target, attacker); } @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - if (!user.getWorld().isClient() && shatter_timer > 0) { - shatter_bonus = shatter_timer / 5; - shatter_timer = 2; + if (user.getWorld().isClient()) return super.use(world, user, hand); + ItemStack stack = user.getStackInHand(hand); + StoredChargeComponent shatterTimer = stack.getOrDefault(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT); + if (shatterTimer.charge() > 0) { + stack.set(ComponentTypeRegistry.STORED_BONUS.get(), new StoredChargeComponent(shatterTimer.charge() / 5)); + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), shatterTimer.set(2)); } return super.use(world, user, hand); } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "frost"); - scalesWithSpellPower = true; - } - if (!world.isClient && entity instanceof PlayerEntity && shatter_timer > 0) { - shatter_timer--; - if (shatter_timer == 1) { + float abilityDamage = HelperMethods.spellScaledDamage("frost", entity, Config.uniqueEffects.frostShatter.spellScaling, Config.uniqueEffects.frostShatter.damage); + if (!world.isClient && entity instanceof PlayerEntity) { + StoredChargeComponent shatterTimer = stack.apply(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT, StoredChargeComponent::decrement); + if (shatterTimer != null && shatterTimer.charge() == 1) { + double radius = Config.uniqueEffects.frostShatter.radius; Box box = new Box(entity.getX() + radius + 10, entity.getY() + radius + 10, entity.getZ() + radius + 10, entity.getX() - radius - 10, entity.getY() - radius - 10, entity.getZ() - radius - 10); for (Entity otherEntity : world.getOtherEntities(entity, box, EntityPredicates.VALID_LIVING_ENTITY)) { @@ -104,9 +105,9 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, if (le.hasStatusEffect(EffectRegistry.FREEZE)) { le.removeStatusEffect(EffectRegistry.FREEZE); le.removeStatusEffect(StatusEffects.RESISTANCE); - world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), - le.getSoundCategory(), 0.2f, 3f); - le.damage(entity.getDamageSources().indirectMagic(entity, entity), abilityDamage + shatter_bonus); + world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); + StoredChargeComponent shatterBonus = stack.getOrDefault(ComponentTypeRegistry.STORED_BONUS.get(), StoredChargeComponent.DEFAULT); + le.damage(entity.getDamageSources().indirectMagic(entity, entity), abilityDamage + shatterBonus.charge()); } double xpos = le.getX() - 2; double ypos = le.getY(); @@ -136,35 +137,48 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } } - shatter_bonus = 0; + stack.set(ComponentTypeRegistry.STORED_BONUS.get(), null); + stack.set(ComponentTypeRegistry.STORED_CHARGE.get(), null); } } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, - ParticleTypes.WHITE_ASH, true); + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SNOWFLAKE, ParticleTypes.SNOWFLAKE, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip4", shatter_timer_max / 20, abilityDamage).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip3").setStyle(Styles.TEXT)); + float abilityDamage = HelperMethods.spellScaledDamage("frost", MinecraftClient.getInstance().player, Config.uniqueEffects.frostShatter.spellScaling, Config.uniqueEffects.frostShatter.damage); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip4", Config.uniqueEffects.frostShatter.duration / 20, abilityDamage).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.livyatansworditem.tooltip6").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.LIVYATAN::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 18f; + @ValidatedInt.Restrict(min = 0) + public int duration = 80; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 3.0; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.7f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java index 491823e8..cec7b60d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagibladeSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -10,16 +12,18 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -28,7 +32,6 @@ public MagibladeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { @@ -77,10 +80,10 @@ public UseAction getUseAction(ItemStack stack) { @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!user.getWorld().isClient() && user instanceof PlayerEntity player) { - int skillCooldown = (int) Config.getFloat("magibladeCooldown", "UniqueEffects", ConfigDefaultValues.magibladeCooldown); - float damageModifier = Config.getFloat("magibladeDamageModifier", "UniqueEffects", ConfigDefaultValues.magibladeDamageModifier); + int skillCooldown = Config.uniqueEffects.magiblade.cooldown; + float damageModifier = Config.uniqueEffects.magiblade.damageModifier; float damage = (float) (HelperMethods.getEntityAttackDamage(user) * damageModifier); - float distance = Config.getFloat("magibladeSonicDistance", "UniqueEffects", ConfigDefaultValues.magibladeSonicDistance); + float distance = Config.uniqueEffects.magiblade.sonicDistance; DamageSource damageSource = player.getDamageSources().playerAttack(player); if (remainingUseTicks < 11) { @@ -98,32 +101,45 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENCHANT, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, ParticleTypes.ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip9").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magibladesworditem.tooltip9").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.MAGIBLADE::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 35; + @ValidatedFloat.Restrict(min = 0f) + public float damageModifier = 0.7f; + @ValidatedInt.Restrict(min = 0, max = 100) + public int repelChance = 55; + @ValidatedFloat.Restrict(min = 1f) + public float repelRadius = 4f; + @ValidatedFloat.Restrict(min = 1f) + public float sonicDistance = 16f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index c13576c6..e730e1fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -1,5 +1,9 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,17 +14,19 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; import java.util.Random; @@ -30,9 +36,6 @@ public MagiscytheSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -43,7 +46,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack world.playSound(null, attacker.getBlockPos(), SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_03.get(), attacker.getSoundCategory(), 0.1f, 1.9f); - float repairChance = Config.getFloat("magistormRepairChance", "UniqueEffects", ConfigDefaultValues.magistormRepairChance); + float repairChance = Config.uniqueEffects.magistorm.repairChance; Random random = new Random(); for (EquipmentSlot slot : EquipmentSlot.values()) { if (slot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR || slot == EquipmentSlot.MAINHAND || slot == EquipmentSlot.OFFHAND) { @@ -61,8 +64,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("magistormCooldown", "UniqueEffects", ConfigDefaultValues.magistormCooldown); - int baseEffectDuration = (int) Config.getFloat("magistormDuration", "UniqueEffects", ConfigDefaultValues.magistormDuration); + int skillCooldown = Config.uniqueEffects.magistorm.cooldown; + int baseEffectDuration = Config.uniqueEffects.magistorm.duration; world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_22.get(), user.getSoundCategory(), 0.2f, 1.1f); @@ -74,42 +77,54 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(0.5f, entity, "arcane") > 0) { - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENCHANT, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, ParticleTypes.ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip5").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip11").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip12").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip11").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magiscythesworditem.tooltip12").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleArcane")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.MAGISCYTHE::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 980; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 3f; + @ValidatedInt.Restrict(min = 0) + public int duration = 400; + @ValidatedDouble.Restrict(min = 1f) + public double radius = 4.0; + @ValidatedFloat.Restrict(min = 0f, max = 1f) + public float repairChance = 0.25f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 0.5f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index b810a601..076cf870 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -9,17 +12,19 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; import java.util.Random; @@ -29,17 +34,15 @@ public MagispearSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { HelperMethods.playHitSounds(attacker, target); ServerWorld world = (ServerWorld) attacker.getWorld(); - float hitChance = Config.getFloat("magislamMagicChance", "UniqueEffects", ConfigDefaultValues.magislamMagicChance); + float hitChance = Config.uniqueEffects.magislam.magicChance; int random = new Random().nextInt(100); if (random < hitChance) { - float damage = (float) (HelperMethods.getEntityAttackDamage(attacker) * Config.getFloat("magislamMagicModifier", "UniqueEffects", ConfigDefaultValues.magislamMagicModifier)); + float damage = Config.uniqueEffects.magislam.magicModifier; target.timeUntilRegen = 0; target.damage(attacker.getDamageSources().indirectMagic(attacker, attacker), damage); target.timeUntilRegen = 0; @@ -52,7 +55,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("magislamCooldown", "UniqueEffects", ConfigDefaultValues.magislamCooldown); + int skillCooldown = Config.uniqueEffects.magislam.cooldown; world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_27.get(), user.getSoundCategory(), 0.2f, 1.1f); @@ -65,32 +68,45 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENCHANT, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, ParticleTypes.ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip9").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.magispearsworditem.tooltip9").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.MAGISPEAR::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 140; + @ValidatedFloat.Restrict(min = 0f) + public float damageModifier = 2.0f; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 4.0; + @ValidatedInt.Restrict(min = 0, max = 100) + public int magicChance = 35; + @ValidatedFloat.Restrict(min = 0f) + public float magicModifier = 0.5f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 2209b54b..b5c27738 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,10 +13,8 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.particle.SimpleParticleType; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -21,10 +22,16 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.MoltenParticleComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -33,61 +40,60 @@ public MoltenEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - private static SimpleParticleType particleWalk = ParticleTypes.FALLING_LAVA; - private static SimpleParticleType particleSprint = ParticleTypes.FALLING_LAVA; - private static SimpleParticleType particlePassive = ParticleTypes.SMOKE; - - private final int abilityCooldown = (int) Config.getFloat("moltenRoarCooldown", "UniqueEffects", ConfigDefaultValues.moltenRoarCooldown); - int radius = (int) Config.getFloat("moltenRoarRadius", "UniqueEffects", ConfigDefaultValues.moltenRoarRadius); - int knockbackStrength = (int) Config.getFloat("moltenRoarKnockbackStrength", "UniqueEffects", ConfigDefaultValues.moltenRoarKnockbackStrength); - int proc_chance = (int) Config.getFloat("moltenRoarChance", "UniqueEffects", ConfigDefaultValues.moltenRoarChance); int roar_timer_max = (int) Config.getFloat("moltenRoarDuration", "UniqueEffects", ConfigDefaultValues.moltenRoarDuration); @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.getWorld().isClient()) { - ServerWorld world = (ServerWorld) attacker.getWorld(); - HelperMethods.playHitSounds(attacker, target); - if (attacker.getRandom().nextInt(100) <= proc_chance) { - world.playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03.get(), - attacker.getSoundCategory(), 0.6f, 2f); - if (attacker.getRandom().nextInt(100) <= 50) { - if (attacker.getHealth() > 2) - attacker.setOnFireFor(3); - if (attacker.getHealth() < 4) - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 60, 3), attacker); - } else if (attacker.getRandom().nextInt(100) > 50) { - target.setOnFireFor(3); - } + if (attacker.getWorld().isClient()) return super.postHit(stack, target, attacker); + + int proc_chance = Config.uniqueEffects.moltenRoar.chance; + + ServerWorld world = (ServerWorld) attacker.getWorld(); + HelperMethods.playHitSounds(attacker, target); + if (attacker.getRandom().nextInt(100) <= proc_chance) { + world.playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_BOW_FIRE_SHOOT_IMPACT_03.get(), + attacker.getSoundCategory(), 0.6f, 2f); + if (attacker.getRandom().nextInt(100) <= 50) { + if (attacker.getHealth() > 2) + attacker.setOnFireFor(3); + if (attacker.getHealth() < 4) + attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 60, 3), attacker); + } else if (attacker.getRandom().nextInt(100) > 50) { + target.setOnFireFor(3); } } + return super.postHit(stack, target, attacker); } @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - if (!user.getWorld().isClient()) { - int amp = 0; - Box box = new Box(user.getX() + radius, user.getY() + radius, user.getZ() + radius, - user.getX() - radius, user.getY() - radius, user.getZ() - radius); - for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - amp++; - le.setVelocity((le.getX() - user.getX()) / knockbackStrength, 0.6, (le.getZ() - user.getZ()) / knockbackStrength); - le.setOnFireFor(3); - } + if (user.getWorld().isClient()) return super.use(world, user, hand); + + double radius = Config.uniqueEffects.moltenRoar.radius; + double knockbackStrength = Config.uniqueEffects.moltenRoar.knockbackStrength; + int abilityCooldown = Config.uniqueEffects.moltenRoar.cooldown; + + int amp = 0; + Box box = new Box(user.getX() + radius, user.getY() + radius, user.getZ() + radius, + user.getX() - radius, user.getY() - radius, user.getZ() - radius); + for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { + amp++; + le.setVelocity((le.getX() - user.getX()) / knockbackStrength, 0.6, (le.getZ() - user.getZ()) / knockbackStrength); + le.setOnFireFor(3); } - world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), - user.getSoundCategory(), 0.7f, 1.5f); - int duration = roar_timer_max * amp / 2; - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, duration, 0), user); - user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 3), user); - user.getItemCooldownManager().set(this, abilityCooldown); - particlePassive = ParticleTypes.LARGE_SMOKE; - particleWalk = ParticleTypes.LAVA; - particleSprint = ParticleTypes.LAVA; } + world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), + user.getSoundCategory(), 0.7f, 1.5f); + int duration = roar_timer_max * amp / 2; + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, duration, 0), user); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 3), user); + user.getItemCooldownManager().set(this, abilityCooldown); + + ItemStack stack = user.getStackInHand(hand); + stack.set(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), new MoltenParticleComponent(ParticleTypes.LAVA, ParticleTypes.LAVA, ParticleTypes.LARGE_SMOKE)); + return super.use(world, user, hand); } @@ -98,52 +104,57 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, if (player.age % 40 == 0) { if (player.getHealth() < player.getMaxHealth() / 2 && player.getHealth() > player.getMaxHealth() / 3) { amp = 1; - particlePassive = ParticleTypes.LARGE_SMOKE; - particleWalk = ParticleTypes.FALLING_LAVA; - particleSprint = ParticleTypes.FALLING_LAVA; + stack.set(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), new MoltenParticleComponent(ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, ParticleTypes.LARGE_SMOKE)); } else if (player.getHealth() < player.getMaxHealth() / 3 && player.getHealth() > 2) { amp = 2; - particlePassive = ParticleTypes.LARGE_SMOKE; - particleWalk = ParticleTypes.FALLING_LAVA; - particleSprint = ParticleTypes.FALLING_LAVA; + stack.set(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), new MoltenParticleComponent(ParticleTypes.FALLING_LAVA, ParticleTypes.FALLING_LAVA, ParticleTypes.LARGE_SMOKE)); } else if (player.getHealth() <= 2) { amp = 3; - particlePassive = ParticleTypes.LARGE_SMOKE; - particleWalk = ParticleTypes.LAVA; - particleSprint = ParticleTypes.LAVA; + stack.set(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), new MoltenParticleComponent(ParticleTypes.LAVA, ParticleTypes.LAVA, ParticleTypes.LARGE_SMOKE)); } else { - particlePassive = ParticleTypes.SMOKE; - particleWalk = ParticleTypes.FALLING_LAVA; - particleSprint = ParticleTypes.FALLING_LAVA; + stack.set(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), MoltenParticleComponent.DEFAULT); } player.addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, 40, amp), player); player.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, 40, amp - 1), player); } } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, particleWalk, particleSprint, particlePassive, true); + MoltenParticleComponent component = stack.getOrDefault(ComponentTypeRegistry.MOLTEN_PARTICLE.get(), MoltenParticleComponent.DEFAULT); + HelperMethods.createFootfalls(entity, stack, world, component.walk(), component.sprint(), component.passive(), true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip7", roar_timer_max / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.moltenedgesworditem.tooltip7").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.MOLTEN_EDGE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 320; + @ValidatedInt.Restrict(min = 0) + public int duration = 100; + @ValidatedFloat.Restrict(min = 0f) + public double knockbackStrength = 5f; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 5.0; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java index 79e81724..2e07e88a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/PlagueSwordItem.java @@ -9,11 +9,9 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; @@ -112,8 +110,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SPORE_BLOSSOM_AIR, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.SPORE_BLOSSOM_AIR, ParticleTypes.FALLING_SPORE_BLOSSOM, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index 72f7a94a..fa02cab6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -1,6 +1,8 @@ package net.sweenus.simplyswords.item.custom; import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -12,19 +14,20 @@ import net.minecraft.particle.BlockStateParticleEffect; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -33,8 +36,6 @@ public RibboncleaverSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -47,8 +48,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("ribbonwrathCooldown", "UniqueEffects", ConfigDefaultValues.ribbonwrathCooldown); - int resilienceAmplifier = (int) Config.getFloat("ribbonwrathResilienceAmplifier", "UniqueEffects", ConfigDefaultValues.ribbonwrathResilienceAmplifier); + int skillCooldown = Config.uniqueEffects.ribbonwrath.cooldown; + int resilienceAmplifier = Config.uniqueEffects.ribbonwrath.resilienceAmplifier; world.playSound(null, user.getBlockPos(), SoundRegistry.ELEMENTAL_BOW_EARTH_SHOOT_IMPACT_03.get(), @@ -70,10 +71,6 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - //HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_OBSIDIAN_TEAR, - // ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); //Drag weapon particles if (entity.isOnGround() && Platform.isModLoaded("bettercombat") && HelperMethods.isWalking(entity) @@ -115,24 +112,35 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip10").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.ribboncleaversworditem.tooltip10").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.RIBBONCLEAVER::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 40; + @ValidatedDouble.Restrict(min = 0.0) + public double damageBonusPercent = 0.95; + @ValidatedInt.Restrict(min = 0) + public int resilienceAmplifier = 1; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index 53ad455c..7aee4289 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -23,7 +23,7 @@ import java.util.List; public class RighteousRelicSwordItem extends UniqueSwordItem { - private static int stepMod = 0; + int abilityChance = (int) Config.getFloat("righteousStandardChance", "UniqueEffects", ConfigDefaultValues.righteousStandardChance); public RighteousRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { @@ -48,9 +48,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java index 2da2f65d..ad38371a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ShadowstingSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -12,27 +14,23 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class ShadowstingSwordItem extends UniqueSwordItem { - private static int stepMod = 0; - int skillCooldown = (int) Config.getFloat("shadowmistCooldown", "UniqueEffects", ConfigDefaultValues.shadowmistCooldown); - int abilityChance = (int) Config.getFloat("shadowmistChance", "UniqueEffects", ConfigDefaultValues.shadowmistChance); - int damageArmorMultiplier = (int) (Config.getFloat("shadowmistDamageMulti", "UniqueEffects", ConfigDefaultValues.shadowmistDamageMulti) * 2); - int blindDuration = (int) Config.getFloat("shadowmistBlindDuration", "UniqueEffects", ConfigDefaultValues.shadowmistBlindDuration); - int radius = (int) Config.getFloat("shadowmistRadius", "UniqueEffects", ConfigDefaultValues.shadowmistRadius); public ShadowstingSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); @@ -42,10 +40,10 @@ public ShadowstingSwordItem(ToolMaterial toolMaterial, Settings settings) { public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); if (!attacker.getWorld().isClient()) { - if (attacker.getRandom().nextInt(100) <= abilityChance && attacker instanceof PlayerEntity) { + if (attacker.getRandom().nextInt(100) <= Config.uniqueEffects.shadowmist.chance && attacker instanceof PlayerEntity) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.8f); - int extraDamage = (target.getArmor() * damageArmorMultiplier) / 2; + float extraDamage = (target.getArmor() * Config.uniqueEffects.shadowmist.damageMulti) / 2; target.damage(attacker.getDamageSources().indirectMagic(attacker, attacker), extraDamage); } } @@ -56,13 +54,14 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack public TypedActionResult use(World world, PlayerEntity user, Hand hand) { world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_01.get(), user.getSoundCategory(), 0.4f, 1.6f); - user.getItemCooldownManager().set(this.getDefaultStack().getItem(), skillCooldown); + user.getItemCooldownManager().set(this.getDefaultStack().getItem(), Config.uniqueEffects.shadowmist.cooldown); + int radius = Config.uniqueEffects.shadowmist.radius; Box box = new Box(user.getX() + radius, user.getY() + radius, user.getZ() + radius, user.getX() - radius, user.getY() - radius, user.getZ() - radius); for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, blindDuration, 3), user); + le.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, Config.uniqueEffects.shadowmist.blindDuration, 3), user); } } @@ -98,28 +97,41 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.shadowmistsworditem.tooltip5").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SHADOWSTING::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 25; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 200; + @ValidatedFloat.Restrict(min = 0) + public float damageMulti = 0.8f; + @ValidatedInt.Restrict(min = 1) + public int radius = 4; + @ValidatedInt.Restrict(min = 0) + public int blindDuration = 60; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index b9537dc7..8bb35e5a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -108,12 +108,11 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, } } } - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SOUL_FIRE_FLAME, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SOUL_FIRE_FLAME, ParticleTypes.SOUL_FIRE_FLAME, ParticleTypes.MYCELIUM, true); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SMALL_FLAME, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SMALL_FLAME, ParticleTypes.SMALL_FLAME, ParticleTypes.MYCELIUM, false); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SMOKE, ParticleTypes.SMOKE, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SMOKE, ParticleTypes.SMOKE, ParticleTypes.MYCELIUM, false); super.inventoryTick(stack, world, entity, slot, selected); } @@ -143,12 +142,13 @@ public EffectSettings() { super(new ItemStackTooltipAppender(ItemsRegistry.SOULPYRE::get)); } - @ValidatedDouble.Restrict(min = 1.0) - public double range = 32.0; - @ValidatedDouble.Restrict(min = 1.0) - public double radius = 8.0; @ValidatedInt.Restrict(min = 0) public int duration = 120; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 8.0; + @ValidatedDouble.Restrict(min = 1.0) + public double range = 32.0; + @ValidatedInt.Restrict(min = 0) public int igniteDuration = 120; @ValidatedInt.Restrict(min = 0) diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java index f374883c..0bc40830 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulkeeperSwordItem.java @@ -35,8 +35,6 @@ public SoulkeeperSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -96,9 +94,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SOUL, ParticleTypes.SOUL, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SOUL, ParticleTypes.SOUL, ParticleTypes.SPORE_BLOSSOM_AIR, false); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java index a9d301f4..a025144b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulrenderSwordItem.java @@ -15,14 +15,12 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; @@ -102,7 +100,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han && le.hasStatusEffect(StatusEffects.WEAKNESS) && HelperMethods.checkFriendlyFire(le, user)) { healamp += (le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier()); - float scaling = HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.soulRend.damageSpellScaling, entity, "soul"); + float scaling = HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.soulRend.spellScaling, entity, "soul"); float multiplier = scaling > 0f ? scaling : Config.uniqueEffects.soulRend.damageMulti; le.damage(user.getDamageSources().indirectMagic(user, user), le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() * multiplier); le.removeStatusEffect(StatusEffects.WEAKNESS); @@ -125,8 +123,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - int stepMod = (int)(world.getTime() % 7) + 1; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.SOUL, ParticleTypes.SCULK_SOUL, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.SOUL, ParticleTypes.SCULK_SOUL, ParticleTypes.WARPED_SPORE, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -159,15 +156,16 @@ public EffectSettings() { public int chance = 85; @ValidatedInt.Restrict(min = 0) public int duration = 500; - @ValidatedFloat.Restrict(min = 0f) - public float damageMulti = 3f; - @ValidatedFloat.Restrict(min = 0f) - public float healMulti = 0.5f; - @ValidatedDouble.Restrict(min = 1.0) - public double radius = 10.0; @ValidatedInt.Restrict(min = 1) public int maxStacks = 8; + @ValidatedDouble.Restrict(min = 1.0) + public double radius = 10.0; + + @ValidatedFloat.Restrict(min = 0f) + public float healMulti = 0.5f; + @ValidatedFloat.Restrict(min = 0f) + public float damageMulti = 3f; @ValidatedFloat.Restrict(min = 0f) - public float damageSpellScaling = 0.4f; + public float spellScaling = 0.4f; } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java index 5bec1ce9..c4e95792 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StarsEdgeSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -11,16 +13,18 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -29,13 +33,11 @@ public StarsEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - float skillDamageModifier = Config.getFloat("celestialSurgeDamageModifier", "UniqueEffects", ConfigDefaultValues.celestialSurgeDamageModifier); - float skillLifestealModifier = Config.getFloat("celestialSurgeLifestealModifier", "UniqueEffects", ConfigDefaultValues.celestialSurgeLifestealModifier); + float skillDamageModifier = Config.uniqueEffects.celestialSurge.damageModifier; + float skillLifestealModifier = Config.uniqueEffects.celestialSurge.lifestealModifier; ServerWorld world = (ServerWorld) attacker.getWorld(); DamageSource damageSource = world.getDamageSources().generic(); float abilityDamage = (float) HelperMethods.getEntityAttackDamage(attacker); @@ -58,9 +60,9 @@ else if (world.isNight()) { @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("celestialSurgeCooldown", "UniqueEffects", ConfigDefaultValues.celestialSurgeCooldown); - int skillDuration = (int) Config.getFloat("celestialSurgeDuration", "UniqueEffects", ConfigDefaultValues.celestialSurgeDuration); - int skillStacks = (int) Config.getFloat("celestialSurgeStacks", "UniqueEffects", ConfigDefaultValues.celestialSurgeStacks); + int skillCooldown = Config.uniqueEffects.celestialSurge.cooldown; + int skillDuration = Config.uniqueEffects.celestialSurge.duration; + int skillStacks = Config.uniqueEffects.celestialSurge.stacks; if (!user.hasStatusEffect(StatusEffects.SPEED)) { user.swingHand(hand); @@ -91,34 +93,49 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FALLING_OBSIDIAN_TEAR, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FALLING_OBSIDIAN_TEAR, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - float skillDamageModifier = Config.getFloat("celestialSurgeDamageModifier", "UniqueEffects", ConfigDefaultValues.celestialSurgeDamageModifier); + + float skillDamageModifier = Config.uniqueEffects.celestialSurge.damageModifier; tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", skillDamageModifier).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip3", skillDamageModifier).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip5").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip8").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.starsedgesworditem.tooltip8").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.STARS_EDGE::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 120; + @ValidatedInt.Restrict(min = 0) + public int duration = 120; + @ValidatedFloat.Restrict(min = 0f) + public float damageModifier = 0.40f; + @ValidatedFloat.Restrict(min = 0f) + public float lifestealModifier = 0.10f; + @ValidatedInt.Restrict(min = 1) + public int stacks = 6; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java index d181a5ea..0b17cc5e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StealSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; @@ -15,7 +16,6 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -38,10 +38,6 @@ public StealSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - float abilityDamage = 5; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -97,6 +93,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.teleport(le.getX(), le.getY(), le.getZ(), false); sworld.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_SWORD_SCIFI_ATTACK_03.get(), le.getSoundCategory(), 0.3f, 1.5f); + float abilityDamage = HelperMethods.spellScaledDamage("soul", user, Config.uniqueEffects.steal.spellScaling, 5); le.damage(user.getDamageSources().freeze(), abilityDamage); } else { user.addStatusEffect(new StatusEffectInstance(StatusEffects.INVISIBILITY, iduration, 1), user); @@ -116,14 +113,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - float spellScalingModifier = Config.uniqueEffects.steal.spellScaling; - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "soul"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.NAUTILUS, ParticleTypes.NAUTILUS, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.NAUTILUS, ParticleTypes.NAUTILUS, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -148,7 +138,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip8").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip9").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.stealsworditem.tooltip10").setStyle(Styles.TEXT)); - if (scalesWithSpellPower) { + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); } @@ -165,13 +155,14 @@ public EffectSettings() { public int chance = 25; @ValidatedInt.Restrict(min = 0) public int duration = 400; - @ValidatedInt.Restrict(min = 0) - public int invisDuration = 120; - @ValidatedInt.Restrict(min = 0) - public int blindDuration = 200; @ValidatedDouble.Restrict(min = 1.0) public double radius = 30.0; @ValidatedFloat.Restrict(min = 0f) public float spellScaling = 2.6f; + + @ValidatedInt.Restrict(min = 0) + public int blindDuration = 200; + @ValidatedInt.Restrict(min = 0) + public int invisDuration = 120; } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index 7e3b3476..59c61577 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -1,7 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -12,14 +10,12 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; @@ -84,8 +80,7 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - int stepMod = 7 - (int)(world.getTime() % 7); - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.FIREWORK, ParticleTypes.FIREWORK, ParticleTypes.ELECTRIC_SPARK, false); + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.FIREWORK, ParticleTypes.FIREWORK, ParticleTypes.ELECTRIC_SPARK, false); super.inventoryTick(stack, world, entity, slot, selected); } @@ -112,13 +107,14 @@ public EffectSettings() { @ValidatedInt.Restrict(min = 0, max = 100) public int chance = 15; - @ValidatedInt.Restrict(min = 1) - public int radius = 10; @ValidatedInt.Restrict(min = 0) public int cooldown = 700; - @ValidatedInt.Restrict(min = 1) - public int frequency = 10; @ValidatedInt.Restrict(min = 0) public int duration = 200; + @ValidatedInt.Restrict(min = 1) + public int frequency = 10; + @ValidatedInt.Restrict(min = 1) + public int radius = 10; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java index 48d22576..b3250728 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormbringerSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -10,7 +13,6 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -18,24 +20,22 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.item.component.ParryComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class StormbringerSwordItem extends UniqueSwordItem { - private static int stepMod = 0; public static boolean scalesWithSpellPower; int radius = 3; - int ability_timer_max = (int) Config.getFloat("shockDeflectBlockDuration", "UniqueEffects", ConfigDefaultValues.shockDeflectBlockDuration); - int skillCooldown = (int) Config.getFloat("shockDeflectCooldown", "UniqueEffects", ConfigDefaultValues.shockDeflectCooldown); - int perfectParryWindow = (int) Config.getFloat("shockDeflectParryDuration", "UniqueEffects", ConfigDefaultValues.shockDeflectParryDuration); - float abilityDamage = Config.getFloat("shockDeflectDamage", "UniqueEffects", ConfigDefaultValues.shockDeflectDamage); - float spellScalingModifier = Config.getFloat("shockDeflectSpellScaling", "UniqueEffects", ConfigDefaultValues.shockDeflectSpellScaling); - boolean parrySuccess; int parrySuccession; public StormbringerSwordItem(ToolMaterial toolMaterial, Settings settings) { @@ -54,7 +54,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (itemStack.getDamage() >= itemStack.getMaxDamage() - 1) { return TypedActionResult.fail(itemStack); } - world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_PARRY_02.get(), user.getSoundCategory(), 0.8f, (float) (0.8f * (parrySuccession * 0.1))); + int ability_timer_max = Config.uniqueEffects.shockDeflect.blockDuration; + ParryComponent parryComponent = itemStack.getOrDefault(ComponentTypeRegistry.PARRY.get(), ParryComponent.DEFAULT); + world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_PARRY_02.get(), user.getSoundCategory(), 0.8f, (float) (0.8f * (parryComponent.parrySuccession() * 0.1))); user.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, ability_timer_max, 2), user); user.setCurrentHand(hand); return TypedActionResult.consume(itemStack); @@ -72,13 +74,12 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai //Parry attack if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - if (le.handSwinging && remainingUseTicks > getMaxUseTime(stack, user) - perfectParryWindow) { - parrySuccess = true; - if (parrySuccession < 20) parrySuccession += 1; + if (le.handSwinging && remainingUseTicks > getMaxUseTime(stack, user) - Config.uniqueEffects.shockDeflect.parryDuration) { + ParryComponent parryComponent = stack.apply(ComponentTypeRegistry.PARRY.get(), ParryComponent.DEFAULT, ParryComponent::success); user.stopUsingItem(); le.handSwinging = false; world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_PARRY_01.get(), - user.getSoundCategory(), 1f, (float) (0.8f * (parrySuccession * 0.1))); + user.getSoundCategory(), 1f, (float) (0.8f * ((parryComponent != null ? parryComponent.parrySuccession() : 0) * 0.1))); } } } @@ -88,7 +89,9 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai @Override public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { if (!world.isClient) { - if (parrySuccess) { + int skillCooldown = Config.uniqueEffects.shockDeflect.cooldown; + ParryComponent parryComponent = stack.getOrDefault(ComponentTypeRegistry.PARRY.get(), ParryComponent.DEFAULT); + if (parryComponent.parried()) { //Damage Box box = new Box(user.getX() + radius, user.getY() + radius, user.getZ() + radius, user.getX() - radius, user.getY() - radius, user.getZ() - radius); @@ -97,7 +100,8 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int //damage & knockback if ((entities instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { float choose = (float) (Math.random() * 1); - le.damage(user.getDamageSources().indirectMagic(user, user), abilityDamage + parrySuccession); + float abilityDamage = HelperMethods.spellScaledDamage("lightning", user, Config.uniqueEffects.shockDeflect.spellScaling, Config.uniqueEffects.shockDeflect.damage); + le.damage(user.getDamageSources().indirectMagic(user, user), abilityDamage + parryComponent.parrySuccession()); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_POISON_ATTACK_01.get(), le.getSoundCategory(), 0.3f, choose); le.setVelocity(le.getX() - user.getX(), 0.1, le.getZ() - user.getZ()); @@ -109,22 +113,21 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } } world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_THUNDER_SHOOT_IMPACT_01.get(), - user.getSoundCategory(), (float) (0.2f * (parrySuccession * 0.04)), 0.8f); - if (user instanceof PlayerEntity player) player.getItemCooldownManager().set(stack.getItem(), (skillCooldown / 2) + (parrySuccession * 2)); - } - if (!parrySuccess) { + user.getSoundCategory(), (float) (0.2f * (parryComponent.parrySuccession() * 0.04)), 0.8f); + if (user instanceof PlayerEntity player) player.getItemCooldownManager().set(stack.getItem(), (skillCooldown / 2) + (parryComponent.parrySuccession() * 2)); + stack.set(ComponentTypeRegistry.PARRY.get(), parryComponent.resetParry()); + } else { if (user instanceof PlayerEntity player) { player.getItemCooldownManager().set(stack.getItem(), skillCooldown); } - parrySuccession = 0; + stack.set(ComponentTypeRegistry.PARRY.get(), parryComponent.resetFull()); } - parrySuccess = false; } } @Override public int getMaxUseTime(ItemStack stack, LivingEntity user) { - return ability_timer_max; + return Config.uniqueEffects.shockDeflect.cooldown; } @Override @@ -134,43 +137,53 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "lightning") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "lightning"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip1").setStyle(ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip1").setStyle(Styles.ABILITY)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip9").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip9").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip11").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormbringersworditem.tooltip11").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleLightning")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.STORMBRINGER::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 90; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 12f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 2.3f; + + @ValidatedInt.Restrict(min = 0) + public int blockDuration = 35; + @ValidatedInt.Restrict(min = 0) + public int parryDuration = 10; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java index 7daa0ce3..57a278e6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormsEdgeSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,35 +11,36 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class StormsEdgeSwordItem extends UniqueSwordItem { - private static int stepMod = 0; - int radius = 1; - int ability_timer_max = 13; - int skillCooldown = (int) Config.getFloat("stormJoltCooldown", "UniqueEffects", ConfigDefaultValues.stormJoltCooldown); - int chargeChance = (int) Config.getFloat("stormJoltChance", "UniqueEffects", ConfigDefaultValues.stormJoltChance); public StormsEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } + private static final int radius = 1; + private static final int ability_timer_max = 13; + @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); + int chargeChance = Config.uniqueEffects.stormJolt.chance; if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= chargeChance && (attacker instanceof PlayerEntity player) && player.getItemCooldownManager().getCooldownProgress(this, 1f) > 0) { player.getItemCooldownManager().set(this, 0); @@ -65,6 +67,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { + int skillCooldown = Config.uniqueEffects.stormJolt.cooldown; AbilityMethods.tickAbilityStormJolt(stack, world, user, remainingUseTicks, skillCooldown, radius); } } @@ -91,27 +94,34 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.stormsedgesworditem.tooltip5").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.STORMS_EDGE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 100; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java index cf3deafe..7c468039 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SunfireSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -13,26 +16,24 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EntityRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class SunfireSwordItem extends UniqueSwordItem { - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int skillCooldown = (int) Config.getFloat("righteousStandardCooldown", "UniqueEffects", ConfigDefaultValues.righteousStandardCooldown); - int abilityChance = (int) Config.getFloat("righteousStandardChance", "UniqueEffects", ConfigDefaultValues.righteousStandardChance); public SunfireSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); @@ -41,7 +42,7 @@ public SunfireSwordItem(ToolMaterial toolMaterial, Settings settings) { @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); - if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= abilityChance) { + if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= Config.uniqueEffects.righteousStandard.chance) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.7f); attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 40, 1), attacker); @@ -69,7 +70,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han banner.standardType = "sunfire"; banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); } - user.getItemCooldownManager().set(this.getDefaultStack().getItem(), skillCooldown); + user.getItemCooldownManager().set(this.getDefaultStack().getItem(), Config.uniqueEffects.righteousStandard.cooldown); } } return super.use(world, user, hand); @@ -77,36 +78,46 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(2, entity, "fire") > 0) { - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip6").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip6").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleHealing")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.SUNFIRE::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 700; + @ValidatedFloat.Restrict(min = 0) + public float damage = 3f; + @ValidatedFloat.Restrict(min = 0) + public float spellScaling = 1.1f; + @ValidatedFloat.Restrict(min = 0) + public float spellScalingHeal = 1.3f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index 027507a9..90507dcb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -49,9 +49,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 9bd1cbe8..654513cc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -1,6 +1,9 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; import dev.architectury.registry.registries.RegistrySupplier; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffect; @@ -14,7 +17,6 @@ import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -22,11 +24,15 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.ArrayList; import java.util.List; @@ -94,9 +100,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack public TypedActionResult use(World world, PlayerEntity user, Hand hand) { if (!user.getWorld().isClient() && world instanceof ServerWorld serverWorld) { - int vortexMaxSize = (int) Config.getFloat("vortexMaxSize", "UniqueEffects", ConfigDefaultValues.vortexMaxSize); - int vortexDuration = (int) Config.getFloat("vortexDuration", "UniqueEffects", ConfigDefaultValues.vortexDuration); - int vortexSpellScaling = (int) Config.getFloat("vortexSpellScaling", "UniqueEffects", ConfigDefaultValues.vortexSpellScaling); + int vortexMaxSize = Config.uniqueEffects.vortex.maxSize; + int vortexDuration = Config.uniqueEffects.vortex.duration; int skillCooldown = 200; Box box = HelperMethods.createBox(user, 15); boolean soundHasPlayed = false; @@ -135,13 +140,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(0.5f, entity, "frost") > 0 - || HelperMethods.commonSpellAttributeScaling(0.5f, entity, "fire") > 0) { - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.BUBBLE, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.BUBBLE, ParticleTypes.BUBBLE_COLUMN_UP, ParticleTypes.BUBBLE_POP, true); super.inventoryTick(stack, world, entity, slot, selected); @@ -149,26 +148,22 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip5").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip5").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip6").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip7").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip9").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip10").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip11").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip7").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip9").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip10").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.tempestsworditem.tooltip11").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFrost")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); @@ -176,4 +171,21 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.TEMPEST::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int duration = 1200; + @ValidatedInt.Restrict(min = 1) + public int maxSize = 30; + @ValidatedInt.Restrict(min = 1) + public int maxStacks = 10; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 0.3f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java index edb36022..bc3764f2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/ThunderbrandSwordItem.java @@ -1,5 +1,8 @@ package net.sweenus.simplyswords.item.custom; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; @@ -10,40 +13,37 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.AbilityMethods; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class ThunderbrandSwordItem extends UniqueSwordItem implements TwoHandedWeapon { + public ThunderbrandSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - int radius = (int) Config.getFloat("thunderBlitzRadius", "UniqueEffects", ConfigDefaultValues.thunderBlitzRadius); - float abilityDamage = Config.getFloat("thunderBlitzDamage", "UniqueEffects", ConfigDefaultValues.thunderBlitzDamage); - int ability_timer_max = 50; - int skillCooldown = (int) Config.getFloat("thunderBlitzCooldown", "UniqueEffects", ConfigDefaultValues.thunderBlitzCooldown); - int chargeChance = (int) Config.getFloat("thunderBlitzChance", "UniqueEffects", ConfigDefaultValues.thunderBlitzChance); - float spellScalingModifier = Config.getFloat("thunderBlitzSpellScaling", "UniqueEffects", ConfigDefaultValues.thunderBlitzSpellScaling); + private static final int ability_timer_max = 50; @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); if (!attacker.getWorld().isClient()) { + int chargeChance = Config.uniqueEffects.thunderBlitz.chance; if (attacker.getRandom().nextInt(100) <= chargeChance && (attacker instanceof PlayerEntity player) && player.getItemCooldownManager().getCooldownProgress(this, 1f) > 0) { player.getItemCooldownManager().set(this, 0); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_BLOCK_01.get(), @@ -70,6 +70,11 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { if (!world.isClient && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user.isOnGround()) { + + float abilityDamage = HelperMethods.spellScaledDamage("lightning", user, Config.uniqueEffects.thunderBlitz.spellScaling, Config.uniqueEffects.thunderBlitz.damage); + int skillCooldown = Config.uniqueEffects.thunderBlitz.cooldown; + int radius = Config.uniqueEffects.thunderBlitz.radius; + AbilityMethods.tickAbilityThunderBlitz(stack, world, user, remainingUseTicks, ability_timer_max, abilityDamage, skillCooldown, radius); } @@ -97,38 +102,46 @@ public UseAction getUseAction(ItemStack stack) { @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "lightning") > 0) { - abilityDamage = HelperMethods.commonSpellAttributeScaling(spellScalingModifier, entity, "lightning"); - scalesWithSpellPower = true; - } - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip4").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclickheld").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip7").setStyle(TEXT)); - if (scalesWithSpellPower) { + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.thunderbrandsworditem.tooltip7").setStyle(Styles.TEXT)); + if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleLightning")); } super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.THUNDERBRAND::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 250; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 3f; + @ValidatedInt.Restrict(min = 1) + public int radius = 2; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.7f; + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java index c1f7f0de..a961b49c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TwistedBladeItem.java @@ -1,7 +1,5 @@ package net.sweenus.simplyswords.item.custom; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -13,13 +11,11 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; @@ -84,9 +80,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ASH, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ASH, ParticleTypes.ASH, ParticleTypes.ASH, false); super.inventoryTick(stack, world, entity, slot, selected); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index 59c46193..044b139d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -1,19 +1,16 @@ package net.sweenus.simplyswords.item.custom; -import me.fzzyhmstrs.fzzy_config.annotations.Translation; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; @@ -23,7 +20,6 @@ import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; -import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; @@ -36,8 +32,6 @@ public WatcherSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { @@ -89,9 +83,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.ENCHANT, ParticleTypes.ENCHANT, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @@ -120,14 +112,15 @@ public EffectSettings() { @ValidatedInt.Restrict(min = 0, max = 100) public int watcherChance = 5; - @ValidatedFloat.Restrict(min = 0f) - public float watcherRestoreAmount = 0.5f; @ValidatedDouble.Restrict(min = 1.0) public double watcherRadius = 8.0; - @ValidatedInt.Restrict(min = 0, max = 100) - public int omenChance = 5; + @ValidatedFloat.Restrict(min = 0f) + public float watcherRestoreAmount = 0.5f; + @ValidatedFloat.Restrict(min = 0, max = 100) public float omenAbsorptionCap = 20f; + @ValidatedInt.Restrict(min = 0, max = 100) + public int omenChance = 5; @ValidatedFloat.Restrict(min = 0f, max = 1f) public float omenInstantKillThreshold = 0.25f; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java index d21b297b..f06d6d1e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WaxweaverSwordItem.java @@ -1,5 +1,6 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffects; @@ -8,15 +9,17 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -25,12 +28,10 @@ public WaxweaverSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - int maximum_stacks = (int) Config.getFloat("waxweaveMaxStacks", "UniqueEffects", ConfigDefaultValues.waxweaveMaxStacks); + int maximum_stacks = Config.uniqueEffects.waxweave.maxStacks; HelperMethods.playHitSounds(attacker, target); if (target.isOnFire()) { @@ -50,32 +51,39 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.WHITE_ASH, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.WHITE_ASH, ParticleTypes.WHITE_ASH, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip3").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip3").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip7").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip9", Config.getFloat("waxweaveCooldown", "UniqueEffects", ConfigDefaultValues.waxweaveCooldown) / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip9", Config.uniqueEffects.waxweave.cooldown / 20).setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.WAXWEAVER::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 1200; + @ValidatedInt.Restrict(min = 1) + public int maxStacks = 3; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 00fe6803..ded6c496 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; @@ -9,25 +11,27 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class WhisperwindSwordItem extends UniqueSwordItem implements TwoHandedWeapon { - private static int stepMod = 0; + int skillCooldown = (int) Config.getFloat("fatalFlickerCooldown", "UniqueEffects", ConfigDefaultValues.fatalFlickerCooldown); - int abilityChance = (int) Config.getFloat("fatalFlickerChance", "UniqueEffects", ConfigDefaultValues.fatalFlickerChance); public WhisperwindSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); @@ -37,7 +41,7 @@ public WhisperwindSwordItem(ToolMaterial toolMaterial, Settings settings) { public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); if (!attacker.getWorld().isClient()) { - if (attacker.getRandom().nextInt(100) <= abilityChance && (attacker instanceof PlayerEntity player)) { + if (attacker.getRandom().nextInt(100) <= Config.uniqueEffects.fatalFlicker.chance && (attacker instanceof PlayerEntity player)) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.8f); player.getItemCooldownManager().set(this.getDefaultStack().getItem(), 0); @@ -52,37 +56,50 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.getSoundCategory(), 0.6f, 1.0f); user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FATAL_FLICKER, 12)); user.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 100)); - user.getItemCooldownManager().set(this.getDefaultStack().getItem(), skillCooldown); + user.getItemCooldownManager().set(this.getDefaultStack().getItem(), Config.uniqueEffects.fatalFlicker.cooldown); return super.use(world, user, hand); } @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, ParticleTypes.MYCELIUM, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.whisperwindsworditem.tooltip7").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.WHISPERWIND::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 175; + @ValidatedInt.Restrict(min = 1) + public int maxStacks = 99; + @ValidatedInt.Restrict(min = 1) + public int radius = 3; + @ValidatedFloat.Restrict(min = 0f) + public float dashVelocity = 3f; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index 1b834813..c726be14 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -1,5 +1,7 @@ package net.sweenus.simplyswords.item.custom; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -10,17 +12,19 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; +import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; +import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -29,12 +33,10 @@ public WickpiercerSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - float damageModifier = Config.getFloat("flickerFuryDamage", "UniqueEffects", ConfigDefaultValues.flickerFuryDamage); + float damageModifier = Config.uniqueEffects.flickerFury.damage; HelperMethods.playHitSounds(attacker, target); ServerWorld world = (ServerWorld) attacker.getWorld(); @@ -55,8 +57,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - int skillCooldown = (int) Config.getFloat("flickerFuryCooldown", "UniqueEffects", ConfigDefaultValues.flickerFuryCooldown); - int baseEffectDuration = (int) Config.getFloat("flickerFuryDuration", "UniqueEffects", ConfigDefaultValues.flickerFuryDuration); + int skillCooldown = Config.uniqueEffects.flickerFury.cooldown; + int baseEffectDuration = Config.uniqueEffects.flickerFury.duration; int effectDuration = baseEffectDuration; ItemStack mainhand = user.getMainHandStack(); ItemStack offhand = user.getOffHandStack(); @@ -74,36 +76,45 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { - if (stepMod > 0) stepMod--; - if (stepMod <= 0) stepMod = 7; - HelperMethods.createFootfalls(entity, stack, world, stepMod, ParticleTypes.WHITE_ASH, + HelperMethods.createFootfalls(entity, stack, world, ParticleTypes.WHITE_ASH, ParticleTypes.WHITE_ASH, ParticleTypes.WHITE_ASH, true); super.inventoryTick(stack, world, entity, slot, selected); } @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip6").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip7").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip6").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip7").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip8").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip9", Config.getFloat("waxweaveCooldown", "UniqueEffects", ConfigDefaultValues.waxweaveCooldown) / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip8").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.waxweaversworditem.tooltip9", Config.uniqueEffects.waxweave.cooldown / 20).setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip2").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip6", Config.getFloat("flickerFuryDuration", "UniqueEffects", ConfigDefaultValues.flickerFuryDuration) / 20).setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip2").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.wickpiercersworditem.tooltip6", Config.uniqueEffects.flickerFury.duration / 20).setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } + + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.WICKPIERCER::get)); + } + + @ValidatedInt.Restrict(min = 0) + public int cooldown = 220; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 1.0f; + @ValidatedInt.Restrict(min = 0) + public int duration = 40; + + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java index 3d1be124..4bc5a61c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java @@ -13,7 +13,6 @@ import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.compat.eldritch_end.EldritchEndCompatMethods; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -42,7 +41,7 @@ public abstract class LivingEntityMixin { && (stack.isOf(ItemsRegistry.WAXWEAVER.get()) || stack.isOf(ItemsRegistry.WICKPIERCER.get()))) { - int skillCooldown = (int) Config.getFloat("waxweaveCooldown", "UniqueEffects", ConfigDefaultValues.waxweaveCooldown); + int skillCooldown = Config.uniqueEffects.waxweave.cooldown; player.setHealth(player.getMaxHealth()); HelperMethods.incrementStatusEffect(player, StatusEffects.RESISTANCE, 100, 2, 3); player.getItemCooldownManager().set(stack.getItem(), skillCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index 850c36cb..21dc0281 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -23,7 +23,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.LootConfig; import net.sweenus.simplyswords.item.custom.CaelestisSwordItem; import net.sweenus.simplyswords.registry.EffectRegistry; @@ -120,8 +119,8 @@ public abstract class ServerPlayerEntityMixin { //Magiblade repellent if (serverPlayer.getMainHandStack().isOf(ItemsRegistry.MAGIBLADE.get())) { int frequency = 8; - int radius = (int) Config.getFloat("magibladeRepelRadius", "UniqueEffects", ConfigDefaultValues.magibladeRepelRadius); - int chance = (int) Config.getFloat("magibladeRepelChance", "UniqueEffects", ConfigDefaultValues.magibladeRepelChance); + double radius = Config.uniqueEffects.magiblade.repelRadius; + int chance = Config.uniqueEffects.magiblade.repelChance; int totalChance = new Random().nextInt(100); if (serverPlayer.age % frequency == 0 && totalChance < chance) { Box box = HelperMethods.createBox(player, radius); diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java index 364d405f..f13ee92b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ComponentTypeRegistry.java @@ -5,9 +5,13 @@ import net.minecraft.component.ComponentType; import net.minecraft.registry.RegistryKeys; import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.item.component.ChargedLocationComponent; +import net.sweenus.simplyswords.item.component.MoltenParticleComponent; +import net.sweenus.simplyswords.item.component.ParryComponent; import net.sweenus.simplyswords.item.component.RelocationComponent; -import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.item.component.TargetedLocationComponent; +import net.sweenus.simplyswords.power.GemPowerComponent; public class ComponentTypeRegistry { @@ -15,6 +19,11 @@ public class ComponentTypeRegistry { public static final RegistrySupplier> GEM_POWER = COMPONENT_TYPES.register("gem_power", () -> ComponentType.builder().codec(GemPowerComponent.CODEC).packetCodec(GemPowerComponent.PACKET_CODEC).build()); public static final RegistrySupplier> STORED_CHARGE = COMPONENT_TYPES.register("stored_charge", () -> ComponentType.builder().codec(StoredChargeComponent.CODEC).packetCodec(StoredChargeComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> STORED_BONUS = COMPONENT_TYPES.register("stored_bonus", () -> ComponentType.builder().codec(StoredChargeComponent.CODEC).packetCodec(StoredChargeComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> CHARGED_LOCATION = COMPONENT_TYPES.register("charged_location", () -> ComponentType.builder().codec(ChargedLocationComponent.CODEC).packetCodec(ChargedLocationComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> TARGETED_LOCATION = COMPONENT_TYPES.register("targeted_location", () -> ComponentType.builder().codec(TargetedLocationComponent.CODEC).packetCodec(TargetedLocationComponent.PACKET_CODEC).build()); public static final RegistrySupplier> RELOCATION = COMPONENT_TYPES.register("relocation", () -> ComponentType.builder().codec(RelocationComponent.CODEC).packetCodec(RelocationComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> MOLTEN_PARTICLE = COMPONENT_TYPES.register("molten_particle", () -> ComponentType.builder().codec(MoltenParticleComponent.CODEC).packetCodec(MoltenParticleComponent.PACKET_CODEC).build()); + public static final RegistrySupplier> PARRY = COMPONENT_TYPES.register("parry", () -> ComponentType.builder().codec(ParryComponent.CODEC).packetCodec(ParryComponent.PACKET_CODEC).build()); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java index 722de38a..07f250b6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java @@ -10,8 +10,31 @@ import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.effect.*; +import net.sweenus.simplyswords.effect.AstralShiftEffect; +import net.sweenus.simplyswords.effect.BattleFatigueEffect; +import net.sweenus.simplyswords.effect.EchoEffect; +import net.sweenus.simplyswords.effect.ElementalVortexEffect; +import net.sweenus.simplyswords.effect.FatalFlickerEffect; +import net.sweenus.simplyswords.effect.FireVortexEffect; +import net.sweenus.simplyswords.effect.FlameSeedEffect; +import net.sweenus.simplyswords.effect.FreezeEffect; +import net.sweenus.simplyswords.effect.FrenzyEffect; +import net.sweenus.simplyswords.effect.FrostVortexEffect; +import net.sweenus.simplyswords.effect.ImmolationEffect; +import net.sweenus.simplyswords.effect.MagislamEffect; +import net.sweenus.simplyswords.effect.MagistormEffect; +import net.sweenus.simplyswords.effect.OnslaughtEffect; +import net.sweenus.simplyswords.effect.PainEffect; +import net.sweenus.simplyswords.effect.ResilienceEffect; +import net.sweenus.simplyswords.effect.RibboncleaveEffect; +import net.sweenus.simplyswords.effect.RibbonwrathEffect; +import net.sweenus.simplyswords.effect.SmoulderingEffect; +import net.sweenus.simplyswords.effect.SporeSwarmEffect; +import net.sweenus.simplyswords.effect.StormEffect; +import net.sweenus.simplyswords.effect.VoidAssaultEffect; +import net.sweenus.simplyswords.effect.VoidcloakEffect; +import net.sweenus.simplyswords.effect.WardEffect; +import net.sweenus.simplyswords.effect.WildfireEffect; public class EffectRegistry { @@ -92,7 +115,7 @@ public class EffectRegistry { new RibboncleaveEffect(StatusEffectCategory.BENEFICIAL, 1124687) .addAttributeModifier(EntityAttributes.GENERIC_ATTACK_DAMAGE, Identifier.of("c8fb5e9f-c446-4475-b73f-a2290196210f"), - Config.getFloat("ribbonwrathDamageBonusPercent", "UniqueEffects", ConfigDefaultValues.ribbonwrathDamageBonusPercent), + Config.uniqueEffects.ribbonwrath.damageBonusPercent, EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL) .addAttributeModifier(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, Identifier.of("1b147b80-6598-48d4-917f-7da3032c070f"), diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index ef47e31e..36770f10 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -1,6 +1,11 @@ package net.sweenus.simplyswords.util; -import net.minecraft.entity.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LightningEntity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; @@ -15,7 +20,8 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.item.custom.LichbladeSwordItem; +import net.sweenus.simplyswords.item.component.StoredChargeComponent; +import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; @@ -194,113 +200,111 @@ public static void tickAbilitySoulAnguish(ItemStack stack, World world, LivingEn float soundDistance = 0.2f - (float) user.squaredDistanceTo(lastX, lastY, lastZ) / 800; //Target tracking cloud - if (user.age % 5 == 0 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { - Box box = new Box(lastX + radius, lastY + radius, lastZ + radius, - lastX - radius, lastY - radius, lastZ - radius); - for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { + if (user.age % 5 != 0 || user.getEquippedStack(EquipmentSlot.MAINHAND) != stack) return; + Box box = new Box(lastX + radius, lastY + radius, lastZ + radius, + lastX - radius, lastY - radius, lastZ - radius); + for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire((LivingEntity) entity, user)) { + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire((LivingEntity) entity, user)) { - //Heal effect - float choose = (float) (Math.random() * 1); - if (user.getRandom().nextInt(100) <= 8) { - world.playSoundFromEntity(null, le, SoundRegistry.DARK_SWORD_BREAKS.get(), - le.getSoundCategory(), soundDistance, choose); - user.heal(healAmount); - } - ((LichbladeSwordItem)stack.getItem()).damageTracker++; - le.damage(user.getDamageSources().indirectMagic(user, user), abilityDamage); + //Heal effect + float choose = (float) (Math.random() * 1); + if (user.getRandom().nextInt(100) <= 8) { + world.playSoundFromEntity(null, le, SoundRegistry.DARK_SWORD_BREAKS.get(), + le.getSoundCategory(), soundDistance, choose); + user.heal(healAmount); } + stack.apply(ComponentTypeRegistry.STORED_CHARGE.get(), StoredChargeComponent.DEFAULT, StoredChargeComponent::increment); + le.damage(user.getDamageSources().indirectMagic(user, user), abilityDamage); } - world.playSound(null, lastX, lastY, lastZ, SoundRegistry.DARK_SWORD_BLOCK.get(), - user.getSoundCategory(), soundDistance, 0.3f, 100); + } + world.playSound(null, lastX, lastY, lastZ, SoundRegistry.DARK_SWORD_BLOCK.get(), + user.getSoundCategory(), soundDistance, 0.3f, 100); - double xpos = lastX - (radius + 1); - double ypos = lastY; - double zpos = lastZ - (radius + 1); - world.playSound(xpos, ypos, zpos, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), - user.getSoundCategory(), 0.1f, 0.2f, true); + double xPos = lastX - (radius + 1); + double yPos = lastY; + double zPos = lastZ - (radius + 1); + world.playSound(xPos, yPos, zPos, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), + user.getSoundCategory(), 0.1f, 0.2f, true); - for (int i = radius * 2; i > 0; i--) { - for (int j = radius * 2; j > 0; j--) { - float choose = (float) (Math.random() * 1); - HelperMethods.spawnParticle(world, ParticleTypes.MYCELIUM, - xpos + i + choose, ypos, zpos + j + choose, - choose / 3, -0.3, choose / 3); - choose = (float) (Math.random() * 1); - HelperMethods.spawnParticle(world, ParticleTypes.SOUL, - xpos + i + choose, ypos, zpos + j + choose, - choose / 3, 0, choose / 3); - } + for (int i = radius * 2; i > 0; i--) { + for (int j = radius * 2; j > 0; j--) { + float choose = (float) (Math.random() * 1); + HelperMethods.spawnParticle(world, ParticleTypes.MYCELIUM, + xPos + i + choose, yPos, zPos + j + choose, + choose / 3, -0.3, choose / 3); + choose = (float) (Math.random() * 1); + HelperMethods.spawnParticle(world, ParticleTypes.SOUL, + xPos + i + choose, yPos, zPos + j + choose, + choose / 3, 0, choose / 3); } } + } } //Icewhisper - Permafrost public static void tickAbilityPermafrost(ItemStack stack, World world, LivingEntity user, - int ability_timer, int ability_timer_max, float abilityDamage, - int skillCooldown, int radius, + int ability_timer, float abilityDamage, int radius, double lastX, double lastY, double lastZ) { - if (!user.getWorld().isClient()) { - int rradius = radius * 2; - if (ability_timer < 5) user.stopUsingItem(); + if (user.getWorld().isClient()) return; - //AOE Blizzard - if (user.age % 10 == 0 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { - if (user instanceof PlayerEntity player) { - player.getHungerManager().addExhaustion(0.8f); - } - Box box = new Box(user.getX() + rradius, user.getY() + radius, user.getZ() + rradius, - user.getX() - rradius, user.getY() - radius, user.getZ() - rradius); - for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { + int rradius = radius * 2; + if (ability_timer < 5) user.stopUsingItem(); - if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - if (le.hasStatusEffect(StatusEffects.SLOWNESS)) { + //AOE Blizzard + if (user.age % 10 != 0 || user.getEquippedStack(EquipmentSlot.MAINHAND) != stack) return; - int a = (le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() + 1); + if (user instanceof PlayerEntity player) { + player.getHungerManager().addExhaustion(0.8f); + } + Box box = new Box(user.getX() + rradius, user.getY() + radius, user.getZ() + rradius, + user.getX() - rradius, user.getY() - radius, user.getZ() - rradius); + for (Entity entity : world.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { - if (a < 4) { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a), user); - } else { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a - 1), user); - } - } else { - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 0), user); - } - float choose = (float) (Math.random() * 1); - world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), - user.getSoundCategory(), 0.1f, choose); - le.damage(world.getDamageSources().indirectMagic(user, user), abilityDamage * 3); - } - } + if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { + if (le.hasStatusEffect(StatusEffects.SLOWNESS)) { - double xpos = lastX - (rradius + 1); - double ypos = lastY; - double zpos = lastZ - (rradius + 1); - world.playSound(xpos, ypos, zpos, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), - user.getSoundCategory(), 0.1f, 0.2f, true); + int a = (le.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier() + 1); - for (int i = rradius * 2; i > 0; i--) { - for (int j = rradius * 2; j > 0; j--) { - float choose = (float) (Math.random() * 1); - HelperMethods.spawnParticle(world, ParticleTypes.SNOWFLAKE, - xpos + i + choose, ypos + 6, zpos + j + choose, - choose / 3, -0.3, choose / 3); - choose = (float) (Math.random() * 1); - HelperMethods.spawnParticle(world, ParticleTypes.WHITE_ASH, - xpos + i + choose, ypos + 6, zpos + j + choose, - choose / 3, 0, choose / 3); + if (a < 4) { + le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a), user); + } else { + le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, a - 1), user); } + } else { + le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 0), user); } + float choose = (float) (Math.random() * 1); + world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), + user.getSoundCategory(), 0.1f, choose); + le.damage(world.getDamageSources().indirectMagic(user, user), abilityDamage * 3); + } + } + + double xpos = lastX - (rradius + 1); + double ypos = lastY; + double zpos = lastZ - (rradius + 1); + world.playSound(xpos, ypos, zpos, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_03.get(), + user.getSoundCategory(), 0.1f, 0.2f, true); + + for (int i = rradius * 2; i > 0; i--) { + for (int j = rradius * 2; j > 0; j--) { + float choose = (float) (Math.random() * 1); + HelperMethods.spawnParticle(world, ParticleTypes.SNOWFLAKE, + xpos + i + choose, ypos + 6, zpos + j + choose, + choose / 3, -0.3, choose / 3); + choose = (float) (Math.random() * 1); + HelperMethods.spawnParticle(world, ParticleTypes.WHITE_ASH, + xpos + i + choose, ypos + 6, zpos + j + choose, + choose / 3, 0, choose / 3); } } } //Arcanethyst - Arcane Assault public static void tickAbilityArcaneAssault(ItemStack stack, World world, LivingEntity user, - int ability_timer, int ability_timer_max, float abilityDamage, - int skillCooldown, int radius) { + int ability_timer, float abilityDamage, int radius) { if (!user.getWorld().isClient()) { if (ability_timer < 5) user.stopUsingItem(); @@ -426,8 +430,7 @@ public static void astralShiftSounds(ServerPlayerEntity serverPlayer) { } public static boolean astralShiftPassive(ServerPlayerEntity serverPlayer) { - int chance = (int) Config.getFloat("astralShiftChance", "UniqueEffects", ConfigDefaultValues.astralShiftChance); - return (serverPlayer.getRandom().nextInt(100) < chance); + return (serverPlayer.getRandom().nextInt(100) < Config.uniqueEffects.astralShift.chance); } diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index cea34cf5..3d79644d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -16,7 +16,6 @@ import net.minecraft.entity.projectile.ProjectileUtil; import net.minecraft.item.ItemStack; import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.SimpleParticleType; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.scoreboard.AbstractTeam; import net.minecraft.server.world.ServerWorld; @@ -37,10 +36,13 @@ import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.item.TwoHandedWeapon; -import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.Random; import static net.sweenus.simplyswords.SimplySwords.minimumSpellPowerVersion; @@ -52,6 +54,8 @@ public static Random random() { return random; } + + /* * getTargetedEntity taken heavily from ZsoltMolnarrr's CombatSpells * https://github.com/ZsoltMolnarrr/SpellEngine/blob/1.19.2/common/src/main/java/net/spell_engine/utils/TargetHelper.java#L136 @@ -304,7 +308,7 @@ public static boolean isUniqueTwohanded(ItemStack stack) { } //Create Box - public static Box createBox(Entity entity, int radius) { + public static Box createBox(Entity entity, double radius) { return new Box(entity.getX() + radius, entity.getY() + (float) radius / 3, entity.getZ() + radius, entity.getX() - radius, entity.getY() - (float) radius / 3, entity.getZ() - radius); } @@ -390,8 +394,9 @@ public static void decrementStatusEffect(LivingEntity livingEntity, RegistryEntr } // createFootfalls - creates weapon footfall particle effects (footsteps) - public static void createFootfalls(Entity entity, ItemStack stack, World world, int stepMod, SimpleParticleType particle, - SimpleParticleType sprintParticle, SimpleParticleType passiveParticle, boolean passiveParticles) { + public static void createFootfalls(Entity entity, ItemStack stack, World world, ParticleEffect particle, + ParticleEffect sprintParticle, ParticleEffect passiveParticle, boolean passiveParticles) { + int stepMod = 7 - (int)(world.getTime() % 7); if ((entity instanceof PlayerEntity player) && Config.general.enableWeaponFootfalls && player.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { if (isWalking(player) && !player.isSwimming() && player.isOnGround()) { if (stepMod == 6) { @@ -496,6 +501,10 @@ public static void spawnRainingParticles(ServerWorld world, ParticleEffect parti } } + public static float spellScaledDamage(String spellSchool, Entity entity, float damageModifier, float damageFallback) { + float scaling = commonSpellAttributeScaling(damageModifier, entity, spellSchool); + return scaling > 0 ? scaling : damageFallback; + } public static float commonSpellAttributeScaling(float damageModifier, Entity entity, String magicSchool) { if (Platform.isModLoaded("spell_power") && Platform.isFabric()) diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index 1d8d68e2..a3bbd96a 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1354,19 +1354,19 @@ "simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", "simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", - "simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", "simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", - "simplyswords.unique_effects.watcher.omenChance": "Omen chance", + "simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", "simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", + "simplyswords.unique_effects.watcher.omenChance": "Omen chance", "simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", "simplyswords.unique_effects.steal": "§6[Soulstealer]§7", "simplyswords.unique_effects.steal.chance": "Steal chance", "simplyswords.unique_effects.steal.duration": "Steal duration", - "simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", - "simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", "simplyswords.unique_effects.steal.radius": "Steal radius", "simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", + "simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", + "simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", "simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", "simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", @@ -1376,11 +1376,11 @@ "simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", "simplyswords.unique_effects.soulRend.chance": "Soulrend chance", "simplyswords.unique_effects.soulRend.duration": "Soulrend duration", + "simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", + "simplyswords.unique_effects.soulRend.radius": "Soulrend radius", "simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", "simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", - "simplyswords.unique_effects.soulRend.radius": "Soulrend radius", - "simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", - "simplyswords.unique_effects.soulRend.damageSpellScaling": "Soulrend Spell Power DMG multi", + "simplyswords.unique_effects.soulRend.spellScaling": "Soulrend Spell Power DMG multi", "simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", "simplyswords.unique_effects.ferocity.chance": "Ferocity chance", @@ -1394,17 +1394,17 @@ "simplyswords.unique_effects.volcanicFury" : "§6[Hearthflame]§7", "simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", - "simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", "simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", "simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", + "simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", "simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", "simplyswords.unique_effects.storm" : "§6[Mjolnir]§7", "simplyswords.unique_effects.storm.chance": "Storm chance", - "simplyswords.unique_effects.storm.radius": "Storm radius", "simplyswords.unique_effects.storm.cooldown": "Storm cooldown", - "simplyswords.unique_effects.storm.frequency": "Storm frequency", "simplyswords.unique_effects.storm.duration": "Storm duration", + "simplyswords.unique_effects.storm.frequency": "Storm frequency", + "simplyswords.unique_effects.storm.radius": "Storm radius", "simplyswords.unique_effects.plague" : "§6[Longsword of The Plague]§7", "simplyswords.unique_effects.plague.chance": "Plague chance", @@ -1416,192 +1416,193 @@ "simplyswords.unique_effects.bramble.Chance": "Bramble chance", "simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", + "simplyswords.unique_effects.soultether.duration": "Soultether duration", "simplyswords.unique_effects.soultether.range": "Soultether range", "simplyswords.unique_effects.soultether.radius": "Soultether radius", - "simplyswords.unique_effects.soultether.duration": "Soultether duration", "simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", "simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown.@PrefixText" : "§6[Frostfall]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown": "Frost Fury cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryRadius": "Frost Fury radius", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryDamage": "Frost Fury damage", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryChance": "Frost Fury chance", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryDuration": "Frost Fury duration", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFurySpellScaling": "Frost Fury Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarCooldown.@PrefixText" : "§6[Molten Edge]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarCooldown": "Molten Roar cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarRadius": "Molten Roar radius", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarKnockbackStrength": "Molten Roar Knockback strength", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarChance": "Molten Roar chance", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarDuration": "Molten Roar duration", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterRadius.@PrefixText" : "§6[Livyatan]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterRadius": "Frost Shatter radius", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterDamage": "Frost Shatter damage", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterChance": "Frost Shatter chance", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterDuration": "Frost Shatter duration", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterSpellScaling": "Frost Shatter Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostRadius.@PrefixText" : "§6[Icewhisper]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostRadius": "Permafrost radius", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostDamage": "Permafrost damage", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostCooldown": "Permafrost cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostDuration": "Permafrost duration", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostSpellScaling": "Permafrost Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultRadius.@PrefixText" : "§6[Arcanethyst]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultRadius": "Arcane Assault radius", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultDamage": "Arcane Assault damage", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultCooldown": "Arcane Assault cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultChance": "Arcane Assault chance", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultDuration": "Arcane Assault duration", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultSpellScaling": "Arcane Assault Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzRadius.@PrefixText" : "§6[Thunderbrand]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzRadius": "Thunder Blitz radius", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzDamage": "Thunder Blitz damage", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzCooldown": "Thunder Blitz cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzChance": "Thunder Blitz chance", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzSpellScaling": "Thunder Blitz Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltCooldown.@PrefixText" : "§6[Storm's Edge]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltCooldown": "Storm Jolt cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltChance": "Storm Jolt chance", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRadius.@PrefixText" : "§6[Lichblade]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRadius": "Soul Anguish radius", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishAbsorptionCap": "Soul Anguish absorption cap", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishDamage": "Soul Anguish damage", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishCooldown": "Soul Anguish cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishDuration": "Soul Anguish duration", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishHeal": "Soul Anguish heal", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRange": "Soul Anguish range", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishSpellScaling": "Soul Anguish Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectBlockDuration.@PrefixText" : "§6[Stormbringer]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectBlockDuration": "Shock Deflect radius", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectDamage": "Shock Deflect damage", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectCooldown": "Shock Deflect cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectParryDuration": "Shock Deflect chance", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectSpellScaling": "Shock Deflect Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistCooldown.@PrefixText" : "§6[Shadowsting]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistCooldown": "Shadowmist cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistChance": "Shadowmist chance", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistDamageMulti": "Shadowmist damage multiplier", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistBlindDuration": "Shadowmist Blind duration", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistRadius": "Shadowmist radius", - - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardCooldown.@PrefixText" : "§6[Abyssal Standard]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardCooldown": "Abyssal Standard cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardChance": "Abyssal Standard chance", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardDamage": "Abyssal Standard damage", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardSpellScaling": "Abyssal Standard Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardCooldown.@PrefixText" : "§6[Abyssal Standard]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardCooldown": "Righteous Standard cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardChance": "Righteous Standard chance", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardDamage": "Righteous Standard damage", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardSpellScaling": "Righteous Standard Spell Power DMG multi", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardSpellScalingHeal": "Righteous Standard Spell Power HEAL multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerCooldown.@PrefixText" : "§6[Whisperwind]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerCooldown": "Fatal Flicker cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerChance": "Fatal Flicker chance", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerRadius": "Fatal Flicker radius", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerMaxStacks": "Fatal Flicker max stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerDashVelocity": "Fatal Flicker dash velocity", - - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderCooldown.@PrefixText" : "§6[Emberlash]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderCooldown": "Smoulder cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderMaxStacks": "Smoulder max stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderHeal": "Smoulder heal percent", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderSpellScaling": "Smoulder Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveCooldown.@PrefixText" : "§6[Waxweaver]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveCooldown": "Waxweave cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveMaxStacks": "Waxweave max stacks", - - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindCooldown.@PrefixText" : "§6[Hiveheart]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindCooldown": "Hivemind cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindDuration": "Hivemind duration", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindDamage": "Hivemind damage modifier", - - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeCooldown.@PrefixText" : "§6[Star's Edge]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeCooldown": "Celestial Surge cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeDuration": "Celestial Surge duration", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeStacks": "Celestial Surge Haste stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeDamageModifier": "Celestial Surge Damage modifier", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeLifestealModifier": "Celestial Surge Lifesteal modifier", - - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryCooldown.@PrefixText" : "§6[Wickpiercer]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryCooldown": "Flicker Fury cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryDuration": "Flicker Fury duration", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryDamage": "Flicker Fury damage modifier", - - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDuration.@PrefixText" : "§6[Dreadtide]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDuration": "Voidcaller duration", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerStartingTickFrequency": "Voidcaller starting tick frequency", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDamageModifier": "Voidcaller damage modifier", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionFrequency": "Voidcaller Corruption frequency", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionPerTick": "Voidcaller Corruption per tick", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionDuration": "Voidcaller Corruption duration", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionMax": "Voidcaller Corruption max", - - "text.autoconfig.simplyswords_main.option.unique_effects.vortexDuration.@PrefixText" : "§6[Tempest]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexDuration": "Vortex duration", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexMaxSize": "Vortex max size", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexMaxStacks": "Vortex max stacks", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexSpellScaling": "Vortex Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpreadCap.@PrefixText" : "§6[Flamewind]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpreadCap": "Emberstorm spread cap", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormDamage": "Emberstorm damage", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormDetonationDamage": "Emberstorm detonation damage", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormCooldown": "Emberstorm cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormMaxHaste": "Emberstorm Haste max", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpellScaling": "Emberstorm Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathCooldown.@PrefixText" : "§6[Ribboncleaver]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathCooldown": "Ribbonwrath cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathResilienceAmplifier": "Ribbonwrath resilience amplifier", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathDamageBonusPercent": "Ribbonwrath damage bonus percent", - - "text.autoconfig.simplyswords_main.option.unique_effects.magistormCooldown.@PrefixText" : "§6[Magiscythe]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormCooldown": "Magiscythe cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormDuration": "Magistorm duration", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormRadius": "Magistorm radius", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormDamage": "Magistorm damage", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormRepairChance": "Magistorm repair chance", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormSpellScaling": "Magistorm Spell Power DMG multi", - - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaCooldown.@PrefixText" : "§6[Enigma]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaCooldown": "Enigma cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaDecayRate": "Enigma decay rate", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaChaseRadius": "Enigma chase radius", - - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeCooldown.@PrefixText" : "§6[Magiblade]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeCooldown": "Magisonic cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeSonicDistance": "Magisonic sonic distance", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeDamageModifier": "Magisonic damage modifier", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeRepelChance": "Magisonic repel chance", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeRepelRadius": "Magisonic repel radius", - - "text.autoconfig.simplyswords_main.option.unique_effects.magislamCooldown.@PrefixText" : "§6[Magispear]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamCooldown": "Magislam cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamRadius": "Magislam radius", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamDamageModifier": "Magislam damage modifier", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamMagicChance": "Magislam magic chance", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamMagicModifier": "Magislam magic modifier", - - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftCooldown.@PrefixText" : "§6[Caelestis]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftCooldown": "Astral Shift cooldown", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDuration": "Astral Shift duration", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDamageModifier": "Astral Shift damage modifier", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDamageMax": "Astral Shift damage max", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftChance": "Astral Shift avoidance chance", - + "simplyswords.unique_effects.frostFury": "§6[Frostfall]§7", + "simplyswords.unique_effects.frostFury.chance": "Frost Fury chance", + "simplyswords.unique_effects.frostFury.cooldown": "Frost Fury cooldown", + "simplyswords.unique_effects.frostFury.damage": "Frost Fury damage", + "simplyswords.unique_effects.frostFury.duration": "Frost Fury duration", + "simplyswords.unique_effects.frostFury.radius": "Frost Fury radius", + "simplyswords.unique_effects.frostFury.spellScaling": "Frost Fury Spell Power DMG multi", + + "simplyswords.unique_effects.moltenRoar": "§6[Molten Edge]§7", + "simplyswords.unique_effects.moltenRoar.chance": "Molten Roar chance", + "simplyswords.unique_effects.moltenRoar.cooldown": "Molten Roar cooldown", + "simplyswords.unique_effects.moltenRoar.duration": "Molten Roar duration", + "simplyswords.unique_effects.moltenRoar.knockbackStrength": "Molten Roar Knockback strength", + "simplyswords.unique_effects.moltenRoar.radius": "Molten Roar radius", + + "simplyswords.unique_effects.frostShatter": "§6[Livyatan]§7", + "simplyswords.unique_effects.frostShatter.chance": "Frost Shatter chance", + "simplyswords.unique_effects.frostShatter.damage": "Frost Shatter damage", + "simplyswords.unique_effects.frostShatter.duration": "Frost Shatter duration", + "simplyswords.unique_effects.frostShatter.radius": "Frost Shatter radius", + "simplyswords.unique_effects.frostShatter.spellScaling": "Frost Shatter Spell Power DMG multi", + + "simplyswords.unique_effects.permafrost": "§6[Icewhisper]§7", + "simplyswords.unique_effects.permafrost.cooldown": "Permafrost cooldown", + "simplyswords.unique_effects.permafrost.damage": "Permafrost damage", + "simplyswords.unique_effects.permafrost.duration": "Permafrost duration", + "simplyswords.unique_effects.permafrost.radius": "Permafrost radius", + "simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", + + "simplyskills.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", + "simplyskills.unique_effects.arcaneAssault.chance": "Arcane Assault chance", + "simplyskills.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", + "simplyskills.unique_effects.arcaneAssault.damage": "Arcane Assault damage", + "simplyskills.unique_effects.arcaneAssault.duration": "Arcane Assault duration", + "simplyskills.unique_effects.arcaneAssault.radius": "Arcane Assault radius", + "simplyskills.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", + + "simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", + "simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", + "simplyswords.unique_effects.thunderBlitz.cooldown": "Thunder Blitz cooldown", + "simplyswords.unique_effects.thunderBlitz.damage": "Thunder Blitz damage", + "simplyswords.unique_effects.thunderBlitz.radius": "Thunder Blitz radius", + "simplyswords.unique_effects.thunderBlitz.spellScaling": "Thunder Blitz Spell Power DMG multi", + + "simplyswords.unique_effects.stormJolt": "§6[Storm's Edge]§7", + "simplyswords.unique_effects.stormJolt.chance": "Storm Jolt chance", + "simplyswords.unique_effects.stormJolt.cooldown": "Storm Jolt cooldown", + + "simplyswords.unique_effects.soulAnguish": "§6[Lichblade]§7", + "simplyswords.unique_effects.soulAnguish.absorptionCap": "Soul Anguish absorption cap", + "simplyswords.unique_effects.soulAnguish.cooldown": "Soul Anguish cooldown", + "simplyswords.unique_effects.soulAnguish.damage": "Soul Anguish damage", + "simplyswords.unique_effects.soulAnguish.duration": "Soul Anguish duration", + "simplyswords.unique_effects.soulAnguish.heal": "Soul Anguish heal", + "simplyswords.unique_effects.soulAnguish.radius": "Soul Anguish radius", + "simplyswords.unique_effects.soulAnguish.range": "Soul Anguish range", + "simplyswords.unique_effects.soulAnguish.spellScaling": "Soul Anguish Spell Power DMG multi", + + "simplyswords.unique_effects.shockDeflect": "§6[Stormbringer]§7", + "simplyswords.unique_effects.shockDeflect.Cooldown": "Shock Deflect cooldown", + "simplyswords.unique_effects.shockDeflect.Damage": "Shock Deflect damage", + "simplyswords.unique_effects.shockDeflect.SpellScaling": "Shock Deflect Spell Power DMG multi", + "simplyswords.unique_effects.shockDeflect.BlockDuration": "Shock Deflect radius", + "simplyswords.unique_effects.shockDeflect.ParryDuration": "Shock Deflect chance", + + "simplyswords.unique_effects.shadowmist": "§6[Shadowsting]§7", + "simplyswords.unique_effects.shadowmist.chance": "Shadowmist chance", + "simplyswords.unique_effects.shadowmist.cooldown": "Shadowmist cooldown", + "simplyswords.unique_effects.shadowmist.damageMulti": "Shadowmist damage multiplier", + "simplyswords.unique_effects.shadowmist.radius": "Shadowmist radius", + "simplyswords.unique_effects.shadowmist.blindDuration": "Shadowmist Blind duration", + + "simplyswords.unique_effects.abyssalStandard": "§6[Abyssal Standard]§7", + "simplyswords.unique_effects.abyssalStandard.chance": "Abyssal Standard chance", + "simplyswords.unique_effects.abyssalStandard.cooldown": "Abyssal Standard cooldown", + "simplyswords.unique_effects.abyssalStandard.damage": "Abyssal Standard damage", + "simplyswords.unique_effects.abyssalStandard.spellScaling": "Abyssal Standard Spell Power DMG multi", + + "simplyswords.unique_effects.righteousStandard": "§6[Righteous Standard]§7", + "simplyswords.unique_effects.righteousStandard.chance": "Righteous Standard chance", + "simplyswords.unique_effects.righteousStandard.cooldown": "Righteous Standard cooldown", + "simplyswords.unique_effects.righteousStandard.damage": "Righteous Standard damage", + "simplyswords.unique_effects.righteousStandard.spellScaling": "Righteous Standard Spell Power DMG multi", + "simplyswords.unique_effects.righteousStandard.spellScalingHeal": "Righteous Standard Spell Power HEAL multi", + + "simplyswords.unique_effects.fatalFlicker": "§6[Whisperwind]§7", + "simplyswords.unique_effects.fatalFlicker.chance": "Fatal Flicker chance", + "simplyswords.unique_effects.fatalFlicker.cooldown": "Fatal Flicker cooldown", + "simplyswords.unique_effects.fatalFlicker.maxStacks": "Fatal Flicker max stacks", + "simplyswords.unique_effects.fatalFlicker.radius": "Fatal Flicker radius", + "simplyswords.unique_effects.fatalFlicker.dashVelocity": "Fatal Flicker dash velocity", + + "simplyswords.unique_effects.smoulder": "§6[Emberlash]§7", + "simplyswords.unique_effects.smoulder.cooldown": "Smoulder cooldown", + "simplyswords.unique_effects.smoulder.heal": "Smoulder heal percent", + "simplyswords.unique_effects.smoulder.maxStacks": "Smoulder max stacks", + "simplyswords.unique_effects.smoulder.spellScaling": "Smoulder Spell Power DMG multi", + + "simplyswords.unique_effects.waxweave": "§6[Waxweaver]§7", + "simplyswords.unique_effects.waxweave.cooldown": "Waxweave cooldown", + "simplyswords.unique_effects.waxweave.maxStacks": "Waxweave max stacks", + + "simplyswords.unique_effects.hivemind": "§6[Hiveheart]§7", + "simplyswords.unique_effects.hivemind.cooldown": "Hivemind cooldown", + "simplyswords.unique_effects.hivemind.damage": "Hivemind damage modifier", + "simplyswords.unique_effects.hivemind.duration": "Hivemind duration", + + "simplyswords.unique_effects.celestialSurge": "§6[Star's Edge]§7", + "simplyswords.unique_effects.celestialSurge.cooldown": "Celestial Surge cooldown", + "simplyswords.unique_effects.celestialSurge.duration": "Celestial Surge duration", + "simplyswords.unique_effects.celestialSurge.damageModifier": "Celestial Surge Damage modifier", + "simplyswords.unique_effects.celestialSurge.lifestealModifier": "Celestial Surge Lifesteal modifier", + "simplyswords.unique_effects.celestialSurge.stacks": "Celestial Surge Haste stacks", + + "simplyswords.unique_effects.flickerFury": "§6[Wickpiercer]§7", + "simplyswords.unique_effects.flickerFury.cooldown": "Flicker Fury cooldown", + "simplyswords.unique_effects.flickerFury.damage": "Flicker Fury damage modifier", + "simplyswords.unique_effects.flickerFury.duration": "Flicker Fury duration", + + "simplyswords.unique_effects.vortex": "§6[Tempest]§7", + "simplyswords.unique_effects.vortex.duration": "Vortex duration", + "simplyswords.unique_effects.vortex.maxSize": "Vortex max size", + "simplyswords.unique_effects.vortex.maxStacks": "Vortex max stacks", + "simplyswords.unique_effects.vortex.spellScaling": "Vortex Spell Power DMG multi", + + "simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", + "simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", + "simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", + "simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", + "simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", + "simplyswords.unique_effects.voidcaller.corruptionFrequency": "Voidcaller Corruption frequency", + "simplyswords.unique_effects.voidcaller.corruptionPerTick": "Voidcaller Corruption per tick", + "simplyswords.unique_effects.voidcaller.corruptionDuration": "Voidcaller Corruption duration", + "simplyswords.unique_effects.voidcaller.corruptionMax": "Voidcaller Corruption max", + + "simplyswords.unique_effects.emberstorm": "§6[Flamewind]§7", + "simplyswords.unique_effects.emberstorm.cooldown": "Emberstorm cooldown", + "simplyswords.unique_effects.emberstorm.damage": "Emberstorm damage", + "simplyswords.unique_effects.emberstorm.spellScaling": "Emberstorm Spell Power DMG multi", + "simplyswords.unique_effects.emberstorm.detonationDamage": "Emberstorm detonation damage", + "simplyswords.unique_effects.emberstorm.maxHaste": "Emberstorm Haste max", + "simplyswords.unique_effects.emberstorm.spreadCap": "Emberstorm spread cap", + + "simplyswords.unique_effects.ribbonwrath" : "§6[Ribboncleaver]§7", + "simplyswords.unique_effects.ribbonwrath.cooldown": "Ribbonwrath cooldown", + "simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Ribbonwrath damage bonus percent", + "simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Ribbonwrath resilience amplifier", + + "simplyswords.unique_effects.magistorm" : "§6[Magiscythe]§7", + "simplyswords.unique_effects.magistorm.cooldown": "Magiscythe cooldown", + "simplyswords.unique_effects.magistorm.damage": "Magistorm damage", + "simplyswords.unique_effects.magistorm.duration": "Magistorm duration", + "simplyswords.unique_effects.magistorm.radius": "Magistorm radius", + "simplyswords.unique_effects.magistorm.repairChance": "Magistorm repair chance", + "simplyswords.unique_effects.magistorm.spellScaling": "Magistorm Spell Power DMG multi", + + "simplyswords.unique_effects.enigma" : "§6[Enigma]§7", + "simplyswords.unique_effects.enigma.cooldown": "Enigma cooldown", + "simplyswords.unique_effects.enigma.chaseRadius": "Enigma chase radius", + "simplyswords.unique_effects.enigma.decayRate": "Enigma decay rate", + + "simplyswords.unique_effects.magiblade" : "§6[Magiblade]§7", + "simplyswords.unique_effects.magiblade.cooldown": "Magisonic cooldown", + "simplyswords.unique_effects.magiblade.damageModifier": "Magisonic damage modifier", + "simplyswords.unique_effects.magiblade.repelChance": "Magisonic repel chance", + "simplyswords.unique_effects.magiblade.repelRadius": "Magisonic repel radius", + "simplyswords.unique_effects.magiblade.sonicDistance": "Magisonic sonic distance", + + "simplyswords.unique_effects.magislam" : "§6[Magispear]§7", + "simplyswords.unique_effects.magislam.cooldown": "Magislam cooldown", + "simplyswords.unique_effects.magislam.damageModifier": "Magislam damage modifier", + "simplyswords.unique_effects.magislam.radius": "Magislam radius", + "simplyswords.unique_effects.magislam.magicChance": "Magislam magic chance", + "simplyswords.unique_effects.magislam.magicModifier": "Magislam magic modifier", + + "simplyswords.unique_effects.astralShift" : "§6[Caelestis]§7", + "simplyswords.unique_effects.astralShift.chance": "Astral Shift avoidance chance", + "simplyswords.unique_effects.astralShift.cooldown": "Astral Shift cooldown", + "simplyswords.unique_effects.astralShift.damageMax": "Astral Shift damage max", + "simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", + "simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", "simplyswords.gem_powers" : "Runic and Fused Gem Powers", "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", From 2916e6569429c9fde1c68f426c2f33cdf26ec53a Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 1 Nov 2024 07:56:50 -0400 Subject: [PATCH 26/37] getting pretty close to wrapping up config port --- .../sweenus/simplyswords/SimplySwords.java | 13 +- .../compat/EldritchEndCompat.java | 6 +- .../simplyswords/compat/GobberCompat.java | 196 +++---- .../sweenus/simplyswords/config/Config.java | 5 +- .../simplyswords/config/ConfigWrapper.java | 5 +- .../simplyswords/config/GemPowersConfig.java | 8 +- .../simplyswords/config/LootConfigOld.java | 63 --- .../config/RunicEffectsConfig.java | 107 ---- .../config/SimplySwordsConfig.java | 99 ---- .../config/UniqueEffectsConfig.java | 62 +-- .../config/UniqueEffectsConfigOld.java | 267 --------- .../config/WeaponAttributesConfig.java | 377 +++++++------ .../config/WeaponAttributesConfigOld.java | 177 ++++++ .../simplyswords/effect/StormEffect.java | 8 +- .../simplyswords/effect/WildfireEffect.java | 2 +- .../item/custom/DormantRelicSwordItem.java | 4 +- .../item/custom/FlamewindSwordItem.java | 2 +- .../item/custom/HarbingerSwordItem.java | 2 - .../item/custom/MoltenEdgeSwordItem.java | 4 +- .../item/custom/RighteousRelicSwordItem.java | 4 +- .../item/custom/TaintedRelicSwordItem.java | 15 +- .../item/custom/TempestSwordItem.java | 5 +- .../item/custom/WatcherSwordItem.java | 3 +- .../item/custom/WhisperwindSwordItem.java | 2 - .../power/powers/TrailblazePower.java | 4 +- .../simplyswords/registry/ItemsRegistry.java | 405 +++++++------- .../simplyswords/util/AbilityMethods.java | 2 +- .../simplyswords/util/HelperMethods.java | 110 ---- .../simplyswords/util/RunicMethods.java | 509 ------------------ .../assets/simplyswords/lang/en_us.json | 380 ++++++------- .../fabric/SimplySwordsPreLaunch.java | 24 - .../fabric/client/ModMenuIntegration.java | 16 - .../fabric/compat/MythicMetalsCompat.java | 139 ++--- fabric/src/main/resources/fabric.mod.json | 6 - .../forge/compat/GobberCompat.java | 108 ++-- 35 files changed, 994 insertions(+), 2145 deletions(-) delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/SimplySwordsConfig.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java create mode 100644 common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java delete mode 100644 fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsPreLaunch.java delete mode 100644 fabric/src/main/java/net/sweenus/simplyswords/fabric/client/ModMenuIntegration.java diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index b616e293..7cfc2c72 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -63,11 +63,7 @@ public class SimplySwords { public static final Logger LOGGER = LogManager.getLogger(MOD_ID); public static boolean isConfigOutdated; - public static LootConfigOld lootConfigOld; - public static RunicEffectsConfig runicEffectsConfig; - public static StatusEffectsConfig statusEffectsConfig; - public static UniqueEffectsConfigOld uniqueEffectsConfigOld; - public static WeaponAttributesConfig weaponAttributesConfig; + public static WeaponAttributesConfigOld weaponAttributesConfigOld; public static String minimumEldritchEndVersion = "0.2.40"; public static String minimumSpellPowerVersion = "0.10.0+1.20.1"; @@ -77,11 +73,9 @@ public static void init() { //CONFIG Config.init(); - SimplySwordsConfig.init(); AutoConfig.register(ConfigWrapper.class, PartitioningSerializer.wrap(JanksonConfigSerializer::new)); - lootConfigOld = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().loot; - weaponAttributesConfig = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().weapon_attributes; + weaponAttributesConfigOld = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().weapon_attributes; String version = SimplySwordsExpectPlatform.getVersion(); String defaultConfig = String.format(""" @@ -100,9 +94,6 @@ public static void init() { //System.out.println(version.substring(0, 4)); } - SimplySwordsConfig.generateConfigs(json == null || !json.has("regen_simplyswords_config_file") || json.get("regen_simplyswords_config_file").getAsBoolean()); - SimplySwordsConfig.loadConfig(); - SimplySwords.TABS.register(); ItemsRegistry.ITEM.register(); SoundRegistry.SOUND.register(); diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java index 1b64af87..5fb3c9ad 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java @@ -9,8 +9,8 @@ public class EldritchEndCompat { //Compat for Eldritch End - static float dreadtide_damage_modifier = Config.getFloat("dreadtide_damageModifier", "WeaponAttributes", ConfigDefaultValues.dreadtide_damageModifier); - static float dreadtide_attackspeed = Config.getFloat("dreadtide_attackSpeed", "WeaponAttributes", ConfigDefaultValues.dreadtide_attackSpeed); + static float dreadtide_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.dreadtide_damageModifier.get(); + static float dreadtide_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.dreadtide_attackSpeed.get(); public static final DeferredRegister ITEM = ItemsRegistry.ITEM; /* @@ -25,4 +25,4 @@ public static void registerModItems() { } */ -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java index 844b262a..3578817a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java @@ -6,259 +6,227 @@ public class GobberCompat { //Compat for Gobber - static float longsword_positive_modifier = Config.getFloat("longsword_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_positiveDamageModifier); - static float twinblade_positive_modifier = Config.getFloat("twinblade_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_positiveDamageModifier); - static float rapier_positive_modifier = Config.getFloat("rapier_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_positiveDamageModifier); - static float katana_positive_modifier = Config.getFloat("katana_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_positiveDamageModifier); - static float sai_positive_modifier = Config.getFloat("sai_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_positiveDamageModifier); - static float spear_positive_modifier = Config.getFloat("spear_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_positiveDamageModifier); - static float glaive_positive_modifier = Config.getFloat("glaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_positiveDamageModifier); - static float warglaive_positive_modifier = Config.getFloat("warglaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_positiveDamageModifier); - static float cutlass_positive_modifier = Config.getFloat("cutlass_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_positiveDamageModifier); - static float claymore_positive_modifier = Config.getFloat("claymore_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_positiveDamageModifier); - static float greataxe_positive_modifier = Config.getFloat("greataxe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_positiveDamageModifier); - static float greathammer_positive_modifier = Config.getFloat("greathammer_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_positiveDamageModifier); - static float chakram_positive_modifier = Config.getFloat("chakram_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_positiveDamageModifier); - static float scythe_positive_modifier = Config.getFloat("scythe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_positiveDamageModifier); - static float halberd_positive_modifier = Config.getFloat("halberd_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_positiveDamageModifier); - - static float longsword_negative_modifier = Config.getFloat("longsword_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_negativeDamageModifier); - static float twinblade_negative_modifier = Config.getFloat("twinblade_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_negativeDamageModifier); - static float rapier_negative_modifier = Config.getFloat("rapier_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_negativeDamageModifier); - static float sai_negative_modifier = Config.getFloat("sai_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_negativeDamageModifier); - static float spear_negative_modifier = Config.getFloat("spear_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_negativeDamageModifier); - static float katana_negative_modifier = Config.getFloat("katana_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_negativeDamageModifier); - static float glaive_negative_modifier = Config.getFloat("glaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_negativeDamageModifier); - static float warglaive_negative_modifier = Config.getFloat("warglaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_negativeDamageModifier); - static float cutlass_negative_modifier = Config.getFloat("cutlass_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_negativeDamageModifier); - static float claymore_negative_modifier = Config.getFloat("claymore_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_negativeDamageModifier); - static float greataxe_negative_modifier = Config.getFloat("greataxe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_negativeDamageModifier); - static float greathammer_negative_modifier = Config.getFloat("greathammer_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_negativeDamageModifier); - static float chakram_negative_modifier = Config.getFloat("chakram_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_negativeDamageModifier); - static float scythe_negative_modifier = Config.getFloat("scythe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_negativeDamageModifier); - static float halberd_negative_modifier = Config.getFloat("halberd_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_negativeDamageModifier); - - static float longsword_attackspeed = Config.getFloat("longsword_attackSpeed", "WeaponAttributes", ConfigDefaultValues.longsword_attackSpeed); - static float twinblade_attackspeed = Config.getFloat("twinblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.twinblade_attackSpeed); - static float rapier_attackspeed = Config.getFloat("rapier_attackSpeed", "WeaponAttributes", ConfigDefaultValues.rapier_attackSpeed); - static float sai_attackspeed = Config.getFloat("sai_attackSpeed", "WeaponAttributes", ConfigDefaultValues.sai_attackSpeed); - static float spear_attackspeed = Config.getFloat("spear_attackSpeed", "WeaponAttributes", ConfigDefaultValues.spear_attackSpeed); - static float katana_attackspeed = Config.getFloat("katana_attackSpeed", "WeaponAttributes", ConfigDefaultValues.katana_attackSpeed); - static float glaive_attackspeed = Config.getFloat("glaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.glaive_attackSpeed); - static float warglaive_attackspeed = Config.getFloat("warglaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.warglaive_attackSpeed); - static float cutlass_attackspeed = Config.getFloat("cutlass_attackSpeed", "WeaponAttributes", ConfigDefaultValues.cutlass_attackSpeed); - static float claymore_attackspeed = Config.getFloat("claymore_attackSpeed", "WeaponAttributes", ConfigDefaultValues.claymore_attackSpeed); - static float greataxe_attackspeed = Config.getFloat("greataxe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greataxe_attackSpeed); - static float greathammer_attackspeed = Config.getFloat("greathammer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greathammer_attackSpeed); - static float chakram_attackspeed = Config.getFloat("chakram_attackSpeed", "WeaponAttributes", ConfigDefaultValues.chakram_attackSpeed); - static float scythe_attackspeed = Config.getFloat("scythe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.scythe_attackSpeed); - static float halberd_attackspeed = Config.getFloat("halberd_attackSpeed", "WeaponAttributes", ConfigDefaultValues.halberd_attackSpeed); - - static int longsword_modifier = (int) (longsword_positive_modifier - longsword_negative_modifier); - static int twinblade_modifier = (int) (twinblade_positive_modifier - twinblade_negative_modifier); - static int rapier_modifier = (int) (rapier_positive_modifier - rapier_negative_modifier); - static int sai_modifier = (int) (sai_positive_modifier - sai_negative_modifier); - static int spear_modifier = (int) (spear_positive_modifier - spear_negative_modifier); - static int katana_modifier = (int) (katana_positive_modifier - katana_negative_modifier); - static int glaive_modifier = (int) (glaive_positive_modifier - glaive_negative_modifier); - static int warglaive_modifier = (int) (warglaive_positive_modifier - warglaive_negative_modifier); - static int cutlass_modifier = (int) (cutlass_positive_modifier - cutlass_negative_modifier); - static int chakram_modifier = (int) (chakram_positive_modifier - chakram_negative_modifier); - static int scythe_modifier = (int) (scythe_positive_modifier - scythe_negative_modifier); - static int claymore_modifier = (int) (claymore_positive_modifier - claymore_negative_modifier); - static int greathammer_modifier = (int) (greathammer_positive_modifier - greathammer_negative_modifier); - static int greataxe_modifier = (int) (greataxe_positive_modifier - greataxe_negative_modifier); - static int halberd_modifier = (int) (halberd_positive_modifier - halberd_negative_modifier); - static int gobber_modifier = (int) Config.getFloat("gobber_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobber_damageModifier); - static int gobber_nether_modifier = (int) Config.getFloat("gobberNether_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobberNether_damageModifier); - static int gobber_end_modifier = (int) Config.getFloat("gobberEnd_damageModifier", "WeaponAttributes", ConfigDefaultValues.gobberEnd_damageModifier); + static float longsword_modifier = Config.weaponAttribute.typeDamageModifier.longsword_damageModifier; + static float twinblade_modifier = Config.weaponAttribute.typeDamageModifier.twinblade_damageModifier; + static float rapier_modifier = Config.weaponAttribute.typeDamageModifier.rapier_damageModifier; + static float katana_modifier = Config.weaponAttribute.typeDamageModifier.katana_damageModifier; + static float sai_modifier = Config.weaponAttribute.typeDamageModifier.sai_damageModifier; + static float spear_modifier = Config.weaponAttribute.typeDamageModifier.spear_damageModifier; + static float glaive_modifier = Config.weaponAttribute.typeDamageModifier.glaive_damageModifier; + static float warglaive_modifier = Config.weaponAttribute.typeDamageModifier.warglaive_damageModifier; + static float cutlass_modifier = Config.weaponAttribute.typeDamageModifier.cutlass_damageModifier; + static float claymore_modifier = Config.weaponAttribute.typeDamageModifier.claymore_damageModifier; + static float greataxe_modifier = Config.weaponAttribute.typeDamageModifier.greataxe_damageModifier; + static float greathammer_modifier = Config.weaponAttribute.typeDamageModifier.greathammer_damageModifier; + static float chakram_modifier = Config.weaponAttribute.typeDamageModifier.chakram_damageModifier; + static float scythe_modifier = Config.weaponAttribute.typeDamageModifier.scythe_damageModifier; + static float halberd_modifier = Config.weaponAttribute.typeDamageModifier.halberd_damageModifier; + + static float longsword_attackspeed = Config.weaponAttribute.typeAttackSpeed.longsword_attackSpeed; + static float twinblade_attackspeed = Config.weaponAttribute.typeAttackSpeed.twinblade_attackSpeed; + static float rapier_attackspeed = Config.weaponAttribute.typeAttackSpeed.rapier_attackSpeed; + static float sai_attackspeed = Config.weaponAttribute.typeAttackSpeed.sai_attackSpeed; + static float spear_attackspeed = Config.weaponAttribute.typeAttackSpeed.spear_attackSpeed; + static float katana_attackspeed = Config.weaponAttribute.typeAttackSpeed.katana_attackSpeed; + static float glaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.glaive_attackSpeed; + static float warglaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.warglaive_attackSpeed; + static float cutlass_attackspeed = Config.weaponAttribute.typeAttackSpeed.cutlass_attackSpeed; + static float claymore_attackspeed = Config.weaponAttribute.typeAttackSpeed.claymore_attackSpeed; + static float greataxe_attackspeed = Config.weaponAttribute.typeAttackSpeed.greataxe_attackSpeed; + static float greathammer_attackspeed = Config.weaponAttribute.typeAttackSpeed.greathammer_attackSpeed; + static float chakram_attackspeed = Config.weaponAttribute.typeAttackSpeed.chakram_attackSpeed; + static float scythe_attackspeed = Config.weaponAttribute.typeAttackSpeed.scythe_attackSpeed; + static float halberd_attackspeed = Config.weaponAttribute.typeAttackSpeed.halberd_attackSpeed; + static float gobber_modifier = Config.weaponAttribute.materialDamageModifier.gobber_damageModifier.get(); + static float gobber_nether_modifier = Config.weaponAttribute.materialDamageModifier.gobberNether_damageModifier.get(); + static float gobber_end_modifier = Config.weaponAttribute.materialDamageModifier.gobberEnd_damageModifier.get(); /* 1.21 //GOBBER public static final Item GOBBER_LONGSWORD = registerItem( "gobber_compat/gobber/gobber_longsword", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + longsword_modifier, longsword_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + longsword_modifier), longsword_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_TWINBLADE = registerItem( "gobber_compat/gobber/gobber_twinblade", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + twinblade_modifier, twinblade_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + twinblade_modifier), twinblade_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_RAPIER = registerItem( "gobber_compat/gobber/gobber_rapier", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + rapier_modifier, rapier_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + rapier_modifier), rapier_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_KATANA = registerItem( "gobber_compat/gobber/gobber_katana", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + katana_modifier, katana_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + katana_modifier), katana_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_SAI = registerItem( "gobber_compat/gobber/gobber_sai", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + sai_modifier, sai_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + sai_modifier), sai_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_SPEAR = registerItem( "gobber_compat/gobber/gobber_spear", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + spear_modifier, spear_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + spear_modifier), spear_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_GLAIVE = registerItem( "gobber_compat/gobber/gobber_glaive", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + glaive_modifier, glaive_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + glaive_modifier), glaive_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_WARGLAIVE = registerItem( "gobber_compat/gobber/gobber_warglaive", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + warglaive_modifier, warglaive_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + warglaive_modifier), warglaive_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_CUTLASS = registerItem( "gobber_compat/gobber/gobber_cutlass", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + cutlass_modifier, cutlass_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + cutlass_modifier), cutlass_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_CLAYMORE = registerItem( "gobber_compat/gobber/gobber_claymore", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + claymore_modifier, claymore_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + claymore_modifier), claymore_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_GREATHAMMER = registerItem( "gobber_compat/gobber/gobber_greathammer", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + greathammer_modifier, greathammer_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + greathammer_modifier), greathammer_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_GREATAXE = registerItem( "gobber_compat/gobber/gobber_greataxe", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + greataxe_modifier, greataxe_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + greataxe_modifier), greataxe_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_CHAKRAM = registerItem( "gobber_compat/gobber/gobber_chakram", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + chakram_modifier, chakram_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + chakram_modifier), chakram_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_SCYTHE = registerItem( "gobber_compat/gobber/gobber_scythe", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + scythe_modifier, scythe_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + scythe_modifier), scythe_attackspeed, "gobber2:gobber2_ingot")); public static final Item GOBBER_HALBERD = registerItem( "gobber_compat/gobber/gobber_halberd", - new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + halberd_modifier, halberd_attackspeed, + new SimplySwordsSwordItem(ModToolMaterial.GOBBER, (int)(gobber_modifier + halberd_modifier), halberd_attackspeed, "gobber2:gobber2_ingot")); //GOBBER_NETHER public static final Item GOBBER_NETHER_LONGSWORD = registerItem( "gobber_compat/gobber_nether/gobber_nether_longsword", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + longsword_modifier, longsword_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + longsword_modifier), longsword_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_TWINBLADE = registerItem( "gobber_compat/gobber_nether/gobber_nether_twinblade", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + twinblade_modifier, twinblade_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + twinblade_modifier), twinblade_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_RAPIER = registerItem( "gobber_compat/gobber_nether/gobber_nether_rapier", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + rapier_modifier, rapier_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + rapier_modifier), rapier_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_KATANA = registerItem( "gobber_compat/gobber_nether/gobber_nether_katana", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + katana_modifier, katana_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + katana_modifier), katana_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_SAI = registerItem( "gobber_compat/gobber_nether/gobber_nether_sai", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + sai_modifier, sai_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + sai_modifier), sai_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_SPEAR = registerItem( "gobber_compat/gobber_nether/gobber_nether_spear", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + spear_modifier, spear_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + spear_modifier), spear_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_GLAIVE = registerItem( "gobber_compat/gobber_nether/gobber_nether_glaive", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + glaive_modifier, glaive_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + glaive_modifier), glaive_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_WARGLAIVE = registerItem( "gobber_compat/gobber_nether/gobber_nether_warglaive", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + warglaive_modifier, warglaive_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + warglaive_modifier), warglaive_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_CUTLASS = registerItem( "gobber_compat/gobber_nether/gobber_nether_cutlass", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + cutlass_modifier, cutlass_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + cutlass_modifier), cutlass_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_CLAYMORE = registerItem( "gobber_compat/gobber_nether/gobber_nether_claymore", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + claymore_modifier, claymore_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + claymore_modifier), claymore_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_GREATHAMMER = registerItem( "gobber_compat/gobber_nether/gobber_nether_greathammer", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + greathammer_modifier, greathammer_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + greathammer_modifier), greathammer_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_GREATAXE = registerItem( "gobber_compat/gobber_nether/gobber_nether_greataxe", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + greataxe_modifier, greataxe_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + greataxe_modifier), greataxe_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_CHAKRAM = registerItem( "gobber_compat/gobber_nether/gobber_nether_chakram", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + chakram_modifier, chakram_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + chakram_modifier), chakram_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_SCYTHE = registerItem( "gobber_compat/gobber_nether/gobber_nether_scythe", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + scythe_modifier, scythe_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + scythe_modifier), scythe_attackspeed, "gobber2:gobber2_ingot_nether")); public static final Item GOBBER_NETHER_HALBERD = registerItem( "gobber_compat/gobber_nether/gobber_nether_halberd", - new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, gobber_nether_modifier + halberd_modifier, halberd_attackspeed, + new GobberNetherSwordItem(ModToolMaterial.GOBBER_NETHER, (int)(gobber_nether_modifier + halberd_modifier), halberd_attackspeed, "gobber2:gobber2_ingot_nether")); //GOBBER_END public static final Item GOBBER_END_LONGSWORD = registerItem( "gobber_compat/gobber_end/gobber_end_longsword", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + longsword_modifier, longsword_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + longsword_modifier), longsword_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_TWINBLADE = registerItem( "gobber_compat/gobber_end/gobber_end_twinblade", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + twinblade_modifier, twinblade_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + twinblade_modifier), twinblade_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_RAPIER = registerItem( "gobber_compat/gobber_end/gobber_end_rapier", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + rapier_modifier, rapier_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + rapier_modifier), rapier_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_KATANA = registerItem( "gobber_compat/gobber_end/gobber_end_katana", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + katana_modifier, katana_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + katana_modifier), katana_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_SAI = registerItem( "gobber_compat/gobber_end/gobber_end_sai", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + sai_modifier, sai_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + sai_modifier), sai_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_SPEAR = registerItem( "gobber_compat/gobber_end/gobber_end_spear", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + spear_modifier, spear_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + spear_modifier), spear_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_GLAIVE = registerItem( "gobber_compat/gobber_end/gobber_end_glaive", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + glaive_modifier, glaive_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + glaive_modifier), glaive_attackspeed, "gobber2:gobber2_ingot_end")); - public static final Item GOBBER_END_WARGLAIVE = registerItem( "gobber_compat/gobber_end/gobber_end_warglaive", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + warglaive_modifier, warglaive_attackspeed, + public static final Item GOBBER_END_WARGLAIVE = registerItem("gobber_compat/gobber_end/gobber_end_warglaive", + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + warglaive_modifier), warglaive_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_CUTLASS = registerItem( "gobber_compat/gobber_end/gobber_end_cutlass", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + cutlass_modifier, cutlass_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + cutlass_modifier), cutlass_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_CLAYMORE = registerItem( "gobber_compat/gobber_end/gobber_end_claymore", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + claymore_modifier, claymore_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + claymore_modifier), claymore_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_GREATHAMMER = registerItem( "gobber_compat/gobber_end/gobber_end_greathammer", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + greathammer_modifier, greathammer_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + greathammer_modifier), greathammer_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_GREATAXE = registerItem( "gobber_compat/gobber_end/gobber_end_greataxe", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + greataxe_modifier, greataxe_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + greataxe_modifier), greataxe_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_CHAKRAM = registerItem( "gobber_compat/gobber_end/gobber_end_chakram", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + chakram_modifier, chakram_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + chakram_modifier), chakram_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_SCYTHE = registerItem( "gobber_compat/gobber_end/gobber_end_scythe", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + scythe_modifier, scythe_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + scythe_modifier), scythe_attackspeed, "gobber2:gobber2_ingot_end")); public static final Item GOBBER_END_HALBERD = registerItem( "gobber_compat/gobber_end/gobber_end_halberd", - new GobberEndSwordItem(ModToolMaterial.GOBBER_END, gobber_end_modifier + halberd_modifier, halberd_attackspeed, + new GobberEndSwordItem(ModToolMaterial.GOBBER_END, (int)(gobber_end_modifier + halberd_modifier), halberd_attackspeed, "gobber2:gobber2_ingot_end")); - + private static Item registerItem(String name, Item item) { return Registry.register(Registries.ITEM, Identifier.of(SimplySwords.MOD_ID, name), item); @@ -272,4 +240,4 @@ public static void registerModItems() { */ -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index 576c768a..3b6f4484 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -17,12 +17,10 @@ import java.util.Map; import java.util.Scanner; -public class Config { +public final class Config { public static void init() {} - - public static File createFile(String path, String contents, boolean overwrite) { File file = new File(path); if (file.exists() && !overwrite) { @@ -191,5 +189,6 @@ public static void safeValueFetch(String type, String parent) { public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); public static final UniqueEffectsConfig uniqueEffects = ConfigApiJava.registerAndLoadConfig(UniqueEffectsConfig::new); + public static final WeaponAttributesConfig weaponAttribute = ConfigApiJava.registerAndLoadConfig(WeaponAttributesConfig::new); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java index 0c58a204..5a2c2270 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java @@ -8,10 +8,7 @@ @Config(name = SimplySwords.MOD_ID +"_main") @Config.Gui.Background("cloth-config2:transparent") public class ConfigWrapper extends PartitioningSerializer.GlobalData { - @ConfigEntry.Category("loot") - @ConfigEntry.Gui.TransitiveObject - public LootConfigOld loot = new LootConfigOld(); @ConfigEntry.Category("weapon_attributes") @ConfigEntry.Gui.TransitiveObject - public WeaponAttributesConfig weapon_attributes = new WeaponAttributesConfig(); + public WeaponAttributesConfigOld weapon_attributes = new WeaponAttributesConfigOld(); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java index 0c1af154..d4ec8878 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java @@ -5,12 +5,8 @@ import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; -import me.shedaniel.autoconfig.annotation.ConfigEntry; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.power.GemPower; import net.sweenus.simplyswords.power.powers.ActiveDefencePower; import net.sweenus.simplyswords.power.powers.FloatPower; import net.sweenus.simplyswords.power.powers.FreezePower; @@ -34,8 +30,8 @@ public GemPowersConfig() { super(Identifier.of(SimplySwords.MOD_ID, "gem_powers")); } - @SuppressWarnings({"deprecation", "unchecked"}) - public ValidatedSet disabledPowers = ValidatedIdentifier.ofRegistryKey((RegistryKey>) GemPowerRegistry.REGISTRY.key()).toSet(); + @SuppressWarnings("deprecation") + public ValidatedSet disabledPowers = ValidatedIdentifier.ofRegistryKey(GemPowerRegistry.REGISTRY.key()).toSet(); public ActiveDefencePower.Settings activeDefence = new ActiveDefencePower.Settings(); public FloatPower.Settings floating = new FloatPower.Settings(); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java deleted file mode 100644 index 24648ac5..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfigOld.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -@Config(name = "loot") -public class LootConfigOld implements ConfigData { - - @ConfigEntry.Gui.PrefixText - @ConfigEntry.Gui.Tooltip - public boolean enableLootDrops = true; - @ConfigEntry.Gui.Tooltip - public boolean enableLootInVillages = false; - public boolean enableTheWatcher = true; - @ConfigEntry.Gui.Tooltip - public float standardLootTableWeight = 0.01f; - @ConfigEntry.Gui.Tooltip - public float rareLootTableWeight = 0.004f; - @ConfigEntry.Gui.Tooltip - public float runicLootTableWeight = 0.007f; - @ConfigEntry.Gui.Tooltip - public float uniqueLootTableWeight = 0.001f; - @ConfigEntry.Gui.Tooltip - public boolean enableContainedRemnants = true; - public boolean enableWatchingWarglaive = true; - public boolean enableLongswordOfThePlague = true; - public boolean enableSwordOnAStick = true; - public boolean enableBramblethorn = true; - public boolean enableStormsEdge = true; - public boolean enableStormbringer = true; - public boolean enableMjolnir = true; - public boolean enableEmberblade = true; - public boolean enableHearthflame = true; - public boolean enableTwistedBlade = true; - public boolean enableSoulrender = true; - public boolean enableSoulpyre = true; - public boolean enableSoulkeeper = true; - public boolean enableSoulstealer = true; - public boolean enableFrostfall = true; - public boolean enableMoltenEdge = true; - public boolean enableLivyatan = true; - public boolean enableIcewhisper = true; - public boolean enableArcanethyst = true; - public boolean enableThunderbrand = true; - public boolean enableBrimstone = true; - public boolean enableSlumberingLichblade = true; - public boolean enableShadowsting = true; - public boolean enableDormantRelic = true; - public boolean enableWhisperwind = true; - public boolean enableEmberlash = true; - public boolean enableWaxweaver = true; - public boolean enableHiveheart = true; - public boolean enableStarsEdge = true; - public boolean enableWickpiercer = true; - public boolean enableTempest = true; - public boolean enableFlamewind = true; - public boolean enableRibboncleaver = true; - public boolean enableCaelestis = true; - - - -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java deleted file mode 100644 index 0c3b04fb..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/RunicEffectsConfig.java +++ /dev/null @@ -1,107 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -@Config(name = "runic_effects") -public class RunicEffectsConfig implements ConfigData { - - /*@ConfigEntry.Gui.PrefixText - public boolean enableActiveDefence = true; - public boolean enableFloat = true; - public boolean enableGreaterFloat = true; - public boolean enableFreeze = true; - public boolean enableShielding = true; - public boolean enableGreaterShielding = true; - public boolean enableSlow = true; - public boolean enableGreaterSlow = true; - public boolean enableStoneskin = true; - public boolean enableGreaterStoneskin = true; - public boolean enableSwiftness = true; - public boolean enableGreaterSwiftness = true; - public boolean enableTrailblaze = true; - public boolean enableGreaterTrailblaze = true; - public boolean enableWeaken = true; - public boolean enableGreaterWeaken = true; - public boolean enableZephyr = true; - public boolean enableGreaterZephyr = true; - public boolean enableFrostWard = true; - public boolean enableWildfire = true; - public boolean enableUnstable = true; - public boolean enableMomentum = true; - public boolean enableGreaterMomentum = true; - public boolean enableImbued = true; - public boolean enableGreaterImbued = true; - public boolean enablePincushion = true; - public boolean enableGreaterPincushion = true; - public boolean enableWard = true; - public boolean enableImmolate = true;*/ - - - @ConfigEntry.Gui.PrefixText - public float swiftnessChance = 15f; - public float swiftnessDuration= 300f; - - @ConfigEntry.Gui.PrefixText - public float slowChance = 50f; - public float slowDuration= 50f; - - @ConfigEntry.Gui.PrefixText - public float poisonChance = 15f; - public float poisonDuration = 150f; - - @ConfigEntry.Gui.PrefixText - public float freezeChance = 15f; - public float freezeDuration = 120f; - - @ConfigEntry.Gui.PrefixText - public float wildfireChance = 10f; - public float wildfireDuration = 180f; - public float wildfireRadius = 10; - - @ConfigEntry.Gui.PrefixText - public float floatChance = 15f; - public float floatDuration = 50f; - - @ConfigEntry.Gui.PrefixText - public float zephyrChance = 15f; - public float zephyrDuration = 180f; - - @ConfigEntry.Gui.PrefixText - public float shieldingChance = 15f; - public float shieldingDuration = 120f; - - @ConfigEntry.Gui.PrefixText - public float stoneskinChance = 15f; - public float stoneskinDuration = 60f; - - @ConfigEntry.Gui.PrefixText - public float trailblazeChance = 15f; - public float trailblazeDuration = 120; - - @ConfigEntry.Gui.PrefixText - public float weakenChance = 15f; - public float weakenDuration = 120f; - - @ConfigEntry.Gui.PrefixText - public float unstableFrequency = 140f; - public float unstableDuration = 140f; - - @ConfigEntry.Gui.PrefixText - public float activeDefenceFrequency = 20f; - public float activeDefenceRadius = 5f; - - @ConfigEntry.Gui.PrefixText - public float frostWardFrequency = 20f; - public float frostWardRadius = 5f; - public float frostWardDuration = 60f; - - @ConfigEntry.Gui.PrefixText - public float momentumCooldown = 140f; - - @ConfigEntry.Gui.PrefixText - public float imbuedChance = 15; - - -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/SimplySwordsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/SimplySwordsConfig.java deleted file mode 100644 index 7553a992..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/SimplySwordsConfig.java +++ /dev/null @@ -1,99 +0,0 @@ -package net.sweenus.simplyswords.config; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import java.io.File; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -public class SimplySwordsConfig { - private static final HashMap LOOT_OPTIONS = new LinkedHashMap<>(); - - public static float getLootModifiers(String key) { - if (!LOOT_OPTIONS.containsKey(key)) { - //System.out.println(key); - return 0f; - } - return LOOT_OPTIONS.get(key); - } - - public static boolean getLootList (String id) { - if (!LOOT_OPTIONS.isEmpty()) { - //System.out.println(id); - return LOOT_OPTIONS.toString().contains(id); - } - return false; - } - - public static void init() { - - LOOT_OPTIONS.put("minecraft:entities/wither", 0.05f); - LOOT_OPTIONS.put("minecraft:entities/ender_dragon", 0.5f); - LOOT_OPTIONS.put("minecraft:chests/ruined_portal", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_armorer", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_butcher", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_cartographer", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_desert_house", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_fisher", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_fletcher", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_mason", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_plains_house", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_savanna_house", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_shepard", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_snowy_house", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_taiga_house", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_tannery", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_temple", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_toolsmith", 0f); - LOOT_OPTIONS.put("minecraft:chests/village/village_weaponsmith", 0f); - - } - - public static void loadConfig() { - //System.out.println("Loading common Simply Swords config"); - JsonObject json; - json = Config.getJsonObject(Config.readFile(new File("config/simplyswords_extra/loot_config.json5"))); - for (Map.Entry entry : json.entrySet()) { - LOOT_OPTIONS.put(entry.getKey(), entry.getValue().getAsFloat()); - } - } - - - public static void generateConfigs(boolean overwrite) { - //System.out.println("Generating common Simply Swords config"); - StringBuilder config; - int i; - config = new StringBuilder("{\n"); - i = 0; - for (String key : LOOT_OPTIONS.keySet()) { - if (i == 0) { - config.append("// --------------------------------------------- LOOT CONFIGURATION ----------------------------------------------------------------- \n"); - config.append("// This config allows for the tweaking of loot injection for UNIQUE weapons. \n"); - config.append("// Standard iron > diamond gear, and Runic Tablets, are controlled by the loot modifiers in the general_config, not here. \n"); - config.append("// ---------------------------------------------------------------------------------------------------------------------------------- \n"); - config.append("// --------------------------------------------- How does it work? ------------------------------------------------------------------ \n"); - config.append("// If 'add_weapons_to_loot_tables' is enabled in the simplyswords_main config, Simply Swords will attempt to inject its loot into \n"); - config.append("// any loot table that contains 'chests' in its filepath. This includes loot tables from other mods.\n"); - config.append("// Any values provided in this config will override the aforementioned process, acting as both a whitelist, and a blacklist.\n"); - config.append("\n"); - config.append("// Each line must be made up of a string containing the namespace, path, and filename, in addition to a float value. \n"); - config.append("// The float value provided will determine the chance of the loot appearing in the loot table. Where 0.0 is %0, and 1.0 is %100.\n"); - config.append("// If the float value provided is 0.0 the items will be blacklisted from this loot table and skipped entirely by the loot injection.\n"); - config.append("\n"); - config.append("// Items can also be injected into entity loot tables, as seen in the Wither example below.\n"); - config.append("// ---------------------------------------------------------------------------------------------------------------------------------- \n"); - config.append("\n"); - } - config.append(" \"").append(key).append("\": ").append(LOOT_OPTIONS.get(key)); - ++i; - if (i < LOOT_OPTIONS.size()) { - config.append(","); - } - config.append("\n"); - } - config.append("}"); - Config.createFile("config/simplyswords_extra/loot_config.json5", config.toString(), overwrite); - } -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index 9ad8e9db..9392b9f9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -54,44 +54,44 @@ public UniqueEffectsConfig() { public float abilityAbsorptionCap = 20f; - public WatcherSwordItem.EffectSettings watcher = new WatcherSwordItem.EffectSettings(); - public StealSwordItem.EffectSettings steal = new StealSwordItem.EffectSettings(); - public SoulkeeperSwordItem.EffectSettings soulkeeper = new SoulkeeperSwordItem.EffectSettings(); - public SoulrenderSwordItem.EffectSettings soulRend = new SoulrenderSwordItem.EffectSettings(); - public TwistedBladeItem.EffectSettings ferocity = new TwistedBladeItem.EffectSettings(); - public EmberIreSwordItem.EffectSettings emberIre = new EmberIreSwordItem.EffectSettings(); - public HearthflameSwordItem.EffectSettings volcanicFury = new HearthflameSwordItem.EffectSettings(); - public StormSwordItem.EffectSettings storm = new StormSwordItem.EffectSettings(); - public PlagueSwordItem.EffectSettings plague = new PlagueSwordItem.EffectSettings(); - public BrimstoneClaymoreItem.EffectSettings brimstone = new BrimstoneClaymoreItem.EffectSettings(); + public HarbingerSwordItem.EffectSettings abyssalStandard = new HarbingerSwordItem.EffectSettings(); + public ArcanethystSwordItem.EffectSettings arcaneAssault = new ArcanethystSwordItem.EffectSettings(); + public CaelestisSwordItem.EffectSettings astralShift = new CaelestisSwordItem.EffectSettings(); public BrambleSwordItem.EffectSettings bramble = new BrambleSwordItem.EffectSettings(); - public SoulPyreSwordItem.EffectSettings soultether = new SoulPyreSwordItem.EffectSettings(); + public BrimstoneClaymoreItem.EffectSettings brimstone = new BrimstoneClaymoreItem.EffectSettings(); + public StarsEdgeSwordItem.EffectSettings celestialSurge = new StarsEdgeSwordItem.EffectSettings(); + public EmberIreSwordItem.EffectSettings emberIre = new EmberIreSwordItem.EffectSettings(); + public FlamewindSwordItem.EffectSettings emberstorm = new FlamewindSwordItem.EffectSettings(); + public EnigmaSwordItem.EffectSettings enigma = new EnigmaSwordItem.EffectSettings(); + public WhisperwindSwordItem.EffectSettings fatalFlicker = new WhisperwindSwordItem.EffectSettings(); + public TwistedBladeItem.EffectSettings ferocity = new TwistedBladeItem.EffectSettings(); + public WickpiercerSwordItem.EffectSettings flickerFury = new WickpiercerSwordItem.EffectSettings(); public FrostfallSwordItem.EffectSettings frostFury = new FrostfallSwordItem.EffectSettings(); - public MoltenEdgeSwordItem.EffectSettings moltenRoar = new MoltenEdgeSwordItem.EffectSettings(); public LivyatanSwordItem.EffectSettings frostShatter = new LivyatanSwordItem.EffectSettings(); + public HiveheartSwordItem.EffectSettings hivemind = new HiveheartSwordItem.EffectSettings(); + public MagibladeSwordItem.EffectSettings magiblade = new MagibladeSwordItem.EffectSettings(); + public MagispearSwordItem.EffectSettings magislam = new MagispearSwordItem.EffectSettings(); + public MagiscytheSwordItem.EffectSettings magistorm = new MagiscytheSwordItem.EffectSettings(); + public MoltenEdgeSwordItem.EffectSettings moltenRoar = new MoltenEdgeSwordItem.EffectSettings(); public IcewhisperSwordItem.EffectSettings permafrost = new IcewhisperSwordItem.EffectSettings(); - public ArcanethystSwordItem.EffectSettings arcaneAssault = new ArcanethystSwordItem.EffectSettings(); - public ThunderbrandSwordItem.EffectSettings thunderBlitz = new ThunderbrandSwordItem.EffectSettings(); - public StormsEdgeSwordItem.EffectSettings stormJolt = new StormsEdgeSwordItem.EffectSettings(); - public LichbladeSwordItem.EffectSettings soulAnguish = new LichbladeSwordItem.EffectSettings(); - public StormbringerSwordItem.EffectSettings shockDeflect = new StormbringerSwordItem.EffectSettings(); - public ShadowstingSwordItem.EffectSettings shadowmist = new ShadowstingSwordItem.EffectSettings(); - public HarbingerSwordItem.EffectSettings abyssalStandard = new HarbingerSwordItem.EffectSettings(); + public PlagueSwordItem.EffectSettings plague = new PlagueSwordItem.EffectSettings(); + public RibboncleaverSwordItem.EffectSettings ribbonwrath = new RibboncleaverSwordItem.EffectSettings(); public SunfireSwordItem.EffectSettings righteousStandard = new SunfireSwordItem.EffectSettings(); - public WhisperwindSwordItem.EffectSettings fatalFlicker = new WhisperwindSwordItem.EffectSettings(); + public ShadowstingSwordItem.EffectSettings shadowmist = new ShadowstingSwordItem.EffectSettings(); + public StormbringerSwordItem.EffectSettings shockDeflect = new StormbringerSwordItem.EffectSettings(); public EmberlashSwordItem.EffectSettings smoulder = new EmberlashSwordItem.EffectSettings(); - public WaxweaverSwordItem.EffectSettings waxweave = new WaxweaverSwordItem.EffectSettings(); - public HiveheartSwordItem.EffectSettings hivemind = new HiveheartSwordItem.EffectSettings(); - public StarsEdgeSwordItem.EffectSettings celestialSurge = new StarsEdgeSwordItem.EffectSettings(); - public WickpiercerSwordItem.EffectSettings flickerFury = new WickpiercerSwordItem.EffectSettings(); + public LichbladeSwordItem.EffectSettings soulAnguish = new LichbladeSwordItem.EffectSettings(); + public SoulkeeperSwordItem.EffectSettings soulkeeper = new SoulkeeperSwordItem.EffectSettings(); + public SoulrenderSwordItem.EffectSettings soulRend = new SoulrenderSwordItem.EffectSettings(); + public SoulPyreSwordItem.EffectSettings soultether = new SoulPyreSwordItem.EffectSettings(); + public StealSwordItem.EffectSettings steal = new StealSwordItem.EffectSettings(); + public StormSwordItem.EffectSettings storm = new StormSwordItem.EffectSettings(); + public StormsEdgeSwordItem.EffectSettings stormJolt = new StormsEdgeSwordItem.EffectSettings(); + public ThunderbrandSwordItem.EffectSettings thunderBlitz = new ThunderbrandSwordItem.EffectSettings(); + public HearthflameSwordItem.EffectSettings volcanicFury = new HearthflameSwordItem.EffectSettings(); public TempestSwordItem.EffectSettings vortex = new TempestSwordItem.EffectSettings(); - public FlamewindSwordItem.EffectSettings emberstorm = new FlamewindSwordItem.EffectSettings(); - public RibboncleaverSwordItem.EffectSettings ribbonwrath = new RibboncleaverSwordItem.EffectSettings(); - public MagiscytheSwordItem.EffectSettings magistorm = new MagiscytheSwordItem.EffectSettings(); - public EnigmaSwordItem.EffectSettings enigma = new EnigmaSwordItem.EffectSettings(); - public MagibladeSwordItem.EffectSettings magiblade = new MagibladeSwordItem.EffectSettings(); - public MagispearSwordItem.EffectSettings magislam = new MagispearSwordItem.EffectSettings(); - public CaelestisSwordItem.EffectSettings astralShift = new CaelestisSwordItem.EffectSettings(); + public WatcherSwordItem.EffectSettings watcher = new WatcherSwordItem.EffectSettings(); + public WaxweaverSwordItem.EffectSettings waxweave = new WaxweaverSwordItem.EffectSettings(); // eldritch end compat public ValidatedCondition voidcaller = new ValidatedAny<>(new DreadtideSwordItem.EffectSettings()) diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java deleted file mode 100644 index 1e3b4407..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfigOld.java +++ /dev/null @@ -1,267 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.fzzyhmstrs.fzzy_config.config.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; -import net.minecraft.util.Identifier; -import net.sweenus.simplyswords.SimplySwords; - -public class UniqueEffectsConfigOld extends Config { - - public UniqueEffectsConfigOld() { - super(Identifier.of(SimplySwords.MOD_ID, "unique_effects")); - } - - @ConfigEntry.Gui.Tooltip - public float abilityAbsorptionCap = 20f; - - @ConfigEntry.Gui.PrefixText - public float watcherChance = 5f; - public float watcherRestoreAmount = 0.5f; - public float watcherRadius = 8f; - public float omenChance = 5f; - public float omenAbsorptionCap = 20f; - public float omenInstantKillThreshold = 0.25f; - - @ConfigEntry.Gui.PrefixText - public float stealChance = 25f; - public float stealDuration = 400f; - public float stealInvisDuration = 120f; - public float stealBlindDuration = 200f; - public float stealRadius = 30f; - public float stealSpellScaling = 2.6f; - - @ConfigEntry.Gui.PrefixText - public float soulMeldChance = 75f; - public float soulMeldDuration = 250f; - public float soulMeldRadius = 5f; - - @ConfigEntry.Gui.PrefixText - public float soulrendChance = 85f; - public float soulrendDuration = 500f; - public float soulrendDamageMulti = 3f; - public float soulrendHealMulti = 0.5f; - public float soulrendRadius = 10f; - public float soulrendMaxStacks = 8f; - public float soulrendDamageSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float ferocityChance = 75f; - public float ferocityDuration = 100f; - public float ferocityMaxStacks = 15f; - public float ferocityStrengthTier = 2f; - - @ConfigEntry.Gui.PrefixText - public float emberIreChance = 30f; - public float emberIreDuration = 150f; - - @ConfigEntry.Gui.PrefixText - public float volcanicFuryChance = 25f; - public float volcanicFuryRadius = 3f; - public float volcanicFuryCooldown = 300f; - public float volcanicFuryDamage = 3f; - public float volcanicFurySpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float stormChance = 15f; - public float stormRadius = 10f; - public float stormCooldown = 700f; - public float stormFrequency = 10f; - public float stormDuration = 200f; - - @ConfigEntry.Gui.PrefixText - public float plagueChance = 55f; - - @ConfigEntry.Gui.PrefixText - public float brimstoneChance = 15f; - - @ConfigEntry.Gui.PrefixText - public float brambleChance = 45f; - - @ConfigEntry.Gui.PrefixText - public float soultetherRange = 32f; - public float soultetherRadius = 8f; - public float soultetherDuration = 120f; - public float soultetherIgniteDuration = 120f; - public float soultetherResistanceDuration = 60f; - - @ConfigEntry.Gui.PrefixText - public float frostFuryCooldown = 380f; - public float frostFuryRadius = 3f; - public float frostFuryDamage = 18f; - public float frostFuryChance = 15f; - public float frostFuryDuration = 80f; - public float frostFurySpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float moltenRoarCooldown = 320f; - public float moltenRoarRadius = 5f; - public float moltenRoarKnockbackStrength = 5f; - public float moltenRoarChance = 15f; - public float moltenRoarDuration = 100f; - - @ConfigEntry.Gui.PrefixText - public float frostShatterRadius = 3f; - public float frostShatterDamage = 18f; - public float frostShatterChance = 15f; - public float frostShatterDuration = 80f; - public float frostShatterSpellScaling = 1.7f; - - @ConfigEntry.Gui.PrefixText - public float permafrostRadius = 4f; - public float permafrostDamage = 1f; - public float permafrostCooldown = 600f; - public float permafrostDuration = 200f; - public float permafrostSpellScaling = 0.9f; - - @ConfigEntry.Gui.PrefixText - public float arcaneAssaultRadius = 6f; - public float arcaneAssaultDamage = 1f; - public float arcaneAssaultCooldown = 220; - public float arcaneAssaultChance = 25f; - public float arcaneAssaultDuration = 120f; - public float arcaneAssaultSpellScaling = 1.4f; - - @ConfigEntry.Gui.PrefixText - public float thunderBlitzRadius = 2f; - public float thunderBlitzDamage = 3f; - public float thunderBlitzCooldown = 250; - public float thunderBlitzChance = 15f; - public float thunderBlitzSpellScaling = 1.7f; - - @ConfigEntry.Gui.PrefixText - public float stormJoltCooldown = 100f; - public float stormJoltChance = 15f; - - @ConfigEntry.Gui.PrefixText - public float soulAnguishRadius = 3f; - public float soulAnguishAbsorptionCap = 8f; - public float soulAnguishDamage = 4f; - public float soulAnguishCooldown = 700; - public float soulAnguishDuration = 200f; - public float soulAnguishHeal = 0.5f; - public float soulAnguishRange = 22f; - public float soulAnguishSpellScaling = 1.6f; - - @ConfigEntry.Gui.PrefixText - public float shockDeflectBlockDuration = 35f; - public float shockDeflectDamage = 12f; - public float shockDeflectCooldown = 90; - public float shockDeflectParryDuration = 10f; - public float shockDeflectSpellScaling = 2.3f; - - @ConfigEntry.Gui.PrefixText - public float shadowmistCooldown = 200f; - public float shadowmistChance = 25f; - public float shadowmistDamageMulti = 0.8f; - public float shadowmistBlindDuration = 60f; - public float shadowmistRadius = 4f; - - @ConfigEntry.Gui.PrefixText - public float abyssalStandardCooldown = 700; - public float abyssalStandardChance = 15f; - public float abyssalStandardDamage = 3f; - public float abyssalStandardSpellScaling = 1.2f; - - @ConfigEntry.Gui.PrefixText - public float righteousStandardCooldown = 700f; - public float righteousStandardChance = 15f; - public float righteousStandardDamage = 3f; - public float righteousStandardSpellScaling = 1.1f; - public float righteousStandardSpellScalingHeal = 1.3f; - - @ConfigEntry.Gui.PrefixText - public float fatalFlickerCooldown = 175f; - public float fatalFlickerChance = 15f; - public float fatalFlickerRadius = 3f; - public float fatalFlickerMaxStacks = 99f; - public float fatalFlickerDashVelocity = 3f; - - @ConfigEntry.Gui.PrefixText - public float smoulderCooldown = 80f; - public float smoulderMaxStacks = 5f; - public float smoulderHeal = 15f; - public float smoulderSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float waxweaveCooldown = 1200f; - public float waxweaveMaxStacks = 3f; - - @ConfigEntry.Gui.PrefixText - public float hivemindCooldown = 60f; - public float hivemindDuration = 450f; - public float hivemindDamage = 1.1f; - - @ConfigEntry.Gui.PrefixText - public float celestialSurgeCooldown = 120f; - public float celestialSurgeDuration = 120f; - public float celestialSurgeStacks = 6f; - public float celestialSurgeDamageModifier = 0.40f; - public float celestialSurgeLifestealModifier = 0.10f; - - @ConfigEntry.Gui.PrefixText - public float flickerFuryCooldown = 220f; - public float flickerFuryDuration = 40f; - public float flickerFuryDamage = 1.0f; - - @ConfigEntry.Gui.PrefixText - public float vortexDuration = 1200f; - public float vortexMaxSize = 30f; - public float vortexMaxStacks = 10f; - public float vortexSpellScaling = 0.3f; - - @ConfigEntry.Gui.PrefixText - public float voidcallerDuration = 250f; - public float voidcallerStartingTickFrequency = 12f; - public float voidcallerDamageModifier = 1.0f; - public float voidcallerCorruptionFrequency = 60f; - public float voidcallerCorruptionPerTick = 1.0f; - public float voidcallerCorruptionDuration = 1200f; - public float voidcallerCorruptionMax = 100f; - - @ConfigEntry.Gui.PrefixText - public float emberstormSpreadCap = 6f; - public float emberstormDamage = 5f; - public float emberstormDetonationDamage = 15f; - public float emberstormCooldown = 980f; - public float emberstormMaxHaste = 10f; - public float emberstormSpellScaling = 0.4f; - - @ConfigEntry.Gui.PrefixText - public float ribbonwrathCooldown = 40f; - public float ribbonwrathResilienceAmplifier = 1f; - public float ribbonwrathDamageBonusPercent = 0.95f; - - @ConfigEntry.Gui.PrefixText - public float magistormCooldown = 980f; - public float magistormDuration = 400f; - public float magistormRadius = 4f; - public float magistormDamage = 3f; - public float magistormRepairChance = 0.25f; - public float magistormSpellScaling = 0.5f; - - @ConfigEntry.Gui.PrefixText - public float enigmaCooldown = 800f; - public float enigmaDecayRate = 2f; - public float enigmaChaseRadius = 16f; - - @ConfigEntry.Gui.PrefixText - public float magibladeCooldown = 35; - public float magibladeSonicDistance = 16f; - public float magibladeDamageModifier = 0.7f; - public float magibladeRepelChance = 55f; - public float magibladeRepelRadius = 4f; - - @ConfigEntry.Gui.PrefixText - public float magislamCooldown = 140; - public float magislamRadius = 4f; - public float magislamDamageModifier = 2.0f; - public float magislamMagicChance = 35f; - public float magislamMagicModifier = 0.5f; - - @ConfigEntry.Gui.PrefixText - public float astralShiftCooldown = 420; - public float astralShiftDuration = 100f; - public float astralShiftDamageModifier = 1.0f; - public float astralShiftDamageMax = 300f; - public float astralShiftChance = 5f; -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java index 43a7fed7..9fae94e2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java @@ -1,177 +1,208 @@ package net.sweenus.simplyswords.config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -@Config(name = "weapon_attributes") -public class WeaponAttributesConfig implements ConfigData { - - @ConfigEntry.Gui.PrefixText - public float longsword_positiveDamageModifier = 0.0f; - public float twinblade_positiveDamageModifier = 0.0f; - public float rapier_positiveDamageModifier = 0.0f; - public float katana_positiveDamageModifier = 0.0f; - public float sai_positiveDamageModifier = 0.0f; - public float spear_positiveDamageModifier = 0.0f; - public float glaive_positiveDamageModifier = 0.0f; - public float warglaive_positiveDamageModifier = 0.0f; - public float cutlass_positiveDamageModifier = 0.0f; - public float claymore_positiveDamageModifier = 2.0f; - public float greataxe_positiveDamageModifier = 3.0f; - public float greathammer_positiveDamageModifier = 4.0f; - public float chakram_positiveDamageModifier = 0.0f; - public float scythe_positiveDamageModifier = 1.0f; - public float halberd_positiveDamageModifier = 3.0f; - - @ConfigEntry.Gui.PrefixText - public float longsword_negativeDamageModifier = 0.0f; - public float twinblade_negativeDamageModifier = 0.0f; - public float rapier_negativeDamageModifier = 1.0f; - public float katana_negativeDamageModifier = 0.0f; - public float sai_negativeDamageModifier = 3.0f; - public float spear_negativeDamageModifier = 0.0f; - public float glaive_negativeDamageModifier = 0.0f; - public float warglaive_negativeDamageModifier = 0.0f; - public float cutlass_negativeDamageModifier = 0.0f; - public float claymore_negativeDamageModifier = 0.0f; - public float greataxe_negativeDamageModifier = 0.0f; - public float greathammer_negativeDamageModifier = 0.0f; - public float chakram_negativeDamageModifier = 1.0f; - public float scythe_negativeDamageModifier = 0.0f; - public float halberd_negativeDamageModifier = 0.0f; - - @ConfigEntry.Gui.PrefixText - public float iron_damageModifier = 3.0f; - public float gold_damageModifier = 3.0f; - public float diamond_damageModifier = 3.0f; - public float netherite_damageModifier = 3.0f; - public float runic_damageModifier = 3.0f; - public float adamantite_damageModifier = 3.0f; - public float aquarium_damageModifier = 3.0f; - public float banglum_damageModifier = 3.0f; - public float carmot_damageModifier = 3.0f; - public float kyber_damageModifier = 3.0f; - public float mythril_damageModifier = 3.0f; - public float orichalcum_damageModifier = 3.0f; - public float durasteel_damageModifier = 3.0f; - public float osmium_damageModifier = 3.0f; - public float prometheum_damageModifier = 3.0f; - public float quadrillum_damageModifier = 3.0f; - public float runite_damageModifier = 3.0f; - public float starPlatinum_damageModifier = 3.0f; - public float bronze_damageModifier = 3.0f; - public float copper_damageModifier = 3.0f; - public float steel_damageModifier = 3.0f; - public float palladium_damageModifier = 3.0f; - public float stormyx_damageModifier = 3.0f; - public float celestium_damageModifier = 3.0f; - public float metallurgium_damageModifier = 3.0f; - public float gobber_damageModifier = 1.0f; - public float gobberNether_damageModifier = 3.0f; - public float gobberEnd_damageModifier = 6.0f; - - @ConfigEntry.Gui.PrefixText - public float longsword_attackSpeed = -2.4f; - public float twinblade_attackSpeed = -2.0f; - public float rapier_attackSpeed = -1.8f; - public float katana_attackSpeed = -2.0f; - public float sai_attackSpeed = -1.5f; - public float spear_attackSpeed = -2.7f; - public float glaive_attackSpeed = -2.6f; - public float warglaive_attackSpeed = -2.2f; - public float cutlass_attackSpeed = -2.0f; - public float claymore_attackSpeed = -2.8f; - public float greataxe_attackSpeed = -3.1f; - public float greathammer_attackSpeed = -3.2f; - public float chakram_attackSpeed = -3.0f; - public float scythe_attackSpeed = -2.7f; - public float halberd_attackSpeed = -2.8f; - - @ConfigEntry.Gui.PrefixText - public float brimstone_damageModifier = 6.0f; - public float thewatcher_damageModifier = 6.0f; - public float stormsedge_damageModifier = 3.0f; - public float stormbringer_damageModifier = 3.0f; - public float swordonastick_damageModifier = 5.0f; - public float bramblethorn_damageModifier = 3.0f; - public float watchingwarglaive_damageModifier = 3.0f; - public float longswordofplague_damageModifier = 3.0f; - public float emberblade_damageModifier = 3.0f; - public float hearthflame_damageModifier = 8.0f; - public float soulkeeper_damageModifier = 8.0f; - public float twistedblade_damageModifier = 4.0f; - public float soulstealer_damageModifier = 0.0f; - public float soulrender_damageModifier = 4.0f; - public float mjolnir_damageModifier = 3.0f; - public float soulpyre_damageModifier = 7.0f; - public float frostfall_damageModifier = 5.0f; - public float moltenedge_damageModifier = 4.0f; - public float livyatan_damageModifier = 4.0f; - public float icewhisper_damageModifier = 7.0f; - public float arcanethyst_damageModifier = 7.0f; - public float thunderbrand_damageModifier = 7.0f; - public float lichblade_damageModifier = 7.0f; - public float shadowsting_damageModifier = -2.0f; - public float sunfire_damageModifier = 3.0f; - public float harbinger_damageModifier = 3.0f; - public float whisperwind_damageModifier = 3.0f; - public float emberlash_damageModifier = 0.0f; - public float waxweaver_damageModifier = 6.0f; - public float hiveheart_damageModifier = 7.0f; - public float starsedge_damageModifier = 3.0f; - public float wickpiercer_damageModifier = 4.0f; - public float dreadtide_damageModifier = 3.0f; - public float tempest_damageModifier = 0.0f; - public float flamewind_damageModifier = 3.0f; - public float ribboncleaver_damageModifier = 7.0f; - public float magiscythe_damageModifier = 4.0f; - public float enigma_damageModifier = 7.0f; - public float magispear_damageModifier = 4.0f; - public float magiblade_damageModifier = 3.0f; - public float caelestis_damageModifier = 6.0f; - - @ConfigEntry.Gui.PrefixText - public float brimstone_attackSpeed = -2.8f; - public float thewatcher_attackSpeed = -2.8f; - public float stormsedge_attackSpeed = -2.0f; - public float stormbringer_attackSpeed = -2.4f; - public float swordonastick_attackSpeed = -2.6f; - public float bramblethorn_attackSpeed = -1.8f; - public float watchingwarglaive_attackSpeed = -2.2f; - public float longswordofplague_attackSpeed = -2.4f; - public float emberblade_attackSpeed = -2.4f; - public float hearthflame_attackSpeed = -3.2f; - public float soulkeeper_attackSpeed = -2.9f; - public float twistedblade_attackSpeed = -2.6f; - public float soulstealer_attackSpeed = -1.5f; - public float soulrender_attackSpeed = -2.4f; - public float mjolnir_attackSpeed = -3.0f; - public float soulpyre_attackSpeed = -3.0f; - public float frostfall_attackSpeed = -2.5f; - public float moltenedge_attackSpeed = -2.1f; - public float livyatan_attackSpeed = -2.1f; - public float icewhisper_attackSpeed = -2.7f; - public float arcanethyst_attackSpeed = -2.7f; - public float thunderbrand_attackSpeed = -2.7f; - public float lichblade_attackSpeed = -3.1f; - public float shadowsting_attackSpeed = -1.7f; - public float sunfire_attackSpeed = -2.4f; - public float harbinger_attackSpeed = -2.4f; - public float whisperwind_attackSpeed = -2.0f; - public float emberlash_attackSpeed = -1.5f; - public float waxweaver_attackSpeed = -2.9f; - public float hiveheart_attackSpeed = -3.0f; - public float starsedge_attackSpeed = -2.0f; - public float wickpiercer_attackSpeed = -2.1f; - public float dreadtide_attackSpeed = -2.0f; - public float tempest_attackSpeed = -2.5f; - public float flamewind_attackSpeed = -2.6f; - public float ribboncleaver_attackSpeed = -3.2f; - public float magiscythe_attackSpeed = -2.4f; - public float enigma_attackSpeed = -3.2f; - public float magispear_attackSpeed = -2.5f; - public float magiblade_attackSpeed = -2.0f; - public float caelestis_attackSpeed = -2.9f; +import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.config.ConfigSection; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.sweenus.simplyswords.SimplySwords; + +public class WeaponAttributesConfig extends Config { + + public WeaponAttributesConfig() { + super(Identifier.of(SimplySwords.MOD_ID, "weapon_attributes")); + } + + public TypeDamageModifier typeDamageModifier = new TypeDamageModifier(); + public MaterialDamageModifier materialDamageModifier = new MaterialDamageModifier(); + public TypeAttackSpeed typeAttackSpeed = new TypeAttackSpeed(); + public UniqueDamageModifier uniqueDamageModifier = new UniqueDamageModifier(); + public UniqueAttackSpeed uniqueAttackSpeed = new UniqueAttackSpeed(); + + public static class TypeDamageModifier extends ConfigSection { + public float chakram_damageModifier = -1.0f; + public float claymore_damageModifier = 2.0f; + public float cutlass_damageModifier = 0.0f; + public float glaive_damageModifier = 0.0f; + public float greataxe_damageModifier = 3.0f; + public float greathammer_damageModifier = 4.0f; + public float halberd_damageModifier = 3.0f; + public float katana_damageModifier = 0.0f; + public float longsword_damageModifier = 0.0f; + public float rapier_damageModifier = -1.0f; + public float sai_damageModifier = -3.0f; + public float scythe_damageModifier = 1.0f; + public float spear_damageModifier = 0.0f; + public float twinblade_damageModifier = 0.0f; + public float warglaive_damageModifier = 0.0f; + } + + public static class MaterialDamageModifier extends ConfigSection { + public float iron_damageModifier = 3.0f; + public float gold_damageModifier = 3.0f; + public float diamond_damageModifier = 3.0f; + public float netherite_damageModifier = 3.0f; + public float runic_damageModifier = 3.0f; + + //mythic metals compat + public ValidatedCondition adamantite_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition aquarium_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition banglum_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition bronze_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition carmot_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition celestium_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition copper_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition durasteel_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition kyber_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition metallurgium_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition mythril_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition orichalcum_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition osmium_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition palladium_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition prometheum_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition quadrillum_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition runite_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition starPlatinum_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition steel_damageModifier = createCondition(3.0f, "mythicmetals"); + public ValidatedCondition stormyx_damageModifier = createCondition(3.0f, "mythicmetals"); + + //gobber compat + public ValidatedCondition gobber_damageModifier = createCondition(1.0f, "gobber2"); + public ValidatedCondition gobberNether_damageModifier = createCondition(3.0f, "gobber2"); + public ValidatedCondition gobberEnd_damageModifier = createCondition(6.0f, "gobber2"); + + private ValidatedCondition createCondition(float defaultValue, String modNeeded) { + return new ValidatedFloat(defaultValue) + .toCondition( + () -> Platform.isModLoaded(modNeeded), + Text.translatable("simplyswords.weapon_attributes.materialDamageModifier." + modNeeded), + () -> defaultValue + ); + } + } + + public static class TypeAttackSpeed extends ConfigSection { + public float chakram_attackSpeed = -3.0f; + public float claymore_attackSpeed = -2.8f; + public float cutlass_attackSpeed = -2.0f; + public float glaive_attackSpeed = -2.6f; + public float greataxe_attackSpeed = -3.1f; + public float greathammer_attackSpeed = -3.2f; + public float halberd_attackSpeed = -2.8f; + public float katana_attackSpeed = -2.0f; + public float longsword_attackSpeed = -2.4f; + public float rapier_attackSpeed = -1.8f; + public float sai_attackSpeed = -1.5f; + public float scythe_attackSpeed = -2.7f; + public float spear_attackSpeed = -2.7f; + public float twinblade_attackSpeed = -2.0f; + public float warglaive_attackSpeed = -2.2f; + + + } + + public static class UniqueDamageModifier extends ConfigSection { + public float arcanethyst_damageModifier = 7.0f; + public float bramblethorn_damageModifier = 3.0f; + public float brimstone_damageModifier = 6.0f; + public float caelestis_damageModifier = 6.0f; + public float emberblade_damageModifier = 3.0f; + public float emberlash_damageModifier = 0.0f; + public float enigma_damageModifier = 7.0f; + public float flamewind_damageModifier = 3.0f; + public float frostfall_damageModifier = 5.0f; + public float harbinger_damageModifier = 3.0f; + public float hearthflame_damageModifier = 8.0f; + public float hiveheart_damageModifier = 7.0f; + public float icewhisper_damageModifier = 7.0f; + public float lichblade_damageModifier = 7.0f; + public float livyatan_damageModifier = 4.0f; + public float longswordofplague_damageModifier = 3.0f; + public float magiblade_damageModifier = 3.0f; + public float magiscythe_damageModifier = 4.0f; + public float magispear_damageModifier = 4.0f; + public float mjolnir_damageModifier = 3.0f; + public float moltenedge_damageModifier = 4.0f; + public float ribboncleaver_damageModifier = 7.0f; + public float shadowsting_damageModifier = -2.0f; + public float soulkeeper_damageModifier = 8.0f; + public float soulpyre_damageModifier = 7.0f; + public float soulrender_damageModifier = 4.0f; + public float soulstealer_damageModifier = 0.0f; + public float starsedge_damageModifier = 3.0f; + public float stormsedge_damageModifier = 3.0f; + public float stormbringer_damageModifier = 3.0f; + public float sunfire_damageModifier = 3.0f; + public float swordonastick_damageModifier = 5.0f; + public float tempest_damageModifier = 0.0f; + public float thewatcher_damageModifier = 6.0f; + public float thunderbrand_damageModifier = 7.0f; + public float twistedblade_damageModifier = 4.0f; + public float watchingwarglaive_damageModifier = 3.0f; + public float waxweaver_damageModifier = 6.0f; + public float whisperwind_damageModifier = 3.0f; + public float wickpiercer_damageModifier = 4.0f; + + //eldritch end compat + public ValidatedCondition dreadtide_damageModifier = new ValidatedFloat(3.0f) + .toCondition( + () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), + Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end"), + () -> 3.0f + ); + } + + public static class UniqueAttackSpeed extends ConfigSection { + public float arcanethyst_attackSpeed = -2.7f; + public float bramblethorn_attackSpeed = -1.8f; + public float brimstone_attackSpeed = -2.8f; + public float caelestis_attackSpeed = -2.9f; + public float emberblade_attackSpeed = -2.4f; + public float emberlash_attackSpeed = -1.5f; + public float enigma_attackSpeed = -3.2f; + public float flamewind_attackSpeed = -2.6f; + public float frostfall_attackSpeed = -2.5f; + public float harbinger_attackSpeed = -2.4f; + public float hearthflame_attackSpeed = -3.2f; + public float hiveheart_attackSpeed = -3.0f; + public float icewhisper_attackSpeed = -2.7f; + public float lichblade_attackSpeed = -3.1f; + public float livyatan_attackSpeed = -2.1f; + public float longswordofplague_attackSpeed = -2.4f; + public float mjolnir_attackSpeed = -3.0f; + public float magiblade_attackSpeed = -2.0f; + public float magiscythe_attackSpeed = -2.4f; + public float magispear_attackSpeed = -2.5f; + public float moltenedge_attackSpeed = -2.1f; + public float ribboncleaver_attackSpeed = -3.2f; + public float shadowsting_attackSpeed = -1.7f; + public float soulkeeper_attackSpeed = -2.9f; + public float soulpyre_attackSpeed = -3.0f; + public float soulrender_attackSpeed = -2.4f; + public float soulstealer_attackSpeed = -1.5f; + public float starsedge_attackSpeed = -2.0f; + public float stormsedge_attackSpeed = -2.0f; + public float stormbringer_attackSpeed = -2.4f; + public float sunfire_attackSpeed = -2.4f; + public float swordonastick_attackSpeed = -2.6f; + public float tempest_attackSpeed = -2.5f; + public float thewatcher_attackSpeed = -2.8f; + public float thunderbrand_attackSpeed = -2.7f; + public float twistedblade_attackSpeed = -2.6f; + public float watchingwarglaive_attackSpeed = -2.2f; + public float waxweaver_attackSpeed = -2.9f; + public float whisperwind_attackSpeed = -2.0f; + public float wickpiercer_attackSpeed = -2.1f; + + //eldritch end compat + public ValidatedCondition dreadtide_attackSpeed = new ValidatedFloat(-2.0f) + .toCondition( + () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), + Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end"), + () -> -2.0f + ); + } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java new file mode 100644 index 00000000..7307674c --- /dev/null +++ b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java @@ -0,0 +1,177 @@ +package net.sweenus.simplyswords.config; + +import me.shedaniel.autoconfig.ConfigData; +import me.shedaniel.autoconfig.annotation.Config; +import me.shedaniel.autoconfig.annotation.ConfigEntry; + +@Config(name = "weapon_attributes") +public class WeaponAttributesConfigOld implements ConfigData { + + @ConfigEntry.Gui.PrefixText + public float longsword_positiveDamageModifier = 0.0f; + public float twinblade_positiveDamageModifier = 0.0f; + public float rapier_positiveDamageModifier = 0.0f; + public float katana_positiveDamageModifier = 0.0f; + public float sai_positiveDamageModifier = 0.0f; + public float spear_positiveDamageModifier = 0.0f; + public float glaive_positiveDamageModifier = 0.0f; + public float warglaive_positiveDamageModifier = 0.0f; + public float cutlass_positiveDamageModifier = 0.0f; + public float claymore_positiveDamageModifier = 2.0f; + public float greataxe_positiveDamageModifier = 3.0f; + public float greathammer_positiveDamageModifier = 4.0f; + public float chakram_positiveDamageModifier = 0.0f; + public float scythe_positiveDamageModifier = 1.0f; + public float halberd_positiveDamageModifier = 3.0f; + + @ConfigEntry.Gui.PrefixText + public float longsword_negativeDamageModifier = 0.0f; + public float twinblade_negativeDamageModifier = 0.0f; + public float rapier_negativeDamageModifier = 1.0f; + public float katana_negativeDamageModifier = 0.0f; + public float sai_negativeDamageModifier = 3.0f; + public float spear_negativeDamageModifier = 0.0f; + public float glaive_negativeDamageModifier = 0.0f; + public float warglaive_negativeDamageModifier = 0.0f; + public float cutlass_negativeDamageModifier = 0.0f; + public float claymore_negativeDamageModifier = 0.0f; + public float greataxe_negativeDamageModifier = 0.0f; + public float greathammer_negativeDamageModifier = 0.0f; + public float chakram_negativeDamageModifier = 1.0f; + public float scythe_negativeDamageModifier = 0.0f; + public float halberd_negativeDamageModifier = 0.0f; + + @ConfigEntry.Gui.PrefixText + public float iron_damageModifier = 3.0f; + public float gold_damageModifier = 3.0f; + public float diamond_damageModifier = 3.0f; + public float netherite_damageModifier = 3.0f; + public float runic_damageModifier = 3.0f; + public float adamantite_damageModifier = 3.0f; + public float aquarium_damageModifier = 3.0f; + public float banglum_damageModifier = 3.0f; + public float carmot_damageModifier = 3.0f; + public float kyber_damageModifier = 3.0f; + public float mythril_damageModifier = 3.0f; + public float orichalcum_damageModifier = 3.0f; + public float durasteel_damageModifier = 3.0f; + public float osmium_damageModifier = 3.0f; + public float prometheum_damageModifier = 3.0f; + public float quadrillum_damageModifier = 3.0f; + public float runite_damageModifier = 3.0f; + public float starPlatinum_damageModifier = 3.0f; + public float bronze_damageModifier = 3.0f; + public float copper_damageModifier = 3.0f; + public float steel_damageModifier = 3.0f; + public float palladium_damageModifier = 3.0f; + public float stormyx_damageModifier = 3.0f; + public float celestium_damageModifier = 3.0f; + public float metallurgium_damageModifier = 3.0f; + public float gobber_damageModifier = 1.0f; + public float gobberNether_damageModifier = 3.0f; + public float gobberEnd_damageModifier = 6.0f; + + @ConfigEntry.Gui.PrefixText + public float longsword_attackSpeed = -2.4f; + public float twinblade_attackSpeed = -2.0f; + public float rapier_attackSpeed = -1.8f; + public float katana_attackSpeed = -2.0f; + public float sai_attackSpeed = -1.5f; + public float spear_attackSpeed = -2.7f; + public float glaive_attackSpeed = -2.6f; + public float warglaive_attackSpeed = -2.2f; + public float cutlass_attackSpeed = -2.0f; + public float claymore_attackSpeed = -2.8f; + public float greataxe_attackSpeed = -3.1f; + public float greathammer_attackSpeed = -3.2f; + public float chakram_attackSpeed = -3.0f; + public float scythe_attackSpeed = -2.7f; + public float halberd_attackSpeed = -2.8f; + + @ConfigEntry.Gui.PrefixText + public float brimstone_damageModifier = 6.0f; + public float thewatcher_damageModifier = 6.0f; + public float stormsedge_damageModifier = 3.0f; + public float stormbringer_damageModifier = 3.0f; + public float swordonastick_damageModifier = 5.0f; + public float bramblethorn_damageModifier = 3.0f; + public float watchingwarglaive_damageModifier = 3.0f; + public float longswordofplague_damageModifier = 3.0f; + public float emberblade_damageModifier = 3.0f; + public float hearthflame_damageModifier = 8.0f; + public float soulkeeper_damageModifier = 8.0f; + public float twistedblade_damageModifier = 4.0f; + public float soulstealer_damageModifier = 0.0f; + public float soulrender_damageModifier = 4.0f; + public float mjolnir_damageModifier = 3.0f; + public float soulpyre_damageModifier = 7.0f; + public float frostfall_damageModifier = 5.0f; + public float moltenedge_damageModifier = 4.0f; + public float livyatan_damageModifier = 4.0f; + public float icewhisper_damageModifier = 7.0f; + public float arcanethyst_damageModifier = 7.0f; + public float thunderbrand_damageModifier = 7.0f; + public float lichblade_damageModifier = 7.0f; + public float shadowsting_damageModifier = -2.0f; + public float sunfire_damageModifier = 3.0f; + public float harbinger_damageModifier = 3.0f; + public float whisperwind_damageModifier = 3.0f; + public float emberlash_damageModifier = 0.0f; + public float waxweaver_damageModifier = 6.0f; + public float hiveheart_damageModifier = 7.0f; + public float starsedge_damageModifier = 3.0f; + public float wickpiercer_damageModifier = 4.0f; + public float dreadtide_damageModifier = 3.0f; + public float tempest_damageModifier = 0.0f; + public float flamewind_damageModifier = 3.0f; + public float ribboncleaver_damageModifier = 7.0f; + public float magiscythe_damageModifier = 4.0f; + public float enigma_damageModifier = 7.0f; + public float magispear_damageModifier = 4.0f; + public float magiblade_damageModifier = 3.0f; + public float caelestis_damageModifier = 6.0f; + + @ConfigEntry.Gui.PrefixText + public float brimstone_attackSpeed = -2.8f; + public float thewatcher_attackSpeed = -2.8f; + public float stormsedge_attackSpeed = -2.0f; + public float stormbringer_attackSpeed = -2.4f; + public float swordonastick_attackSpeed = -2.6f; + public float bramblethorn_attackSpeed = -1.8f; + public float watchingwarglaive_attackSpeed = -2.2f; + public float longswordofplague_attackSpeed = -2.4f; + public float emberblade_attackSpeed = -2.4f; + public float hearthflame_attackSpeed = -3.2f; + public float soulkeeper_attackSpeed = -2.9f; + public float twistedblade_attackSpeed = -2.6f; + public float soulstealer_attackSpeed = -1.5f; + public float soulrender_attackSpeed = -2.4f; + public float mjolnir_attackSpeed = -3.0f; + public float soulpyre_attackSpeed = -3.0f; + public float frostfall_attackSpeed = -2.5f; + public float moltenedge_attackSpeed = -2.1f; + public float livyatan_attackSpeed = -2.1f; + public float icewhisper_attackSpeed = -2.7f; + public float arcanethyst_attackSpeed = -2.7f; + public float thunderbrand_attackSpeed = -2.7f; + public float lichblade_attackSpeed = -3.1f; + public float shadowsting_attackSpeed = -1.7f; + public float sunfire_attackSpeed = -2.4f; + public float harbinger_attackSpeed = -2.4f; + public float whisperwind_attackSpeed = -2.0f; + public float emberlash_attackSpeed = -1.5f; + public float waxweaver_attackSpeed = -2.9f; + public float hiveheart_attackSpeed = -3.0f; + public float starsedge_attackSpeed = -2.0f; + public float wickpiercer_attackSpeed = -2.1f; + public float dreadtide_attackSpeed = -2.0f; + public float tempest_attackSpeed = -2.5f; + public float flamewind_attackSpeed = -2.6f; + public float ribboncleaver_attackSpeed = -3.2f; + public float magiscythe_attackSpeed = -2.4f; + public float enigma_attackSpeed = -3.2f; + public float magispear_attackSpeed = -2.5f; + public float magiblade_attackSpeed = -2.0f; + public float caelestis_attackSpeed = -2.9f; + +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java index bd3bc27c..ab4cff89 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java @@ -20,13 +20,13 @@ public class StormEffect extends StatusEffect { public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { if (!pLivingEntity.getWorld().isClient()) { ServerWorld world = (ServerWorld)pLivingEntity.getWorld(); - int hradius = (int) Config.getFloat("stormRadius", "UniqueEffects", ConfigDefaultValues.stormRadius); - int vradius = (int) (Config.getFloat("stormRadius", "UniqueEffects", ConfigDefaultValues.stormRadius) / 2); + double hRadius = Config.uniqueEffects.storm.radius; + double vRadius = Config.uniqueEffects.storm.radius / 2f; double x = pLivingEntity.getX(); double y = pLivingEntity.getY(); double z = pLivingEntity.getZ(); var pPlayer = pLivingEntity.getAttacker(); - Box box = new Box(x + hradius, y +vradius, z + hradius, x - hradius, y - vradius, z - hradius); + Box box = new Box(x + hRadius, y +vRadius, z + hRadius, x - hRadius, y - vRadius, z - hRadius); for(Entity e: world.getOtherEntities(pPlayer, box, EntityPredicates.VALID_LIVING_ENTITY)) { @@ -56,4 +56,4 @@ public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java index 6d17e6d6..17cd8c0c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java @@ -28,7 +28,7 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { double x = pLivingEntity.getX(); double y = pLivingEntity.getY(); double z = pLivingEntity.getZ(); - int pduration = (int) SimplySwords.runicEffectsConfig.wildfireDuration / 20; + int pduration = Config.gemPowers.wildfire.duration / 20; Box box = new Box(x + hradius, y + vradius, z + hradius, x - hradius, y - vradius, z - hradius); for (Entity e : world.getEntitiesByType(pLivingEntity.getType(), box, EntityPredicates.VALID_ENTITY)) { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index 9d78b526..0134991b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -17,6 +17,7 @@ import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -46,10 +47,9 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.dormantrelicsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.dormantrelicsworditem.tooltip2").setStyle(Styles.TEXT)); if (this.asItem().equals(ItemsRegistry.DECAYING_RELIC.get())) { tooltip.add(Text.literal("")); if (Screen.hasAltDown()) { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index 63c303e5..af2cd499 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -109,7 +109,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip8").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip9").setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip10").setStyle(Styles.TEXT)); - tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip11", (int) Config.getFloat("emberstormSpreadCap", "UniqueEffects", ConfigDefaultValues.emberstormSpreadCap)).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.flamewindsworditem.tooltip11", Config.uniqueEffects.emberstorm.spreadCap).setStyle(Styles.TEXT)); if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleFire")); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index f9d86272..cc0b942f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -36,8 +36,6 @@ public class HarbingerSwordItem extends UniqueSwordItem { - int skillCooldown = (int) Config.getFloat("abyssalStandardCooldown", "UniqueEffects", ConfigDefaultValues.abyssalStandardCooldown); - public HarbingerSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index b5c27738..084bba63 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -40,8 +40,6 @@ public MoltenEdgeSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - int roar_timer_max = (int) Config.getFloat("moltenRoarDuration", "UniqueEffects", ConfigDefaultValues.moltenRoarDuration); - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (attacker.getWorld().isClient()) return super.postHit(stack, target, attacker); @@ -86,7 +84,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han } world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), user.getSoundCategory(), 0.7f, 1.5f); - int duration = roar_timer_max * amp / 2; + int duration = Config.uniqueEffects.moltenRoar.duration * amp / 2; user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 3), user); user.getItemCooldownManager().set(this, abilityCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index 7aee4289..a880f910 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -24,8 +24,6 @@ public class RighteousRelicSwordItem extends UniqueSwordItem { - int abilityChance = (int) Config.getFloat("righteousStandardChance", "UniqueEffects", ConfigDefaultValues.righteousStandardChance); - public RighteousRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -33,7 +31,7 @@ public RighteousRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); - if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= abilityChance && attacker instanceof PlayerEntity) { + if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= Config.uniqueEffects.righteousStandard.chance && attacker instanceof PlayerEntity) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.7f); attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 40, 0), attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index 90507dcb..9d42d932 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -19,14 +19,12 @@ import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; public class TaintedRelicSwordItem extends UniqueSwordItem { - private static int stepMod = 0; - int abilityChance = (int) Config.getFloat("abyssalStandardChance", "UniqueEffects", ConfigDefaultValues.abyssalStandardChance); - public TaintedRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } @@ -34,7 +32,7 @@ public TaintedRelicSwordItem(ToolMaterial toolMaterial, Settings settings) { @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { HelperMethods.playHitSounds(attacker, target); - if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= abilityChance && attacker instanceof PlayerEntity) { + if (!attacker.getWorld().isClient() && attacker.getRandom().nextInt(100) <= Config.uniqueEffects.abyssalStandard.chance && attacker instanceof PlayerEntity) { attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.3f, 1.7f); target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 160, 0), attacker); @@ -56,14 +54,11 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index 654513cc..d1b8f4d9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -42,14 +42,11 @@ public TempestSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } - private static int stepMod = 0; - public static boolean scalesWithSpellPower; - @Override public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (!attacker.getWorld().isClient()) { - int vortexMaxStacks = (int) Config.getFloat("vortexMaxStacks", "UniqueEffects", ConfigDefaultValues.vortexMaxStacks); + int vortexMaxStacks = Config.uniqueEffects.vortex.maxStacks; ServerWorld serverWorld = (ServerWorld) attacker.getWorld(); HelperMethods.playHitSounds(attacker, target); SoundEvent soundSelect; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index 044b139d..d0d184f0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -93,8 +93,7 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip1").setStyle(Styles.ABILITY)); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip2").setStyle(Styles.TEXT)); - tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip3", - (Config.getFloat("omenInstantKillThreshold", "UniqueEffects", ConfigDefaultValues.omenInstantKillThreshold) * 100)).setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip3", (Config.uniqueEffects.watcher.omenInstantKillThreshold * 100)).setStyle(Styles.TEXT)); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip4").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.watchersworditem.tooltip5").setStyle(Styles.ABILITY)); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index ded6c496..bd3f4446 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -31,8 +31,6 @@ public class WhisperwindSwordItem extends UniqueSwordItem implements TwoHandedWeapon { - int skillCooldown = (int) Config.getFloat("fatalFlickerCooldown", "UniqueEffects", ConfigDefaultValues.fatalFlickerCooldown); - public WhisperwindSwordItem(ToolMaterial toolMaterial, Settings settings) { super(toolMaterial, settings); } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java index ca21aad7..6f3ba5f5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java @@ -25,8 +25,8 @@ public TrailblazePower(boolean isGreater) { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("trailblazeChance", "RunicEffects", ConfigDefaultValues.trailblazeChance); - int duration = (int) Config.getFloat("trailblazeDuration", "RunicEffects", ConfigDefaultValues.trailblazeDuration); + int hitChance = Config.gemPowers.trailblaze.chance; + int duration = Config.gemPowers.trailblaze.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, this.isGreater() ? 2 : 1), attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java index 584ffce6..fb260378 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java @@ -13,143 +13,128 @@ import net.sweenus.simplyswords.item.*; import net.sweenus.simplyswords.item.custom.*; +@SuppressWarnings({"SpellCheckingInspection", "UnstableApiUsage"}) public class ItemsRegistry { - static float iron_modifier = Config.getFloat("iron_damageModifier", "WeaponAttributes", ConfigDefaultValues.iron_damageModifier); - static float gold_modifier = Config.getFloat("gold_damageModifier", "WeaponAttributes", ConfigDefaultValues.gold_damageModifier); - static float diamond_modifier = Config.getFloat("diamond_damageModifier", "WeaponAttributes", ConfigDefaultValues.diamond_damageModifier); - static float netherite_modifier = Config.getFloat("netherite_damageModifier", "WeaponAttributes", ConfigDefaultValues.netherite_damageModifier); - static float runic_modifier = Config.getFloat("runic_damageModifier", "WeaponAttributes", ConfigDefaultValues.runic_damageModifier); - - static float longsword_positive_modifier = Config.getFloat("longsword_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_positiveDamageModifier); - static float twinblade_positive_modifier = Config.getFloat("twinblade_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_positiveDamageModifier); - static float rapier_positive_modifier = Config.getFloat("rapier_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_positiveDamageModifier); - static float katana_positive_modifier = Config.getFloat("katana_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_positiveDamageModifier); - static float sai_positive_modifier = Config.getFloat("sai_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_positiveDamageModifier); - static float spear_positive_modifier = Config.getFloat("spear_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_positiveDamageModifier); - static float glaive_positive_modifier = Config.getFloat("glaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_positiveDamageModifier); - static float warglaive_positive_modifier = Config.getFloat("warglaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_positiveDamageModifier); - static float cutlass_positive_modifier = Config.getFloat("cutlass_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_positiveDamageModifier); - static float claymore_positive_modifier = Config.getFloat("claymore_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_positiveDamageModifier); - static float greataxe_positive_modifier = Config.getFloat("greataxe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_positiveDamageModifier); - static float greathammer_positive_modifier = Config.getFloat("greathammer_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_positiveDamageModifier); - static float chakram_positive_modifier = Config.getFloat("chakram_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_positiveDamageModifier); - static float scythe_positive_modifier = Config.getFloat("scythe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_positiveDamageModifier); - static float halberd_positive_modifier = Config.getFloat("halberd_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_positiveDamageModifier); - - static float longsword_negative_modifier = Config.getFloat("longsword_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_negativeDamageModifier); - static float twinblade_negative_modifier = Config.getFloat("twinblade_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_negativeDamageModifier); - static float rapier_negative_modifier = Config.getFloat("rapier_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_negativeDamageModifier); - static float sai_negative_modifier = Config.getFloat("sai_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_negativeDamageModifier); - static float spear_negative_modifier = Config.getFloat("spear_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_negativeDamageModifier); - static float katana_negative_modifier = Config.getFloat("katana_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_negativeDamageModifier); - static float glaive_negative_modifier = Config.getFloat("glaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_negativeDamageModifier); - static float warglaive_negative_modifier = Config.getFloat("warglaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_negativeDamageModifier); - static float cutlass_negative_modifier = Config.getFloat("cutlass_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_negativeDamageModifier); - static float claymore_negative_modifier = Config.getFloat("claymore_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_negativeDamageModifier); - static float greataxe_negative_modifier = Config.getFloat("greataxe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_negativeDamageModifier); - static float greathammer_negative_modifier = Config.getFloat("greathammer_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_negativeDamageModifier); - static float chakram_negative_modifier = Config.getFloat("chakram_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_negativeDamageModifier); - static float scythe_negative_modifier = Config.getFloat("scythe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_negativeDamageModifier); - static float halberd_negative_modifier = Config.getFloat("halberd_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_negativeDamageModifier); - - static float longsword_attackspeed = Config.getFloat("longsword_attackSpeed", "WeaponAttributes", ConfigDefaultValues.longsword_attackSpeed); - static float twinblade_attackspeed = Config.getFloat("twinblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.twinblade_attackSpeed); - static float rapier_attackspeed = Config.getFloat("rapier_attackSpeed", "WeaponAttributes", ConfigDefaultValues.rapier_attackSpeed); - static float sai_attackspeed = Config.getFloat("sai_attackSpeed", "WeaponAttributes", ConfigDefaultValues.sai_attackSpeed); - static float spear_attackspeed = Config.getFloat("spear_attackSpeed", "WeaponAttributes", ConfigDefaultValues.spear_attackSpeed); - static float katana_attackspeed = Config.getFloat("katana_attackSpeed", "WeaponAttributes", ConfigDefaultValues.katana_attackSpeed); - static float glaive_attackspeed = Config.getFloat("glaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.glaive_attackSpeed); - static float warglaive_attackspeed = Config.getFloat("warglaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.warglaive_attackSpeed); - static float cutlass_attackspeed = Config.getFloat("cutlass_attackSpeed", "WeaponAttributes", ConfigDefaultValues.cutlass_attackSpeed); - static float claymore_attackspeed = Config.getFloat("claymore_attackSpeed", "WeaponAttributes", ConfigDefaultValues.claymore_attackSpeed); - static float greataxe_attackspeed = Config.getFloat("greataxe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greataxe_attackSpeed); - static float greathammer_attackspeed = Config.getFloat("greathammer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greathammer_attackSpeed); - static float chakram_attackspeed = Config.getFloat("chakram_attackSpeed", "WeaponAttributes", ConfigDefaultValues.chakram_attackSpeed); - static float scythe_attackspeed = Config.getFloat("scythe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.scythe_attackSpeed); - static float halberd_attackspeed = Config.getFloat("halberd_attackSpeed", "WeaponAttributes", ConfigDefaultValues.halberd_attackSpeed); - - static float brimstone_attackspeed = Config.getFloat("brimstone_attackSpeed", "WeaponAttributes", ConfigDefaultValues.brimstone_attackSpeed); - static float thewatcher_attackspeed = Config.getFloat("thewatcher_attackSpeed", "WeaponAttributes", ConfigDefaultValues.thewatcher_attackSpeed); - static float stormsedge_attackspeed = Config.getFloat("stormsedge_attackSpeed", "WeaponAttributes", ConfigDefaultValues.stormsedge_attackSpeed); - static float stormbringer_attackspeed = Config.getFloat("stormbringer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.stormbringer_attackSpeed); - static float swordonastick_attackspeed = Config.getFloat("swordonastick_attackSpeed", "WeaponAttributes", ConfigDefaultValues.swordonastick_attackSpeed); - static float bramblethorn_attackspeed = Config.getFloat("bramblethorn_attackSpeed", "WeaponAttributes", ConfigDefaultValues.bramblethorn_attackSpeed); - static float watchingwarglaive_attackspeed = Config.getFloat("watchingwarglaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.watchingwarglaive_attackSpeed); - static float longswordofplague_attackspeed = Config.getFloat("longswordofplague_attackSpeed", "WeaponAttributes", ConfigDefaultValues.longswordofplague_attackSpeed); - static float emberblade_attackspeed = Config.getFloat("emberblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.emberblade_attackSpeed); - static float hearthflame_attackspeed = Config.getFloat("hearthflame_attackSpeed", "WeaponAttributes", ConfigDefaultValues.hearthflame_attackSpeed); - static float soulkeeper_attackspeed = Config.getFloat("soulkeeper_attackSpeed", "WeaponAttributes", ConfigDefaultValues.soulkeeper_attackSpeed); - static float twistedblade_attackspeed = Config.getFloat("twistedblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.twistedblade_attackSpeed); - static float soulstealer_attackspeed = Config.getFloat("soulstealer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.soulstealer_attackSpeed); - static float soulrender_attackspeed = Config.getFloat("soulrender_attackSpeed", "WeaponAttributes", ConfigDefaultValues.soulrender_attackSpeed); - static float mjolnir_attackspeed = Config.getFloat("mjolnir_attackSpeed", "WeaponAttributes", ConfigDefaultValues.mjolnir_attackSpeed); - static float soulpyre_attackspeed = Config.getFloat("soulpyre_attackSpeed", "WeaponAttributes", ConfigDefaultValues.soulpyre_attackSpeed); - static float frostfall_attackspeed = Config.getFloat("frostfall_attackSpeed", "WeaponAttributes", ConfigDefaultValues.frostfall_attackSpeed); - static float moltenedge_attackspeed = Config.getFloat("moltenedge_attackSpeed", "WeaponAttributes", ConfigDefaultValues.moltenedge_attackSpeed); - static float livyatan_attackspeed = Config.getFloat("livyatan_attackSpeed", "WeaponAttributes", ConfigDefaultValues.livyatan_attackSpeed); - static float icewhisper_attackspeed = Config.getFloat("icewhisper_attackSpeed", "WeaponAttributes", ConfigDefaultValues.icewhisper_attackSpeed); - static float arcanethyst_attackspeed = Config.getFloat("arcanethyst_attackSpeed", "WeaponAttributes", ConfigDefaultValues.arcanethyst_attackSpeed); - static float thunderbrand_attackspeed = Config.getFloat("thunderbrand_attackSpeed", "WeaponAttributes", ConfigDefaultValues.thunderbrand_attackSpeed); - static float lichblade_attackspeed = Config.getFloat("lichblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.lichblade_attackSpeed); - static float shadowsting_attackspeed = Config.getFloat("shadowsting_attackSpeed", "WeaponAttributes", ConfigDefaultValues.shadowsting_attackSpeed); - static float sunfire_attackspeed = Config.getFloat("sunfire_attackSpeed", "WeaponAttributes", ConfigDefaultValues.sunfire_attackSpeed); - static float harbinger_attackspeed = Config.getFloat("harbinger_attackSpeed", "WeaponAttributes", ConfigDefaultValues.harbinger_attackSpeed); - static float whisperwind_attackspeed = Config.getFloat("whisperwind_attackSpeed", "WeaponAttributes", ConfigDefaultValues.whisperwind_attackSpeed); - static float emberlash_attackspeed = Config.getFloat("emberlash_attackSpeed", "WeaponAttributes", ConfigDefaultValues.emberlash_attackSpeed); - static float waxweaver_attackspeed = Config.getFloat("waxweaver_attackSpeed", "WeaponAttributes", ConfigDefaultValues.waxweaver_attackSpeed); - static float hiveheart_attackspeed = Config.getFloat("hiveheart_attackSpeed", "WeaponAttributes", ConfigDefaultValues.hiveheart_attackSpeed); - static float starsedge_attackspeed = Config.getFloat("starsedge_attackSpeed", "WeaponAttributes", ConfigDefaultValues.starsedge_attackSpeed); - static float wickpiercer_attackspeed = Config.getFloat("wickpiercer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.wickpiercer_attackSpeed); - static float tempest_attackspeed = Config.getFloat("tempest_attackSpeed", "WeaponAttributes", ConfigDefaultValues.tempest_attackSpeed); - static float flamewind_attackspeed = Config.getFloat("flamewind_attackSpeed", "WeaponAttributes", ConfigDefaultValues.flamewind_attackSpeed); - static float ribboncleaver_attackspeed = Config.getFloat("ribboncleaver_attackSpeed", "WeaponAttributes", ConfigDefaultValues.ribboncleaver_attackSpeed); - static float magiscythe_attackspeed = Config.getFloat("magiscythe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.magiscythe_attackSpeed); - static float enigma_attackspeed = Config.getFloat("enigma_attackSpeed", "WeaponAttributes", ConfigDefaultValues.enigma_attackSpeed); - static float magispear_attackspeed = Config.getFloat("magispear_attackSpeed", "WeaponAttributes", ConfigDefaultValues.magispear_attackSpeed); - static float magiblade_attackspeed = Config.getFloat("magiblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.magiblade_attackSpeed); - static float caelestis_attackspeed = Config.getFloat("caelestis_attackSpeed", "WeaponAttributes", ConfigDefaultValues.caelestis_attackSpeed); - - static float brimstone_damage_modifier = Config.getFloat("brimstone_damageModifier", "WeaponAttributes", ConfigDefaultValues.brimstone_damageModifier); - static float thewatcher_damage_modifier = Config.getFloat("thewatcher_damageModifier", "WeaponAttributes", ConfigDefaultValues.thewatcher_damageModifier); - static float stormsedge_damage_modifier = Config.getFloat("stormsedge_damageModifier", "WeaponAttributes", ConfigDefaultValues.stormsedge_damageModifier); - static float stormbringer_damage_modifier = Config.getFloat("stormbringer_damageModifier", "WeaponAttributes", ConfigDefaultValues.stormbringer_damageModifier); - static float swordonastick_damage_modifier = Config.getFloat("swordonastick_damageModifier", "WeaponAttributes", ConfigDefaultValues.swordonastick_damageModifier); - static float bramblethorn_damage_modifier = Config.getFloat("bramblethorn_damageModifier", "WeaponAttributes", ConfigDefaultValues.bramblethorn_damageModifier); - static float watchingwarglaive_damage_modifier = Config.getFloat("watchingwarglaive_damageModifier", "WeaponAttributes", ConfigDefaultValues.watchingwarglaive_damageModifier); - static float longswordofplague_damage_modifier = Config.getFloat("longswordofplague_damageModifier", "WeaponAttributes", ConfigDefaultValues.longswordofplague_damageModifier); - static float emberblade_damage_modifier = Config.getFloat("emberblade_damageModifier", "WeaponAttributes", ConfigDefaultValues.emberblade_damageModifier); - static float hearthflame_damage_modifier = Config.getFloat("hearthflame_damageModifier", "WeaponAttributes", ConfigDefaultValues.hearthflame_damageModifier); - static float soulkeeper_damage_modifier = Config.getFloat("soulkeeper_damageModifier", "WeaponAttributes", ConfigDefaultValues.soulkeeper_damageModifier); - static float twistedblade_damage_modifier = Config.getFloat("twistedblade_damageModifier", "WeaponAttributes", ConfigDefaultValues.twistedblade_damageModifier); - static float soulstealer_damage_modifier = Config.getFloat("soulstealer_damageModifier", "WeaponAttributes", ConfigDefaultValues.soulstealer_damageModifier); - static float soulrender_damage_modifier = Config.getFloat("soulrender_damageModifier", "WeaponAttributes", ConfigDefaultValues.soulrender_damageModifier); - static float mjolnir_damage_modifier = Config.getFloat("mjolnir_damageModifier", "WeaponAttributes", ConfigDefaultValues.mjolnir_damageModifier); - static float soulpyre_damage_modifier = Config.getFloat("soulpyre_damageModifier", "WeaponAttributes", ConfigDefaultValues.soulpyre_damageModifier); - static float frostfall_damage_modifier = Config.getFloat("frostfall_damageModifier", "WeaponAttributes", ConfigDefaultValues.frostfall_damageModifier); - static float moltenedge_damage_modifier = Config.getFloat("moltenedge_damageModifier", "WeaponAttributes", ConfigDefaultValues.moltenedge_damageModifier); - static float livyatan_damage_modifier = Config.getFloat("livyatan_damageModifier", "WeaponAttributes", ConfigDefaultValues.livyatan_damageModifier); - static float icewhisper_damage_modifier = Config.getFloat("icewhisper_damageModifier", "WeaponAttributes", ConfigDefaultValues.icewhisper_damageModifier); - static float arcanethyst_damage_modifier = Config.getFloat("arcanethyst_damageModifier", "WeaponAttributes", ConfigDefaultValues.arcanethyst_damageModifier); - static float thunderbrand_damage_modifier = Config.getFloat("thunderbrand_damageModifier", "WeaponAttributes", ConfigDefaultValues.thunderbrand_damageModifier); - static float lichblade_damage_modifier = Config.getFloat("lichblade_damageModifier", "WeaponAttributes", ConfigDefaultValues.lichblade_damageModifier); - static float shadowsting_damage_modifier = Config.getFloat("shadowsting_damageModifier", "WeaponAttributes", ConfigDefaultValues.shadowsting_damageModifier); - static float sunfire_damage_modifier = Config.getFloat("sunfire_damageModifier", "WeaponAttributes", ConfigDefaultValues.sunfire_damageModifier); - static float harbinger_damage_modifier = Config.getFloat("harbinger_damageModifier", "WeaponAttributes", ConfigDefaultValues.harbinger_damageModifier); - static float whisperwind_damage_modifier = Config.getFloat("whisperwind_damageModifier", "WeaponAttributes", ConfigDefaultValues.whisperwind_damageModifier); - static float emberlash_damage_modifier = Config.getFloat("emberlash_damageModifier", "WeaponAttributes", ConfigDefaultValues.emberlash_damageModifier); - static float waxweaver_damage_modifier = Config.getFloat("waxweaver_damageModifier", "WeaponAttributes", ConfigDefaultValues.waxweaver_damageModifier); - static float hiveheart_damage_modifier = Config.getFloat("hiveheart_damageModifier", "WeaponAttributes", ConfigDefaultValues.hiveheart_damageModifier); - static float starsedge_damage_modifier = Config.getFloat("starsedge_damageModifier", "WeaponAttributes", ConfigDefaultValues.starsedge_damageModifier); - static float wickpiercer_damage_modifier = Config.getFloat("wickpiercer_damageModifier", "WeaponAttributes", ConfigDefaultValues.wickpiercer_damageModifier); - static float tempest_damage_modifier = Config.getFloat("tempest_damageModifier", "WeaponAttributes", ConfigDefaultValues.tempest_damageModifier); - static float flamewind_damage_modifier = Config.getFloat("flamewind_damageModifier", "WeaponAttributes", ConfigDefaultValues.flamewind_damageModifier); - static float ribboncleaver_damage_modifier = Config.getFloat("ribboncleaver_damageModifier", "WeaponAttributes", ConfigDefaultValues.ribboncleaver_damageModifier); - static float magiscythe_damage_modifier = Config.getFloat("magiscythe_damageModifier", "WeaponAttributes", ConfigDefaultValues.magiscythe_damageModifier); - static float enigma_damage_modifier = Config.getFloat("enigma_damageModifier", "WeaponAttributes", ConfigDefaultValues.enigma_damageModifier); - static float magispear_damage_modifier = Config.getFloat("magispear_damageModifier", "WeaponAttributes", ConfigDefaultValues.magispear_damageModifier); - static float magiblade_damage_modifier = Config.getFloat("magiblade_damageModifier", "WeaponAttributes", ConfigDefaultValues.magiblade_damageModifier); - static float caelestis_damage_modifier = Config.getFloat("caelestis_damageModifier", "WeaponAttributes", ConfigDefaultValues.caelestis_damageModifier); + static float iron_modifier = Config.weaponAttribute.materialDamageModifier.iron_damageModifier; + static float gold_modifier = Config.weaponAttribute.materialDamageModifier.gold_damageModifier; + static float diamond_modifier = Config.weaponAttribute.materialDamageModifier.diamond_damageModifier; + static float netherite_modifier = Config.weaponAttribute.materialDamageModifier.netherite_damageModifier; + static float runic_modifier = Config.weaponAttribute.materialDamageModifier.runic_damageModifier; + + static float longsword_modifier = Config.weaponAttribute.typeDamageModifier.longsword_damageModifier; + static float twinblade_modifier = Config.weaponAttribute.typeDamageModifier.twinblade_damageModifier; + static float rapier_modifier = Config.weaponAttribute.typeDamageModifier.rapier_damageModifier; + static float katana_modifier = Config.weaponAttribute.typeDamageModifier.katana_damageModifier; + static float sai_modifier = Config.weaponAttribute.typeDamageModifier.sai_damageModifier; + static float spear_modifier = Config.weaponAttribute.typeDamageModifier.spear_damageModifier; + static float glaive_modifier = Config.weaponAttribute.typeDamageModifier.glaive_damageModifier; + static float warglaive_modifier = Config.weaponAttribute.typeDamageModifier.warglaive_damageModifier; + static float cutlass_modifier = Config.weaponAttribute.typeDamageModifier.cutlass_damageModifier; + static float claymore_modifier = Config.weaponAttribute.typeDamageModifier.claymore_damageModifier; + static float greataxe_modifier = Config.weaponAttribute.typeDamageModifier.greataxe_damageModifier; + static float greathammer_modifier = Config.weaponAttribute.typeDamageModifier.greathammer_damageModifier; + static float chakram_modifier = Config.weaponAttribute.typeDamageModifier.chakram_damageModifier; + static float scythe_modifier = Config.weaponAttribute.typeDamageModifier.scythe_damageModifier; + static float halberd_modifier = Config.weaponAttribute.typeDamageModifier.halberd_damageModifier; + + static float longsword_attackspeed = Config.weaponAttribute.typeAttackSpeed.longsword_attackSpeed; + static float twinblade_attackspeed = Config.weaponAttribute.typeAttackSpeed.twinblade_attackSpeed; + static float rapier_attackspeed = Config.weaponAttribute.typeAttackSpeed.rapier_attackSpeed; + static float sai_attackspeed = Config.weaponAttribute.typeAttackSpeed.sai_attackSpeed; + static float spear_attackspeed = Config.weaponAttribute.typeAttackSpeed.spear_attackSpeed; + static float katana_attackspeed = Config.weaponAttribute.typeAttackSpeed.katana_attackSpeed; + static float glaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.glaive_attackSpeed; + static float warglaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.warglaive_attackSpeed; + static float cutlass_attackspeed = Config.weaponAttribute.typeAttackSpeed.cutlass_attackSpeed; + static float claymore_attackspeed = Config.weaponAttribute.typeAttackSpeed.claymore_attackSpeed; + static float greataxe_attackspeed = Config.weaponAttribute.typeAttackSpeed.greataxe_attackSpeed; + static float greathammer_attackspeed = Config.weaponAttribute.typeAttackSpeed.greathammer_attackSpeed; + static float chakram_attackspeed = Config.weaponAttribute.typeAttackSpeed.chakram_attackSpeed; + static float scythe_attackspeed = Config.weaponAttribute.typeAttackSpeed.scythe_attackSpeed; + static float halberd_attackspeed = Config.weaponAttribute.typeAttackSpeed.halberd_attackSpeed; + + static float brimstone_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.brimstone_attackSpeed; + static float thewatcher_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.thewatcher_attackSpeed; + static float stormsedge_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.stormsedge_attackSpeed; + static float stormbringer_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.stormbringer_attackSpeed; + static float swordonastick_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.swordonastick_attackSpeed; + static float bramblethorn_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.bramblethorn_attackSpeed; + static float watchingwarglaive_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.watchingwarglaive_attackSpeed; + static float longswordofplague_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.longswordofplague_attackSpeed; + static float emberblade_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.emberblade_attackSpeed; + static float hearthflame_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.hearthflame_attackSpeed; + static float soulkeeper_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.soulkeeper_attackSpeed; + static float twistedblade_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.twistedblade_attackSpeed; + static float soulstealer_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.soulstealer_attackSpeed; + static float soulrender_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.soulrender_attackSpeed; + static float mjolnir_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.mjolnir_attackSpeed; + static float soulpyre_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.soulpyre_attackSpeed; + static float frostfall_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.frostfall_attackSpeed; + static float moltenedge_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.moltenedge_attackSpeed; + static float livyatan_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.livyatan_attackSpeed; + static float icewhisper_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.icewhisper_attackSpeed; + static float arcanethyst_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.arcanethyst_attackSpeed; + static float thunderbrand_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.thunderbrand_attackSpeed; + static float lichblade_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.lichblade_attackSpeed; + static float shadowsting_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.shadowsting_attackSpeed; + static float sunfire_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.sunfire_attackSpeed; + static float harbinger_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.harbinger_attackSpeed; + static float whisperwind_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.whisperwind_attackSpeed; + static float emberlash_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.emberlash_attackSpeed; + static float waxweaver_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.waxweaver_attackSpeed; + static float hiveheart_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.hiveheart_attackSpeed; + static float starsedge_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.starsedge_attackSpeed; + static float wickpiercer_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.wickpiercer_attackSpeed; + static float tempest_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.tempest_attackSpeed; + static float flamewind_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.flamewind_attackSpeed; + static float ribboncleaver_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.ribboncleaver_attackSpeed; + static float magiscythe_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.magiscythe_attackSpeed; + static float enigma_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.enigma_attackSpeed; + static float magispear_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.magispear_attackSpeed; + static float magiblade_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.magiblade_attackSpeed; + static float caelestis_attackspeed = Config.weaponAttribute.uniqueAttackSpeed.caelestis_attackSpeed; + + static float brimstone_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.brimstone_damageModifier; + static float thewatcher_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.thewatcher_damageModifier; + static float stormsedge_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.stormsedge_damageModifier; + static float stormbringer_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.stormbringer_damageModifier; + static float swordonastick_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.swordonastick_damageModifier; + static float bramblethorn_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.bramblethorn_damageModifier; + static float watchingwarglaive_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.watchingwarglaive_damageModifier; + static float longswordofplague_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.longswordofplague_damageModifier; + static float emberblade_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.emberblade_damageModifier; + static float hearthflame_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.hearthflame_damageModifier; + static float soulkeeper_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.soulkeeper_damageModifier; + static float twistedblade_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.twistedblade_damageModifier; + static float soulstealer_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.soulstealer_damageModifier; + static float soulrender_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.soulrender_damageModifier; + static float mjolnir_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.mjolnir_damageModifier; + static float soulpyre_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.soulpyre_damageModifier; + static float frostfall_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.frostfall_damageModifier; + static float moltenedge_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.moltenedge_damageModifier; + static float livyatan_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.livyatan_damageModifier; + static float icewhisper_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.icewhisper_damageModifier; + static float arcanethyst_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.arcanethyst_damageModifier; + static float thunderbrand_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.thunderbrand_damageModifier; + static float lichblade_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.lichblade_damageModifier; + static float shadowsting_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.shadowsting_damageModifier; + static float sunfire_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.sunfire_damageModifier; + static float harbinger_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.harbinger_damageModifier; + static float whisperwind_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.whisperwind_damageModifier; + static float emberlash_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.emberlash_damageModifier; + static float waxweaver_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.waxweaver_damageModifier; + static float hiveheart_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.hiveheart_damageModifier; + static float starsedge_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.starsedge_damageModifier; + static float wickpiercer_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.wickpiercer_damageModifier; + static float tempest_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.tempest_damageModifier; + static float flamewind_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.flamewind_damageModifier; + static float ribboncleaver_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.ribboncleaver_damageModifier; + static float magiscythe_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.magiscythe_damageModifier; + static float enigma_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.enigma_damageModifier; + static float magispear_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.magispear_damageModifier; + static float magiblade_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.magiblade_damageModifier; + static float caelestis_damage_modifier = Config.weaponAttribute.uniqueDamageModifier.caelestis_damageModifier; public static final DeferredRegister ITEM = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.ITEM); @@ -165,105 +150,105 @@ public class ItemsRegistry { ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + longsword_modifier), longsword_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_TWINBLADE = ITEM.register("iron_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + twinblade_modifier), twinblade_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_RAPIER = ITEM.register("iron_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + rapier_modifier), rapier_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_KATANA = ITEM.register("iron_katana", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + katana_modifier), katana_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_SAI = ITEM.register("iron_sai", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + sai_modifier), sai_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_SPEAR = ITEM.register("iron_spear", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + spear_modifier), spear_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_GLAIVE = ITEM.register("iron_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + glaive_modifier), glaive_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_WARGLAIVE = ITEM.register("iron_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + warglaive_modifier), warglaive_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_CUTLASS = ITEM.register("iron_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + cutlass_modifier), cutlass_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_CLAYMORE = ITEM.register("iron_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + claymore_modifier), claymore_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_GREATHAMMER = ITEM.register("iron_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + greathammer_modifier), greathammer_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_GREATAXE = ITEM.register("iron_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + greataxe_modifier), greataxe_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_CHAKRAM = ITEM.register("iron_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + chakram_modifier), chakram_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_SCYTHE = ITEM.register("iron_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + scythe_modifier), scythe_attackspeed)), "minecraft:iron_ingot")); public static final RegistrySupplier IRON_HALBERD = ITEM.register("iron_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.IRON, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.COMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.IRON, - (int) (iron_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:iron_ingot")); + (int) (iron_modifier + halberd_modifier), halberd_attackspeed)), "minecraft:iron_ingot")); // GOLD public static final RegistrySupplier GOLD_LONGSWORD = ITEM.register("gold_longsword", () -> @@ -271,105 +256,105 @@ public class ItemsRegistry { ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + longsword_modifier), longsword_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_TWINBLADE = ITEM.register("gold_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + twinblade_modifier), twinblade_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_RAPIER = ITEM.register("gold_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + rapier_modifier), rapier_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_KATANA = ITEM.register("gold_katana", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + katana_modifier), katana_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_SAI = ITEM.register("gold_sai", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + sai_modifier), sai_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_SPEAR = ITEM.register("gold_spear", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + spear_modifier), spear_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_GLAIVE = ITEM.register("gold_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + glaive_modifier), glaive_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_WARGLAIVE = ITEM.register("gold_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + warglaive_modifier), warglaive_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_CUTLASS = ITEM.register("gold_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + cutlass_modifier), cutlass_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_CLAYMORE = ITEM.register("gold_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + claymore_modifier), claymore_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_GREATHAMMER = ITEM.register("gold_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + greathammer_modifier), greathammer_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_GREATAXE = ITEM.register("gold_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + greataxe_modifier), greataxe_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_CHAKRAM = ITEM.register("gold_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + chakram_modifier), chakram_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_SCYTHE = ITEM.register("gold_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + scythe_modifier), scythe_attackspeed)), "minecraft:gold_ingot")); public static final RegistrySupplier GOLD_HALBERD = ITEM.register("gold_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.GOLD, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.UNCOMMON) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.GOLD, - (int) (gold_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:gold_ingot")); + (int) (gold_modifier + halberd_modifier), halberd_attackspeed)), "minecraft:gold_ingot")); // DIAMOND public static final RegistrySupplier DIAMOND_LONGSWORD = ITEM.register("diamond_longsword", () -> @@ -377,105 +362,105 @@ public class ItemsRegistry { ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + longsword_modifier), longsword_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_TWINBLADE = ITEM.register("diamond_twinblade", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + twinblade_modifier), twinblade_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_RAPIER = ITEM.register("diamond_rapier", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + rapier_modifier), rapier_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_KATANA = ITEM.register("diamond_katana", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + katana_modifier), katana_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_SAI = ITEM.register("diamond_sai", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + sai_modifier), sai_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_SPEAR = ITEM.register("diamond_spear", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + spear_modifier), spear_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_GLAIVE = ITEM.register("diamond_glaive", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + glaive_modifier), glaive_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_WARGLAIVE = ITEM.register("diamond_warglaive", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + warglaive_modifier), warglaive_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_CUTLASS = ITEM.register("diamond_cutlass", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + cutlass_modifier), cutlass_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_CLAYMORE = ITEM.register("diamond_claymore", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + claymore_modifier), claymore_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_GREATHAMMER = ITEM.register("diamond_greathammer", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + greathammer_modifier), greathammer_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_GREATAXE = ITEM.register("diamond_greataxe", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + greataxe_modifier), greataxe_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_CHAKRAM = ITEM.register("diamond_chakram", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + chakram_modifier), chakram_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_SCYTHE = ITEM.register("diamond_scythe", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + scythe_modifier), scythe_attackspeed)), "minecraft:diamond")); public static final RegistrySupplier DIAMOND_HALBERD = ITEM.register("diamond_halberd", () -> new SimplySwordsSwordItem( ToolMaterials.DIAMOND, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.DIAMOND, - (int) (diamond_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:diamond")); + (int) (diamond_modifier + halberd_modifier), halberd_attackspeed)), "minecraft:diamond")); // NETHERITE public static final RegistrySupplier NETHERITE_LONGSWORD = ITEM.register("netherite_longsword", () -> @@ -483,105 +468,105 @@ public class ItemsRegistry { ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + longsword_modifier), longsword_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_TWINBLADE = ITEM.register("netherite_twinblade", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + twinblade_modifier), twinblade_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_RAPIER = ITEM.register("netherite_rapier", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + rapier_modifier), rapier_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_KATANA = ITEM.register("netherite_katana", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + katana_modifier), katana_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_SAI = ITEM.register("netherite_sai", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + sai_modifier), sai_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_SPEAR = ITEM.register("netherite_spear", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + spear_modifier), spear_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_GLAIVE = ITEM.register("netherite_glaive", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + glaive_modifier), glaive_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_WARGLAIVE = ITEM.register("netherite_warglaive", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + warglaive_modifier), warglaive_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_CUTLASS = ITEM.register("netherite_cutlass", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + cutlass_modifier), cutlass_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_CLAYMORE = ITEM.register("netherite_claymore", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + claymore_modifier), claymore_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_GREATHAMMER = ITEM.register("netherite_greathammer", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + greathammer_modifier), greathammer_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_GREATAXE = ITEM.register("netherite_greataxe", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + greataxe_modifier), greataxe_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_CHAKRAM = ITEM.register("netherite_chakram", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + chakram_modifier), chakram_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_SCYTHE = ITEM.register("netherite_scythe", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + scythe_modifier), scythe_attackspeed)), "minecraft:netherite_ingot")); public static final RegistrySupplier NETHERITE_HALBERD = ITEM.register("netherite_halberd", () -> new SimplySwordsNetheriteSwordItem( ToolMaterials.NETHERITE, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.EPIC) .attributeModifiers(SwordItem.createAttributeModifiers(ToolMaterials.NETHERITE, - (int) (netherite_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)), "minecraft:netherite_ingot")); + (int) (netherite_modifier + halberd_modifier), halberd_attackspeed)), "minecraft:netherite_ingot")); // RUNIC public static final RegistrySupplier RUNIC_LONGSWORD = ITEM.register("runic_longsword", () -> @@ -589,105 +574,105 @@ public class ItemsRegistry { ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + longsword_positive_modifier - longsword_negative_modifier), longsword_attackspeed)))); + (int) (runic_modifier + longsword_modifier), longsword_attackspeed)))); public static final RegistrySupplier RUNIC_TWINBLADE = ITEM.register("runic_twinblade", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + twinblade_positive_modifier - twinblade_negative_modifier), twinblade_attackspeed)))); + (int) (runic_modifier + twinblade_modifier), twinblade_attackspeed)))); public static final RegistrySupplier RUNIC_RAPIER = ITEM.register("runic_rapier", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + rapier_positive_modifier - rapier_negative_modifier), rapier_attackspeed)))); + (int) (runic_modifier + rapier_modifier), rapier_attackspeed)))); public static final RegistrySupplier RUNIC_KATANA = ITEM.register("runic_katana", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + katana_positive_modifier - katana_negative_modifier), katana_attackspeed)))); + (int) (runic_modifier + katana_modifier), katana_attackspeed)))); public static final RegistrySupplier RUNIC_SAI = ITEM.register("runic_sai", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + sai_positive_modifier - sai_negative_modifier), sai_attackspeed)))); + (int) (runic_modifier + sai_modifier), sai_attackspeed)))); public static final RegistrySupplier RUNIC_SPEAR = ITEM.register("runic_spear", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + spear_positive_modifier - spear_negative_modifier), spear_attackspeed)))); + (int) (runic_modifier + spear_modifier), spear_attackspeed)))); public static final RegistrySupplier RUNIC_GLAIVE = ITEM.register("runic_glaive", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + glaive_positive_modifier - glaive_negative_modifier), glaive_attackspeed)))); + (int) (runic_modifier + glaive_modifier), glaive_attackspeed)))); public static final RegistrySupplier RUNIC_WARGLAIVE = ITEM.register("runic_warglaive", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + warglaive_positive_modifier - warglaive_negative_modifier), warglaive_attackspeed)))); + (int) (runic_modifier + warglaive_modifier), warglaive_attackspeed)))); public static final RegistrySupplier RUNIC_CUTLASS = ITEM.register("runic_cutlass", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + cutlass_positive_modifier - cutlass_negative_modifier), cutlass_attackspeed)))); + (int) (runic_modifier + cutlass_modifier), cutlass_attackspeed)))); public static final RegistrySupplier RUNIC_CLAYMORE = ITEM.register("runic_claymore", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + claymore_positive_modifier - claymore_negative_modifier), claymore_attackspeed)))); + (int) (runic_modifier + claymore_modifier), claymore_attackspeed)))); public static final RegistrySupplier RUNIC_CHAKRAM = ITEM.register("runic_chakram", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + chakram_positive_modifier - chakram_negative_modifier), chakram_attackspeed)))); + (int) (runic_modifier + chakram_modifier), chakram_attackspeed)))); public static final RegistrySupplier RUNIC_GREATAXE = ITEM.register("runic_greataxe", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + greataxe_positive_modifier - greataxe_negative_modifier), greataxe_attackspeed)))); + (int) (runic_modifier + greataxe_modifier), greataxe_attackspeed)))); public static final RegistrySupplier RUNIC_GREATHAMMER = ITEM.register("runic_greathammer", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + greathammer_positive_modifier - greathammer_negative_modifier), greathammer_attackspeed)))); + (int) (runic_modifier + greathammer_modifier), greathammer_attackspeed)))); public static final RegistrySupplier RUNIC_SCYTHE = ITEM.register("runic_scythe", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + scythe_positive_modifier - scythe_negative_modifier), scythe_attackspeed)))); + (int) (runic_modifier + scythe_modifier), scythe_attackspeed)))); public static final RegistrySupplier RUNIC_HALBERD = ITEM.register("runic_halberd", () -> new RunicSwordItem( ModToolMaterial.RUNIC, new Item.Settings().arch$tab(SimplySwords.SIMPLYSWORDS).rarity(Rarity.RARE) .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterial.RUNIC, - (int) (runic_modifier + halberd_positive_modifier - halberd_negative_modifier), halberd_attackspeed)))); + (int) (runic_modifier + halberd_modifier), halberd_attackspeed)))); // SPECIAL public static final RegistrySupplier BRIMSTONE_CLAYMORE = ITEM.register("brimstone_claymore", () -> diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index 36770f10..68e7e35f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -81,7 +81,7 @@ public static void tickAbilityStormJolt(ItemStack stack, World world, LivingEnti public static void tickAbilityStorm(ItemStack stack, World world, LivingEntity user, int ability_timer, int skillCooldown, int radius) { if (!user.getWorld().isClient()) { - int frequency = (int) Config.getFloat("stormFrequency", "UniqueEffects", ConfigDefaultValues.stormFrequency); + int frequency = Config.uniqueEffects.storm.frequency; if (user.age % frequency == 0) { double x = user.getX(); double y = user.getY(); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 3d79644d..8b6f68cd 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -192,116 +192,6 @@ else if (choose_sound <= 40) } } - public static boolean checkRunicBlacklist(String runicPower) { - return switch (runicPower) { - case "active_defence" -> Config.getBoolean("enableActiveDefence", "RunicEffects",ConfigDefaultValues.enableActiveDefence); - case "float" -> Config.getBoolean("enableFloat", "RunicEffects",ConfigDefaultValues.enableFloat); - case "greater_float" -> Config.getBoolean("enableGreaterFloat", "RunicEffects",ConfigDefaultValues.enableGreaterFloat); - case "freeze" -> Config.getBoolean("enableFreeze", "RunicEffects",ConfigDefaultValues.enableFreeze); - case "shielding" -> Config.getBoolean("enableShielding", "RunicEffects",ConfigDefaultValues.enableShielding); - case "greater_shielding" -> Config.getBoolean("enableGreaterShielding", "RunicEffects",ConfigDefaultValues.enableGreaterShielding); - case "slow" -> Config.getBoolean("enableSlow", "RunicEffects",ConfigDefaultValues.enableSlow); - case "greater_slow" -> Config.getBoolean("enableGreaterSlow", "RunicEffects",ConfigDefaultValues.enableGreaterSlow); - case "stoneskin" -> Config.getBoolean("enableStoneskin", "RunicEffects",ConfigDefaultValues.enableStoneskin); - case "greater_stoneskin" -> Config.getBoolean("enableGreaterStoneskin", "RunicEffects",ConfigDefaultValues.enableGreaterStoneskin); - case "swiftness" -> Config.getBoolean("enableSwiftness", "RunicEffects",ConfigDefaultValues.enableSwiftness); - case "greater_swiftness" -> Config.getBoolean("enableGreaterSwiftness", "RunicEffects",ConfigDefaultValues.enableGreaterSwiftness); - case "trailblaze" -> Config.getBoolean("enableTrailblaze", "RunicEffects",ConfigDefaultValues.enableTrailblaze); - case "greater_trailblaze" -> Config.getBoolean("enableGreaterTrailblaze", "RunicEffects",ConfigDefaultValues.enableGreaterTrailblaze); - case "weaken" -> Config.getBoolean("enableWeaken", "RunicEffects",ConfigDefaultValues.enableWeaken); - case "greater_weaken" -> Config.getBoolean("enableGreaterWeaken", "RunicEffects",ConfigDefaultValues.enableGreaterWeaken); - case "zephyr" -> Config.getBoolean("enableZephyr", "RunicEffects",ConfigDefaultValues.enableZephyr); - case "greater_zephyr" -> Config.getBoolean("enableGreaterZephyr", "RunicEffects",ConfigDefaultValues.enableGreaterZephyr); - case "frost_ward" -> Config.getBoolean("enableFrostWard", "RunicEffects",ConfigDefaultValues.enableFrostWard); - case "wildfire" -> Config.getBoolean("enableWildfire", "RunicEffects",ConfigDefaultValues.enableWildfire); - case "unstable" -> Config.getBoolean("enableUnstable", "RunicEffects",ConfigDefaultValues.enableUnstable); - case "momentum" -> Config.getBoolean("enableMomentum", "RunicEffects",ConfigDefaultValues.enableMomentum); - case "greater_momentum" -> Config.getBoolean("enableGreaterMomentum", "RunicEffects",ConfigDefaultValues.enableGreaterMomentum); - case "imbued" -> Config.getBoolean("enableImbued", "RunicEffects",ConfigDefaultValues.enableImbued); - case "greater_imbued" -> Config.getBoolean("enableGreaterImbued", "RunicEffects",ConfigDefaultValues.enableGreaterImbued); - case "pincushion" -> Config.getBoolean("enablePincushion", "RunicEffects",ConfigDefaultValues.enablePincushion); - case "greater_pincushion" -> Config.getBoolean("enableGreaterPincushion", "RunicEffects",ConfigDefaultValues.enableGreaterPincushion); - case "ward" -> Config.getBoolean("enableWard", "RunicEffects",ConfigDefaultValues.enableWard); - case "immolation" -> Config.getBoolean("enableImmolate", "RunicEffects",ConfigDefaultValues.enableImmolate); - default -> false; - }; - } - - public static boolean checkNetherBlacklist(String netherPower) { - return switch (netherPower) { - case "echo" -> Config.getBoolean("enableEcho", "GemEffects",ConfigDefaultValues.enableEcho); - case "berserk" -> Config.getBoolean("enableBerserk", "GemEffects",ConfigDefaultValues.enableBerserk); - case "radiance" -> Config.getBoolean("enableRadiance", "GemEffects",ConfigDefaultValues.enableRadiance); - case "onslaught" -> Config.getBoolean("enableOnslaught", "GemEffects",ConfigDefaultValues.enableOnslaught); - case "nullification" -> Config.getBoolean("enableNullification", "GemEffects",ConfigDefaultValues.enableNullification); - case "precise" -> Config.getBoolean("enablePrecise", "GemEffects",ConfigDefaultValues.enablePrecise); - case "mighty" -> Config.getBoolean("enableMighty", "GemEffects",ConfigDefaultValues.enableMighty); - case "stealthy" -> Config.getBoolean("enableStealthy", "GemEffects",ConfigDefaultValues.enableStealthy); - case "renewed" -> Config.getBoolean("enableRenewed", "GemEffects",ConfigDefaultValues.enableRenewed); - case "accelerant" -> Config.getBoolean("enableAccelerant", "GemEffects",ConfigDefaultValues.enableAccelerant); - case "leaping" -> Config.getBoolean("enableLeaping", "GemEffects",ConfigDefaultValues.enableLeaping); - case "spellshield" -> Config.getBoolean("enableSpellshield", "GemEffects",ConfigDefaultValues.enableSpellshield); - case "spellforged" -> Config.getBoolean("enableSpellforged", "GemEffects",ConfigDefaultValues.enableSpellforged); - case "soulshock" -> Config.getBoolean("enableSoulshock", "GemEffects",ConfigDefaultValues.enableSoulshock); - case "spell_standard" -> Config.getBoolean("enableSpellStandard", "GemEffects",ConfigDefaultValues.enableSpellStandard); - case "war_standard" -> Config.getBoolean("enableWarStandard", "GemEffects",ConfigDefaultValues.enableWarStandard); - case "deception" -> Config.getBoolean("enableDeception", "GemEffects",ConfigDefaultValues.enableDeception); - default -> false; - }; - } - - // choose Powers from provided list - public static String chooseRunicPower() { - List runicList = Arrays.asList( - "active_defence", "float", "greater_float", "freeze", "shielding", "greater_shielding", "slow", - "greater_slow", "stoneskin", "greater_stoneskin", "swiftness", "greater_swiftness", "trailblaze", - "greater_trailblaze", "weaken", "greater_weaken", "zephyr", "greater_zephyr", "frost_ward", - "wildfire", "unstable", "momentum", "greater_momentum", "imbued", "greater_imbued", "pincushion", - "greater_pincushion", "ward", "immolation"); - - String runicSelection; - do { - Random choose = new Random(); - int randomIndex = choose.nextInt(runicList.size()); - runicSelection = runicList.get(randomIndex); - } while (!checkRunicBlacklist(runicSelection)); - return runicSelection; - } - - public static String chooseRunefusedPower() { - List runicList = Arrays.asList( - "active_defence", "float", "greater_float", "freeze", "shielding", "greater_shielding", "slow", - "greater_slow", "stoneskin", "greater_stoneskin", "swiftness", "greater_swiftness", "trailblaze", - "greater_trailblaze", "weaken", "greater_weaken", "zephyr", "greater_zephyr", "frost_ward", "wildfire", - "unstable", "imbued", "greater_imbued", "pincushion", "greater_pincushion"); - - String runicSelection; - do { - Random choose = new Random(); - int randomIndex = choose.nextInt(runicList.size()); - runicSelection = runicList.get(randomIndex); - } while (!checkRunicBlacklist(runicSelection)); - return runicSelection; - } - - public static String chooseNetherfusedPower() { - List netherList; - if (Platform.isModLoaded("simplyskills")) - netherList = Arrays.asList("echo", "berserk", "radiance", "onslaught", "nullification", - "precise", "mighty", "stealthy", "renewed", "accelerant", "leaping", "spellshield", "spellforged", - "soulshock", "spell_standard", "war_standard", "deception"); - else - netherList = Arrays.asList("echo", "berserk", "radiance", "onslaught", "nullification"); - - String netherSelection; - do { - Random choose = new Random(); - int randomIndex = choose.nextInt(netherList.size()); - netherSelection = netherList.get(randomIndex); - } while (!checkNetherBlacklist(netherSelection)); - return netherSelection; - } - //Check if item is a unique 2H weapon public static boolean isUniqueTwohanded(ItemStack stack) { return stack.getItem() instanceof TwoHandedWeapon; diff --git a/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java deleted file mode 100644 index dd5220ce..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/util/RunicMethods.java +++ /dev/null @@ -1,509 +0,0 @@ -package net.sweenus.simplyswords.util; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.*; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.projectile.ArrowEntity; -import net.minecraft.entity.projectile.thrown.SnowballEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.Text; -import net.minecraft.util.math.Box; -import net.minecraft.world.World; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.entity.BattleStandardEntity; -import net.sweenus.simplyswords.registry.EffectRegistry; -import net.sweenus.simplyswords.registry.EntityRegistry; -import net.sweenus.simplyswords.registry.SoundRegistry; - -public class RunicMethods { - - // ------- POSTHIT ------- // - - // Runic Power - FREEZE - public static void postHitRunicFreeze(LivingEntity target, LivingEntity attacker) { - - int hitChance = (int) Config.getFloat("freezeChance", "RunicEffects", ConfigDefaultValues.freezeChance); - int freezeDuration = (int) Config.getFloat("freezeDuration", "RunicEffects", ConfigDefaultValues.freezeDuration); - int duration = freezeDuration * 3; - - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, freezeDuration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - WILDFIRE - public static void postHitRunicWildfire(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("wildfireChance", "RunicEffects", ConfigDefaultValues.wildfireChance); - int duration = (int) Config.getFloat("wildfireDuration", "RunicEffects", ConfigDefaultValues.wildfireDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE, duration, 3), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - SLOW - public static void postHitRunicSlow(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("slowChance", "RunicEffects", ConfigDefaultValues.slowChance); - int duration = (int) Config.getFloat("slowDuration", "RunicEffects", ConfigDefaultValues.slowDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); - } - } - - // Runic Power - GREATER SLOW - public static void postHitRunicGreaterSlow(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("slowChance", "RunicEffects", ConfigDefaultValues.slowChance); - int duration = (int) Config.getFloat("slowDuration", "RunicEffects", ConfigDefaultValues.slowDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 2), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - SWIFTNESS - public static void postHitRunicSwiftness(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("swiftnessChance", "RunicEffects", ConfigDefaultValues.swiftnessChance); - int duration = (int) Config.getFloat("swiftnessDuration", "RunicEffects", ConfigDefaultValues.swiftnessDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 0), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER SWIFTNESS - public static void postHitRunicGreaterSwiftness(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("swiftnessChance", "RunicEffects", ConfigDefaultValues.swiftnessChance); - int duration = (int) Config.getFloat("swiftnessDuration", "RunicEffects", ConfigDefaultValues.swiftnessDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - FLOAT - public static void postHitRunicFloat(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("floatChance", "RunicEffects", ConfigDefaultValues.floatChance); - int duration = (int) Config.getFloat("floatDuration", "RunicEffects", ConfigDefaultValues.floatDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration, 2), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER FLOAT - public static void postHitRunicGreaterFloat(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("floatChance", "RunicEffects", ConfigDefaultValues.floatChance); - int duration = (int) Config.getFloat("floatDuration", "RunicEffects", ConfigDefaultValues.floatDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration, 3), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - ZEPHYR - public static void postHitRunicZephyr(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("zephyrChance", "RunicEffects", ConfigDefaultValues.zephyrChance); - int duration = (int) Config.getFloat("zephyrDuration", "RunicEffects", ConfigDefaultValues.zephyrDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, 0), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 0), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER ZEPHYR - public static void postHitRunicGreaterZephyr(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("zephyrChance", "RunicEffects", ConfigDefaultValues.zephyrChance); - int duration = (int) Config.getFloat("zephyrDuration", "RunicEffects", ConfigDefaultValues.zephyrDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration, 1), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - SHIELDING - public static void postHitRunicShielding(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("shieldingChance", "RunicEffects", ConfigDefaultValues.shieldingChance); - int duration = (int) Config.getFloat("shieldingDuration", "RunicEffects", ConfigDefaultValues.shieldingDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, duration, 0), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER SHIELDING - public static void postHitRunicGreaterShielding(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("shieldingChance", "RunicEffects", ConfigDefaultValues.shieldingChance); - int duration = (int) Config.getFloat("shieldingDuration", "RunicEffects", ConfigDefaultValues.shieldingDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, duration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - STONESKIN - public static void postHitRunicStoneskin(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("stoneskinChance", "RunicEffects", ConfigDefaultValues.stoneskinChance); - int duration = (int) Config.getFloat("stoneskinDuration", "RunicEffects", ConfigDefaultValues.stoneskinDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 1), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, duration, 0), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 0), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_02.get(), - attacker.getSoundCategory(), 0.3f, 1.3f); - } - } - - // Runic Power - GREATER STONESKIN - public static void postHitRunicGreaterStoneskin(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("stoneskinChance", "RunicEffects", ConfigDefaultValues.stoneskinChance); - int duration = (int) Config.getFloat("stoneskinDuration", "RunicEffects", ConfigDefaultValues.stoneskinDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 2), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, duration, 0), attacker); - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_02.get(), - attacker.getSoundCategory(), 0.3f, 1.1f); - } - } - - // Runic Power - TRAILBLAZE - public static void postHitRunicTrailblaze(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("trailblazeChance", "RunicEffects", ConfigDefaultValues.trailblazeChance); - int duration = (int) Config.getFloat("trailblazeDuration", "RunicEffects", ConfigDefaultValues.trailblazeDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 1), attacker); - attacker.setOnFireFor(duration / 20); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER TRAILBLAZE - public static void postHitRunicGreaterTrailblaze(LivingEntity attacker) { - int hitChance = (int) Config.getFloat("trailblazeChance", "RunicEffects", ConfigDefaultValues.trailblazeChance); - int duration = (int) Config.getFloat("trailblazeDuration", "RunicEffects", ConfigDefaultValues.trailblazeDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - attacker.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration, 2), attacker); - attacker.setOnFireFor(duration / 20); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - WEAKNESS - public static void postHitRunicWeaken(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("weakenChance", "RunicEffects", ConfigDefaultValues.weakenChance); - int duration = (int) Config.getFloat("weakenDuration", "RunicEffects", ConfigDefaultValues.weakenDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, 0), attacker); - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - GREATER WEAKNESS - public static void postHitRunicGreaterWeaken(LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("weakenChance", "RunicEffects", ConfigDefaultValues.weakenChance); - int duration = (int) Config.getFloat("weakenDuration", "RunicEffects", ConfigDefaultValues.weakenDuration); - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration, 1), attacker); - target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 2), attacker); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - } - - // Runic Power - IMBUED - public static void postHitRunicImbued(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("imbuedChance", "RunicEffects", ConfigDefaultValues.imbuedChance); - int damage = 6 - ((stack.getDamage() / stack.getMaxDamage()) * 100) / 20; - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.timeUntilRegen = 0; - target.damage(attacker.getDamageSources().magic(), damage); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.2f, 1.8f); - } - } - - // Runic Power - GREATER IMBUED - public static void postHitRunicGreaterImbued(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int hitChance = (int) Config.getFloat("imbuedChance", "RunicEffects", ConfigDefaultValues.imbuedChance); - int damage = 10 - ((stack.getDamage() / stack.getMaxDamage()) * 100) / 10; - - if (attacker.getRandom().nextInt(100) <= hitChance) { - target.timeUntilRegen = 0; - target.damage(attacker.getDamageSources().magic(), damage); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.2f, 1.8f); - } - } - - // Runic Power - PinCushion - public static void postHitRunicPinCushion(LivingEntity target, LivingEntity attacker) { - int stuckArrows = attacker.getStuckArrowCount(); - target.damage(attacker.getDamageSources().generic(), stuckArrows); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - - // Runic Power - Greater PinCushion - public static void postHitRunicGreaterPinCushion(LivingEntity target, LivingEntity attacker) { - int stuckArrows = attacker.getStuckArrowCount(); - target.damage(attacker.getDamageSources().generic(), stuckArrows * 2); - attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), - attacker.getSoundCategory(), 0.1f, 1.8f); - } - - // Nether Power - ECHO - public static void postHitNetherEcho(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int amp = 0; - //increase damage if 2H wep - if (HelperMethods.isUniqueTwohanded(stack)) - amp = 2; - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.ECHO, 20, amp), attacker); - } - - // Nether Power - BERSERK - public static void postHitNetherBerserk(ItemStack stack, LivingEntity target, LivingEntity attacker) { - int amp = 2; - //increase damage if 2H wep - if (HelperMethods.isUniqueTwohanded(stack)) - amp = 4; - if (attacker.getArmor() < 10) { - target.setHealth(target.getHealth() - amp); - attacker.heal((float) amp / 2); - } - } - - // Nether Power - RADIANCE - public static void postHitNetherRadiance(LivingEntity target, LivingEntity attacker) { - if (target.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 200, 4), attacker); - } - } - - // Nether Power - ONSLAUGHT - public static void postHitNetherOnslaught(LivingEntity target, LivingEntity attacker) { - if (target.hasStatusEffect(StatusEffects.SLOWNESS) && !attacker.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, 80, 0), attacker); - } - } - - // Nether Power - NULLIFICATION - public static void postHitNetherNullification(LivingEntity user) { - if (!user.hasStatusEffect(EffectRegistry.BATTLE_FATIGUE)) { - if (!user.getWorld().isClient()) { - ServerWorld serverWorld = (ServerWorld) user.getWorld(); - BlockState currentState = serverWorld.getBlockState(user.getBlockPos().up(4).offset(user.getMovementDirection(), 3)); - BlockState state = Blocks.AIR.getDefaultState(); - if (currentState == state) { - serverWorld.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_SWORD_EARTH_ATTACK_01.get(), - user.getSoundCategory(), 0.4f, 0.8f); - BattleStandardEntity banner = EntityRegistry.BATTLESTANDARD.get().spawn( - serverWorld, - user.getBlockPos().up(4).offset(user.getMovementDirection(), 3), - SpawnReason.MOB_SUMMONED); - if (banner != null) { - banner.setVelocity(0, -1, 0); - banner.ownerEntity = user; - banner.decayRate = 3; - banner.standardType = "nullification"; - banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); - } - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.BATTLE_FATIGUE, 800, 0), user); - } - } - } - } - - - // Runic Power - EMPTY - public static void postHitRunicEmpty(ItemStack stack, LivingEntity target, LivingEntity attacker) { - - - } - - // ------- ON STOPPED USING ------- // - - public static void stoppedUsingRunicMomentum(ItemStack stack, LivingEntity user) { - //Player dash end - if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { - user.setVelocity(0, 0, 0); // Stop player at end of charge - user.velocityModified = true; - } - } - - - // ------- USAGE TICK ------- // - - - //Runic Power - MOMENTUM - public static void usageTickRunicMomentum(ItemStack stack, LivingEntity user, int remainingUseTicks) { - int skillCooldown = (int) Config.getFloat("momentumCooldown", "RunicEffects", ConfigDefaultValues.momentumCooldown); - if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user.isOnGround()) { - //Player dash forward - if (remainingUseTicks == 12 || remainingUseTicks == 13 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { - user.setVelocity(user.getRotationVector().multiply(+3)); - user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent player flying to the heavens - user.velocityModified = true; - if (user instanceof PlayerEntity player) { - player.getItemCooldownManager().set(stack.getItem(), skillCooldown); - } - } - } - } - - //Runic Power - GREATER MOMENTUM - public static void usageTickRunicGreaterMomentum(ItemStack stack, LivingEntity user, int remainingUseTicks) { - int skillCooldown = (int) Config.getFloat("momentumCooldown", "RunicEffects", ConfigDefaultValues.momentumCooldown); - if (user.getEquippedStack(EquipmentSlot.MAINHAND) == stack && user.isOnGround()) { - //Player dash forward - if (remainingUseTicks == 10 || remainingUseTicks == 13 && user.getEquippedStack(EquipmentSlot.MAINHAND) == stack) { - user.setVelocity(user.getRotationVector().multiply(+3)); - user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent player flying to the heavens - user.velocityModified = true; - if (user instanceof PlayerEntity player) { - player.getItemCooldownManager().set(stack.getItem(), skillCooldown); - } - } - } - } - - // ------- INVENTORY TICK ------- // - - - // Runic Power - UNSTABLE - public static void inventoryTickRunicUnstable(LivingEntity user) { - int duration = (int) Config.getFloat("unstableDuration", "RunicEffects", ConfigDefaultValues.unstableDuration); - int frequency = (int) Config.getFloat("unstableFrequency", "RunicEffects", ConfigDefaultValues.unstableFrequency); - if (user.age % frequency == 0) { - int random = (int) (Math.random() * 100); - if (random < 10) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.SPEED, duration)); - else if (random < 20) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration)); - else if (random < 30) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, duration)); - else if (random < 40) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.INVISIBILITY, duration)); - else if (random < 50) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, duration)); - else if (random < 60) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.JUMP_BOOST, duration)); - else if (random < 70) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, duration)); - else if (random < 80) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.DOLPHINS_GRACE, duration)); - else if (random < 90) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, duration)); - else if (random < 95) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, duration)); - else if (random < 100) - user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOW_FALLING, duration)); - } - } - - // Runic Power - ACTIVE DEFENCE - public static void inventoryTickRunicActiveDefence(World world, LivingEntity user) { - if (!world.isClient() && user instanceof PlayerEntity player && player.getInventory().contains(Items.ARROW.getDefaultStack())) { - int frequency = (int) Config.getFloat("activeDefenceFrequency", "RunicEffects", ConfigDefaultValues.activeDefenceFrequency); - if (player.age % frequency == 0) { - int sradius = (int) Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius); - int vradius = (int) (Config.getFloat("activeDefenceRadius", "RunicEffects", ConfigDefaultValues.activeDefenceRadius) / 2); - double x = player.getX(); - double y = player.getY(); - double z = player.getZ(); - Box box = new Box(x + sradius, y + vradius, z + sradius, x - sradius, y - vradius, z - sradius); - for (Entity entity : world.getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { - - if (entity instanceof LivingEntity le && HelperMethods.checkFriendlyFire(le, player)) { - - int arrowSlot = player.getInventory().getSlotWithStack(Items.ARROW.getDefaultStack()); - ItemStack arrowStack = player.getInventory().getStack(arrowSlot); - int randomc = (int) (Math.random() * 100); - if (randomc < 15) { - arrowStack.decrement(1); - } - ArrowEntity arrow = new ArrowEntity(EntityType.ARROW, world); - arrow.updatePosition(player.getX(), (player.getY() + 1.5), player.getZ()); - arrow.setOwner(player); - arrow.setVelocity(le.getX() - player.getX(), (le.getY() - player.getY()) - 1, le.getZ() - player.getZ()); - world.spawnEntity(arrow); - break; - } - } - } - } - } - - // Runic Power - FROST WARD - public static void inventoryTickRunicFrostWard(World world, LivingEntity user) { - int frequency = (int) Config.getFloat("frostWardFrequency", "RunicEffects", ConfigDefaultValues.frostWardFrequency); - int duration = (int) Config.getFloat("frostWardDuration", "RunicEffects", ConfigDefaultValues.frostWardDuration); - if (user.age % frequency == 0) { - int sradius = (int) Config.getFloat("frostWardRadius", "RunicEffects", ConfigDefaultValues.frostWardRadius); - int vradius = (int) (Config.getFloat("frostWardRadius", "RunicEffects", ConfigDefaultValues.frostWardRadius) / 2); - double x = user.getX(); - double y = user.getY(); - double z = user.getZ(); - ServerWorld serverWorld = (ServerWorld) world; - Box box = new Box(x + sradius, y + vradius, z + sradius, x - sradius, y - vradius, z - sradius); - for (Entity entity : serverWorld.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { - - if (entity instanceof LivingEntity le && HelperMethods.checkFriendlyFire(le, user)) { - - if (le.distanceTo(user) < sradius) { - SnowballEntity snowball = new SnowballEntity(EntityType.SNOWBALL, serverWorld); - snowball.updatePosition(user.getX(), (user.getY() + 1.5), user.getZ()); - snowball.setOwner(user); - le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration)); - snowball.setVelocity(le.getX() - user.getX(), (le.getY() - user.getY()) - 1, le.getZ() - user.getZ()); - serverWorld.spawnEntity(snowball); - } - } - } - } - } -} \ No newline at end of file diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index a3bbd96a..e6095000 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1103,216 +1103,172 @@ "item.simplyswords.compat.scaleHealing": "§7Ability scales with §aHealing§7 spell power", - "text.autoconfig.simplyswords_main.title" : "Simply Swords", - "text.autoconfig.simplyswords_main.category.general" : "General", - "text.autoconfig.simplyswords_main.category.gem_effects" : "Gem Effects", - "text.autoconfig.simplyswords_main.category.loot" : "Loot", - "text.autoconfig.simplyswords_main.category.runic_effects" : "Runic Effects", - "text.autoconfig.simplyswords_main.category.status_effects" : "Status Effects", - "text.autoconfig.simplyswords_main.category.unique_effects" : "Unique Effects", - "text.autoconfig.simplyswords_main.category.weapon_attributes" : "Weapon Attributes", - - - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_positiveDamageModifier.@PrefixText" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7\nThese values should be §4THE SAME ON BOTH CLIENT AND SERVER§7\nThe damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + positive_modifier - negative_modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Positive Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_positiveDamageModifier": "Longsword + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_positiveDamageModifier": "Twinblade + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_positiveDamageModifier": "Rapier + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_positiveDamageModifier": "Katana + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_positiveDamageModifier": "Sai + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_positiveDamageModifier": "Spear + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_positiveDamageModifier": "Glaive + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_positiveDamageModifier": "Warglaive + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_positiveDamageModifier": "Cutlass + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_positiveDamageModifier": "Claymore + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_positiveDamageModifier": "Greataxe + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_positiveDamageModifier": "Greathammer + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_positiveDamageModifier": "Chakram + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_positiveDamageModifier": "Scythe + damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_positiveDamageModifier": "Halberd + damage modifier", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_negativeDamageModifier.@PrefixText" : "§a[Negative Damage Modifiers]§7\nAdding 3 to a value below will DECREASE the in-game damage of that weapon type by 3.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_negativeDamageModifier": "Longsword - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_negativeDamageModifier": "Twinblade - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_negativeDamageModifier": "Rapier - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_negativeDamageModifier": "Katana - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_negativeDamageModifier": "Sai - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_negativeDamageModifier": "Spear - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_negativeDamageModifier": "Glaive - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_negativeDamageModifier": "Warglaive - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_negativeDamageModifier": "Cutlass - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_negativeDamageModifier": "Claymore - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_negativeDamageModifier": "Greataxe - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_negativeDamageModifier": "Greathammer - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_negativeDamageModifier": "Chakram - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_negativeDamageModifier": "Scythe - damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_negativeDamageModifier": "Halberd - damage modifier", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.iron_damageModifier.@PrefixText" : "§a[Base Damage Modifiers]§7\nPositive & Negative damage modifiers scale off these base values.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.iron_damageModifier": "Iron base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gold_damageModifier": "Gold base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.diamond_damageModifier": "Diamond base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.netherite_damageModifier": "Netherite base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.runic_damageModifier": "Runic base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.adamantite_damageModifier": "Adamantite base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.aquarium_damageModifier": "Aquarium base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.banglum_damageModifier": "Banglum base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.carmot_damageModifier": "Carmot base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.kyber_damageModifier": "Kyber base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mythril_damageModifier": "Mythril base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.orichalcum_damageModifier": "Orichalcum base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.durasteel_damageModifier": "Durasteel base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.osmium_damageModifier": "Osmium base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.prometheum_damageModifier": "Prometheum base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.quadrillum_damageModifier": "Quadrillum base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.runite_damageModifier": "Runite base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starPlatinum_damageModifier": "Star Platinum base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bronze_damageModifier": "Bronze base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.copper_damageModifier": "Copper base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.steel_damageModifier": "Steel base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.palladium_damageModifier": "Palladium base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormyx_damageModifier": "Stormyx base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.celestium_damageModifier": "Celestium base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.metallurgium_damageModifier": "Metallurgium base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobber_damageModifier": "Gobber base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobberNether_damageModifier": "Gobber Nether base damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobberEnd_damageModifier": "Gobber End base damage modifier", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_attackSpeed.@PrefixText" : "§a[Attack Speed Modifiers]§7\nRecommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_attackSpeed": "Longsword attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_attackSpeed": "Twinblade attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_attackSpeed": "Rapier attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_attackSpeed": "Katana attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_attackSpeed": "Sai attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_attackSpeed": "Spear attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_attackSpeed": "Glaive attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_attackSpeed": "Warglaive attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_attackSpeed": "Cutlass attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_attackSpeed": "Claymore attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_attackSpeed": "Greataxe attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_attackSpeed": "Greathammer damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_attackSpeed": "Chakram attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_attackSpeed": "Scythe attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_attackSpeed": "Halberd attack speed", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_damageModifier.@PrefixText" : "§6[UNIQUE ATTRIBUTES CONFIGURATION]§7\nUniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_damageModifier": "§6Brimstone§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.swordonastick_damageModifier": "Sword on a Stick damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberblade_damageModifier": "§6Emberblade§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulrender_damageModifier": "§6Soulrender§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.frostfall_damageModifier": "§6Frostfall§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.livyatan_damageModifier": "§6Livyatan§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.lichblade_damageModifier": "§6Lichblade§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sunfire_damageModifier": "§6Sunfire§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.harbinger_damageModifier": "§6Harbinger§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberlash_damageModifier": "§6Emberlash§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.tempest_damageModifier": "§6Tempest§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.flamewind_damageModifier": "§6Flamewind§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.enigma_damageModifier": "§6Enigma§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magispear_damageModifier": "§6Magispear§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiblade_damageModifier": "§6Magiblade§7 damage modifier", - "text.autoconfig.simplyswords_main.option.weapon_attributes.caelestis_damageModifier": "§6Caelestis§7 damage modifier", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_attackSpeed.@PrefixText" : "§6[Attack Speed Modifiers]§7\nRecommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_attackSpeed": "§6Brimstone§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.swordonastick_attackSpeed": "§6Sword on a Stick attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberblade_attackSpeed": "§6Emberblade§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulrender_attackSpeed": "§6Soulrender§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.frostfall_attackSpeed": "§6Frostfall§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.livyatan_attackSpeed": "§6Livyatan§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.lichblade_attackSpeed": "§6Lichblade§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sunfire_attackSpeed": "§6Sunfire§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.harbinger_attackSpeed": "§6Harbinger§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberlash_attackSpeed": "§6Emberlash§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.tempest_attackSpeed": "§6Tempest§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.flamewind_attackSpeed": "§6Flamewind§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.enigma_attackSpeed": "§6Enigma§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magispear_attackSpeed": "§6Magispear§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiblade_attackSpeed": "§6Magiblade§7 attack speed", - "text.autoconfig.simplyswords_main.option.weapon_attributes.caelestis_attackSpeed": "§6Caelestis§7 attack speed", - - - - "text.autoconfig.simplyswords_main.option.runic_effects.enableActiveDefence.@PrefixText" : "§a[Runic Power Blacklisting]§7\nSetting any of the below values to false will prevent that runic power from being obtainable.", - "text.autoconfig.simplyswords_main.option.runic_effects.enableActiveDefence": "Enable Active Defence", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFloat": "Enable Float", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterFloat": "Enable Greater Float", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFreeze": "Enable Freeze", - "text.autoconfig.simplyswords_main.option.runic_effects.enableShielding": "Enable Shielding", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterShielding": "Enable Greater Shielding", - "text.autoconfig.simplyswords_main.option.runic_effects.enableSlow": "Enable Slow", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterSlow": "Enable Greater Slow", - "text.autoconfig.simplyswords_main.option.runic_effects.enableStoneskin": "Enable Stoneskin", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterStoneskin": "Enable Greater Stoneskin", - "text.autoconfig.simplyswords_main.option.runic_effects.enableSwiftness": "Enable Swiftness", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterSwiftness": "Enable Greater Swiftness", - "text.autoconfig.simplyswords_main.option.runic_effects.enableTrailblaze": "Enable Trailblaze", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterTrailblaze": "Enable Greater Trailblaze", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWeaken": "Enable Weaken", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterWeaken": "Enable Greater Weaken", - "text.autoconfig.simplyswords_main.option.runic_effects.enableZephyr": "Enable Zephyr", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterZephyr": "Enable Greater Zephyr", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFrostWard": "Enable Frost Ward", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWildfire": "Enable Wildfire", - "text.autoconfig.simplyswords_main.option.runic_effects.enableUnstable": "Enable Unstable", - "text.autoconfig.simplyswords_main.option.runic_effects.enableMomentum": "Enable Momentum", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterMomentum": "Enable Greater Momentum", - "text.autoconfig.simplyswords_main.option.runic_effects.enableImbued": "Enable Imbued", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterImbued": "Enable Greater Imbued", - "text.autoconfig.simplyswords_main.option.runic_effects.enablePincushion": "Enable Pincushion", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterPincushion": "Enable Greater Pincushion", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWard": "Enable Ward", - "text.autoconfig.simplyswords_main.option.runic_effects.enableImmolate": "Enable Immolate", + "simplyswords.general" : "General", + "simplyswords.gem_powers" : "Gem Effects", + "simplyswords.loot" : "Loot", + "simplyswords.status_effects" : "Status Effects", + "simplyswords.unique_effects" : "Unique Effects", + "simplyswords.weapon_attributes" : "Weapon Attributes", + + + + "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier.@PrefixText" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7\nThese values should be §4THE SAME ON BOTH CLIENT AND SERVER§7\nThe damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + positive_modifier - negative_modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Positive Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", + "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Longsword + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Twinblade + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Rapier + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Katana + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Sai + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Spear + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Glaive + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Warglaive + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Cutlass + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Claymore + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Greataxe + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Greathammer + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Chakram + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Scythe + damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Halberd + damage modifier", + + "simplyswords.weapon_attributes.materialDamageModifier" : "§a[Base Damage Modifiers]§7", + "simplyswords.weapon_attributes.materialDamageModifier.desc" : "Positive & Negative damage modifiers scale off these base values.", + "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals" : "Requires Mythic Metals", + "simplyswords.weapon_attributes.materialDamageModifier.gobber2" : "Requires Gobber", + "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Netherite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Runic base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Adamantite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Aquarium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Banglum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Carmot base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Kyber base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Mythril base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Orichalcum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Durasteel base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Osmium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Prometheum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Quadrillum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Runite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Platinum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Bronze base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Copper base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Steel base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Palladium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Stormyx base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Celestium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Metallurgium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Gobber base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Gobber Nether base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Gobber End base damage modifier", + + "simplyswords.weapon_attributes.typeAttackSpeed" : "§a[Attack Speed Modifiers]", + "simplyswords.weapon_attributes.typeAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", + "simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Longsword attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Twinblade attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Rapier attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Katana attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Sai attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Spear attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Glaive attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Warglaive attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Cutlass attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Claymore attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Greataxe attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Greathammer damage modifier", + "simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Chakram attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", + + "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[UNIQUE ATTRIBUTES CONFIGURATION]", + "simplyswords.weapon_attributes.uniqueDamageModifier.desc" : "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", + "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "Sword on a Stick damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6Emberblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6Soulrender§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6Frostfall§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6Livyatan§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6Lichblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6Sunfire§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6Harbinger§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6Emberlash§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6Tempest§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6Flamewind§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6Enigma§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6Magispear§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", + + "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§6[Attack Speed Modifiers]", + "simplyswords.weapon_attributes.uniqueAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", + "simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6Emberblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6Soulrender§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6Frostfall§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6Livyatan§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6Lichblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6Sunfire§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6Harbinger§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6Emberlash§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6Tempest§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6Flamewind§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6Enigma§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6Magispear§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6Magiblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6Caelestis§7 attack speed", "simplyswords.loot.enableLootDrops": "Enable loot drops", "simplyswords.loot.enableLootDrops.desc" : "Disabling this setting will prevent Simply Swords from generating loot in chests.", @@ -1337,7 +1293,6 @@ "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", - "simplyswords.general": "General Settings", "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", "simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", "simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", @@ -1604,7 +1559,6 @@ "simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", "simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", - "simplyswords.gem_powers" : "Runic and Fused Gem Powers", "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", "simplyswords.gem_powers.disabledPowers.desc" : "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", "simplyswords.gem_powers.swiftness" : "§b[Swiftness]§7", @@ -1632,7 +1586,7 @@ "simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", "simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", - "text.autoconfig.simplyswords_main.option.status_effects.echoDamage": "Echo base damage", + "simplyswords.status_effects.echoDamage": "Echo base damage", "simplyswords.config.basic_settings.chance": "Chance", "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsPreLaunch.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsPreLaunch.java deleted file mode 100644 index e3cb5fc6..00000000 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/SimplySwordsPreLaunch.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.sweenus.simplyswords.fabric; - -import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint; -import net.sweenus.simplyswords.config.SimplySwordsConfig; - -import java.io.File; - -public class SimplySwordsPreLaunch implements PreLaunchEntrypoint { - - //Checks for config before mods initialise. When missing, create the config to prevent dependent mod crashes. - public static void configDetect() { - File file = new File("config/simplyswords_extra/loot_config.json5"); - if (!file.exists()) { - SimplySwordsConfig.init(); - System.out.println("Simply Swords loot_config is missing. Creating fresh config file now."); - } - } - - @Override - public void onPreLaunch() { - configDetect(); - } -// -} diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/client/ModMenuIntegration.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/client/ModMenuIntegration.java deleted file mode 100644 index 3c85386a..00000000 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/client/ModMenuIntegration.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.sweenus.simplyswords.fabric.client; - -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; -import me.shedaniel.autoconfig.AutoConfig; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.sweenus.simplyswords.config.ConfigWrapper; - -@Environment(EnvType.CLIENT) -public class ModMenuIntegration implements ModMenuApi { - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> AutoConfig.getConfigScreen(ConfigWrapper.class, parent).get(); - } -} \ No newline at end of file diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java index 045848e9..f50624e0 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java @@ -7,90 +7,59 @@ public class MythicMetalsCompat { //Compat for Mythic Metals - static float longsword_positive_modifier = Config.getFloat("longsword_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_positiveDamageModifier); - static float twinblade_positive_modifier = Config.getFloat("twinblade_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_positiveDamageModifier); - static float rapier_positive_modifier = Config.getFloat("rapier_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_positiveDamageModifier); - static float katana_positive_modifier = Config.getFloat("katana_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_positiveDamageModifier); - static float sai_positive_modifier = Config.getFloat("sai_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_positiveDamageModifier); - static float spear_positive_modifier = Config.getFloat("spear_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_positiveDamageModifier); - static float glaive_positive_modifier = Config.getFloat("glaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_positiveDamageModifier); - static float warglaive_positive_modifier = Config.getFloat("warglaive_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_positiveDamageModifier); - static float cutlass_positive_modifier = Config.getFloat("cutlass_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_positiveDamageModifier); - static float claymore_positive_modifier = Config.getFloat("claymore_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_positiveDamageModifier); - static float greataxe_positive_modifier = Config.getFloat("greataxe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_positiveDamageModifier); - static float greathammer_positive_modifier = Config.getFloat("greathammer_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_positiveDamageModifier); - static float chakram_positive_modifier = Config.getFloat("chakram_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_positiveDamageModifier); - static float scythe_positive_modifier = Config.getFloat("scythe_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_positiveDamageModifier); - static float halberd_positive_modifier = Config.getFloat("halberd_positiveDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_positiveDamageModifier); - - static float longsword_negative_modifier = Config.getFloat("longsword_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.longsword_negativeDamageModifier); - static float twinblade_negative_modifier = Config.getFloat("twinblade_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.twinblade_negativeDamageModifier); - static float rapier_negative_modifier = Config.getFloat("rapier_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.rapier_negativeDamageModifier); - static float sai_negative_modifier = Config.getFloat("sai_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.sai_negativeDamageModifier); - static float spear_negative_modifier = Config.getFloat("spear_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.spear_negativeDamageModifier); - static float katana_negative_modifier = Config.getFloat("katana_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.katana_negativeDamageModifier); - static float glaive_negative_modifier = Config.getFloat("glaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.glaive_negativeDamageModifier); - static float warglaive_negative_modifier = Config.getFloat("warglaive_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.warglaive_negativeDamageModifier); - static float cutlass_negative_modifier = Config.getFloat("cutlass_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.cutlass_negativeDamageModifier); - static float claymore_negative_modifier = Config.getFloat("claymore_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.claymore_negativeDamageModifier); - static float greataxe_negative_modifier = Config.getFloat("greataxe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greataxe_negativeDamageModifier); - static float greathammer_negative_modifier = Config.getFloat("greathammer_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.greathammer_negativeDamageModifier); - static float chakram_negative_modifier = Config.getFloat("chakram_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.chakram_negativeDamageModifier); - static float scythe_negative_modifier = Config.getFloat("scythe_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.scythe_negativeDamageModifier); - static float halberd_negative_modifier = Config.getFloat("halberd_negativeDamageModifier", "WeaponAttributes", ConfigDefaultValues.halberd_negativeDamageModifier); - - static float longsword_attackspeed = Config.getFloat("longsword_attackSpeed", "WeaponAttributes", ConfigDefaultValues.longsword_attackSpeed); - static float twinblade_attackspeed = Config.getFloat("twinblade_attackSpeed", "WeaponAttributes", ConfigDefaultValues.twinblade_attackSpeed); - static float rapier_attackspeed = Config.getFloat("rapier_attackSpeed", "WeaponAttributes", ConfigDefaultValues.rapier_attackSpeed); - static float sai_attackspeed = Config.getFloat("sai_attackSpeed", "WeaponAttributes", ConfigDefaultValues.sai_attackSpeed); - static float spear_attackspeed = Config.getFloat("spear_attackSpeed", "WeaponAttributes", ConfigDefaultValues.spear_attackSpeed); - static float katana_attackspeed = Config.getFloat("katana_attackSpeed", "WeaponAttributes", ConfigDefaultValues.katana_attackSpeed); - static float glaive_attackspeed = Config.getFloat("glaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.glaive_attackSpeed); - static float warglaive_attackspeed = Config.getFloat("warglaive_attackSpeed", "WeaponAttributes", ConfigDefaultValues.warglaive_attackSpeed); - static float cutlass_attackspeed = Config.getFloat("cutlass_attackSpeed", "WeaponAttributes", ConfigDefaultValues.cutlass_attackSpeed); - static float claymore_attackspeed = Config.getFloat("claymore_attackSpeed", "WeaponAttributes", ConfigDefaultValues.claymore_attackSpeed); - static float greataxe_attackspeed = Config.getFloat("greataxe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greataxe_attackSpeed); - static float greathammer_attackspeed = Config.getFloat("greathammer_attackSpeed", "WeaponAttributes", ConfigDefaultValues.greathammer_attackSpeed); - static float chakram_attackspeed = Config.getFloat("chakram_attackSpeed", "WeaponAttributes", ConfigDefaultValues.chakram_attackSpeed); - static float scythe_attackspeed = Config.getFloat("scythe_attackSpeed", "WeaponAttributes", ConfigDefaultValues.scythe_attackSpeed); - static float halberd_attackspeed = Config.getFloat("halberd_attackSpeed", "WeaponAttributes", ConfigDefaultValues.halberd_attackSpeed); - - - static int longsword_modifier = (int) (longsword_positive_modifier - longsword_negative_modifier); - static int twinblade_modifier = (int) (twinblade_positive_modifier - twinblade_negative_modifier); - static int rapier_modifier = (int) (rapier_positive_modifier - rapier_negative_modifier); - static int sai_modifier = (int) (sai_positive_modifier - sai_negative_modifier); - static int spear_modifier = (int) (spear_positive_modifier - spear_negative_modifier); - static int katana_modifier = (int) (katana_positive_modifier - katana_negative_modifier); - static int glaive_modifier = (int) (glaive_positive_modifier - glaive_negative_modifier); - static int warglaive_modifier = (int) (warglaive_positive_modifier - warglaive_negative_modifier); - static int cutlass_modifier = (int) (cutlass_positive_modifier - cutlass_negative_modifier); - static int chakram_modifier = (int) (chakram_positive_modifier - chakram_negative_modifier); - static int scythe_modifier = (int) (scythe_positive_modifier - scythe_negative_modifier); - static int claymore_modifier = (int) (claymore_positive_modifier - claymore_negative_modifier); - static int greathammer_modifier = (int) (greathammer_positive_modifier - greathammer_negative_modifier); - static int greataxe_modifier = (int) (greataxe_positive_modifier - greataxe_negative_modifier); - static int halberd_modifier = (int) (halberd_positive_modifier - halberd_negative_modifier); - static int adamantite_modifier = (int) Config.getFloat("adamantite_damageModifier", "WeaponAttributes", ConfigDefaultValues.adamantite_damageModifier); - static int aquarium_modifier = (int) Config.getFloat("aquarium_damageModifier", "WeaponAttributes", ConfigDefaultValues.aquarium_damageModifier); - static int banglum_modifier = (int) Config.getFloat("banglum_damageModifier", "WeaponAttributes", ConfigDefaultValues.banglum_damageModifier); - static int carmot_modifier = (int) Config.getFloat("carmot_damageModifier", "WeaponAttributes", ConfigDefaultValues.carmot_damageModifier); - static int kyber_modifier = (int) Config.getFloat("kyber_damageModifier", "WeaponAttributes", ConfigDefaultValues.kyber_damageModifier); - static int mythril_modifier = (int) Config.getFloat("mythril_damageModifier", "WeaponAttributes", ConfigDefaultValues.mythril_damageModifier); - static int orichalcum_modifier = (int) Config.getFloat("orichalcum_damageModifier", "WeaponAttributes", ConfigDefaultValues.orichalcum_damageModifier); - static int durasteel_modifier = (int) Config.getFloat("durasteel_damageModifier", "WeaponAttributes", ConfigDefaultValues.durasteel_damageModifier); - static int osmium_modifier = (int) Config.getFloat("osmium_damageModifier", "WeaponAttributes", ConfigDefaultValues.osmium_damageModifier); - static int prometheum_modifier = (int) Config.getFloat("prometheum_damageModifier", "WeaponAttributes", ConfigDefaultValues.prometheum_damageModifier); - static int quadrillum_modifier = (int) Config.getFloat("quadrillum_damageModifier", "WeaponAttributes", ConfigDefaultValues.quadrillum_damageModifier); - static int runite_modifier = (int) Config.getFloat("runite_damageModifier", "WeaponAttributes", ConfigDefaultValues.runite_damageModifier); - static int star_platinum_modifier = (int) Config.getFloat("starPlatinum_damageModifier", "WeaponAttributes", ConfigDefaultValues.starPlatinum_damageModifier); - static int bronze_modifier = (int) Config.getFloat("bronze_damageModifier", "WeaponAttributes", ConfigDefaultValues.bronze_damageModifier); - static int copper_modifier = (int) Config.getFloat("copper_damageModifier", "WeaponAttributes", ConfigDefaultValues.copper_damageModifier); - static int steel_modifier = (int) Config.getFloat("steel_damageModifier", "WeaponAttributes", ConfigDefaultValues.steel_damageModifier); - static int palladium_modifier = (int) Config.getFloat("palladium_damageModifier", "WeaponAttributes", ConfigDefaultValues.palladium_damageModifier); - static int stormyx_modifier = (int) Config.getFloat("stormyx_damageModifier", "WeaponAttributes", ConfigDefaultValues.stormyx_damageModifier); - static int celestium_modifier = (int) Config.getFloat("celestium_damageModifier", "WeaponAttributes", ConfigDefaultValues.celestium_damageModifier); - static int metallurgium_modifier = (int) Config.getFloat("metallurgium_damageModifier", "WeaponAttributes", ConfigDefaultValues.metallurgium_damageModifier); + static float longsword_modifier = Config.weaponAttribute.typeDamageModifier.longsword_damageModifier; + static float twinblade_modifier = Config.weaponAttribute.typeDamageModifier.twinblade_damageModifier; + static float rapier_modifier = Config.weaponAttribute.typeDamageModifier.rapier_damageModifier; + static float katana_modifier = Config.weaponAttribute.typeDamageModifier.katana_damageModifier; + static float sai_modifier = Config.weaponAttribute.typeDamageModifier.sai_damageModifier; + static float spear_modifier = Config.weaponAttribute.typeDamageModifier.spear_damageModifier; + static float glaive_modifier = Config.weaponAttribute.typeDamageModifier.glaive_damageModifier; + static float warglaive_modifier = Config.weaponAttribute.typeDamageModifier.warglaive_damageModifier; + static float cutlass_modifier = Config.weaponAttribute.typeDamageModifier.cutlass_damageModifier; + static float claymore_modifier = Config.weaponAttribute.typeDamageModifier.claymore_damageModifier; + static float greataxe_modifier = Config.weaponAttribute.typeDamageModifier.greataxe_damageModifier; + static float greathammer_modifier = Config.weaponAttribute.typeDamageModifier.greathammer_damageModifier; + static float chakram_modifier = Config.weaponAttribute.typeDamageModifier.chakram_damageModifier; + static float scythe_modifier = Config.weaponAttribute.typeDamageModifier.scythe_damageModifier; + static float halberd_modifier = Config.weaponAttribute.typeDamageModifier.halberd_damageModifier; + + static float longsword_attackspeed = Config.weaponAttribute.typeAttackSpeed.longsword_attackSpeed; + static float twinblade_attackspeed = Config.weaponAttribute.typeAttackSpeed.twinblade_attackSpeed; + static float rapier_attackspeed = Config.weaponAttribute.typeAttackSpeed.rapier_attackSpeed; + static float sai_attackspeed = Config.weaponAttribute.typeAttackSpeed.sai_attackSpeed; + static float spear_attackspeed = Config.weaponAttribute.typeAttackSpeed.spear_attackSpeed; + static float katana_attackspeed = Config.weaponAttribute.typeAttackSpeed.katana_attackSpeed; + static float glaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.glaive_attackSpeed; + static float warglaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.warglaive_attackSpeed; + static float cutlass_attackspeed = Config.weaponAttribute.typeAttackSpeed.cutlass_attackSpeed; + static float claymore_attackspeed = Config.weaponAttribute.typeAttackSpeed.claymore_attackSpeed; + static float greataxe_attackspeed = Config.weaponAttribute.typeAttackSpeed.greataxe_attackSpeed; + static float greathammer_attackspeed = Config.weaponAttribute.typeAttackSpeed.greathammer_attackSpeed; + static float chakram_attackspeed = Config.weaponAttribute.typeAttackSpeed.chakram_attackSpeed; + static float scythe_attackspeed = Config.weaponAttribute.typeAttackSpeed.scythe_attackSpeed; + static float halberd_attackspeed = Config.weaponAttribute.typeAttackSpeed.halberd_attackSpeed; + + + static float adamantite_modifier = Config.weaponAttribute.materialDamageModifier.adamantite_damageModifier.get(); + static float aquarium_modifier = Config.weaponAttribute.materialDamageModifier.aquarium_damageModifier.get(); + static float banglum_modifier = Config.weaponAttribute.materialDamageModifier.banglum_damageModifier.get(); + static float carmot_modifier = Config.weaponAttribute.materialDamageModifier.carmot_damageModifier.get(); + static float kyber_modifier = Config.weaponAttribute.materialDamageModifier.kyber_damageModifier.get(); + static float mythril_modifier = Config.weaponAttribute.materialDamageModifier.mythril_damageModifier.get(); + static float orichalcum_modifier = Config.weaponAttribute.materialDamageModifier.orichalcum_damageModifier.get(); + static float durasteel_modifier = Config.weaponAttribute.materialDamageModifier.durasteel_damageModifier.get(); + static float osmium_modifier = Config.weaponAttribute.materialDamageModifier.osmium_damageModifier.get(); + static float prometheum_modifier = Config.weaponAttribute.materialDamageModifier.prometheum_damageModifier.get(); + static float quadrillum_modifier = Config.weaponAttribute.materialDamageModifier.quadrillum_damageModifier.get(); + static float runite_modifier = Config.weaponAttribute.materialDamageModifier.runite_damageModifier.get(); + static float star_platinum_modifier = Config.weaponAttribute.materialDamageModifier.starPlatinum_damageModifier.get(); + static float bronze_modifier = Config.weaponAttribute.materialDamageModifier.bronze_damageModifier.get(); + static float copper_modifier = Config.weaponAttribute.materialDamageModifier.copper_damageModifier.get(); + static float steel_modifier = Config.weaponAttribute.materialDamageModifier.steel_damageModifier.get(); + static float palladium_modifier = Config.weaponAttribute.materialDamageModifier.palladium_damageModifier.get(); + static float stormyx_modifier = Config.weaponAttribute.materialDamageModifier.stormyx_damageModifier.get(); + static float celestium_modifier = Config.weaponAttribute.materialDamageModifier.celestium_damageModifier.get(); + static float metallurgium_modifier = Config.weaponAttribute.materialDamageModifier.metallurgium_damageModifier.get(); /* 1.21 @@ -1234,4 +1203,4 @@ public static void registerModItems() { */ -} +} \ No newline at end of file diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 5857b756..6e900991 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -26,12 +26,6 @@ "main": [ "net.sweenus.simplyswords.fabric.SimplySwordsFabric" ], - "preLaunch": [ - "net.sweenus.simplyswords.fabric.SimplySwordsPreLaunch" - ], - "modmenu": [ - "net.sweenus.simplyswords.fabric.client.ModMenuIntegration" - ], "dynamiclights": [ "net.sweenus.simplyswords.fabric.compat.DynamicLightsCompat" ] diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java index 58cd559f..cb77b5fc 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java @@ -5,55 +5,55 @@ public class GobberCompat { //Compat for Gobber - static float longsword_positive_modifier = SimplySwords.weaponAttributesConfig.longsword_positiveDamageModifier; - static float twinblade_positive_modifier = SimplySwords.weaponAttributesConfig.twinblade_positiveDamageModifier; - static float rapier_positive_modifier = SimplySwords.weaponAttributesConfig.rapier_positiveDamageModifier; - static float katana_positive_modifier = SimplySwords.weaponAttributesConfig.katana_positiveDamageModifier; - static float sai_positive_modifier = SimplySwords.weaponAttributesConfig.sai_positiveDamageModifier; - static float spear_positive_modifier = SimplySwords.weaponAttributesConfig.spear_positiveDamageModifier; - static float glaive_positive_modifier = SimplySwords.weaponAttributesConfig.glaive_positiveDamageModifier; - static float warglaive_positive_modifier = SimplySwords.weaponAttributesConfig.warglaive_positiveDamageModifier; - static float cutlass_positive_modifier = SimplySwords.weaponAttributesConfig.cutlass_positiveDamageModifier; - static float claymore_positive_modifier = SimplySwords.weaponAttributesConfig.claymore_positiveDamageModifier; - static float greataxe_positive_modifier = SimplySwords.weaponAttributesConfig.greataxe_positiveDamageModifier; - static float greathammer_positive_modifier = SimplySwords.weaponAttributesConfig.greathammer_positiveDamageModifier; - static float chakram_positive_modifier = SimplySwords.weaponAttributesConfig.chakram_positiveDamageModifier; - static float scythe_positive_modifier = SimplySwords.weaponAttributesConfig.scythe_positiveDamageModifier; - static float halberd_positive_modifier = SimplySwords.weaponAttributesConfig.halberd_positiveDamageModifier; - - static float longsword_negative_modifier = SimplySwords.weaponAttributesConfig.longsword_negativeDamageModifier; - static float twinblade_negative_modifier = SimplySwords.weaponAttributesConfig.twinblade_negativeDamageModifier; - static float rapier_negative_modifier = SimplySwords.weaponAttributesConfig.rapier_negativeDamageModifier; - static float sai_negative_modifier = SimplySwords.weaponAttributesConfig.sai_negativeDamageModifier; - static float spear_negative_modifier = SimplySwords.weaponAttributesConfig.spear_negativeDamageModifier; - static float katana_negative_modifier = SimplySwords.weaponAttributesConfig.katana_negativeDamageModifier; - static float glaive_negative_modifier = SimplySwords.weaponAttributesConfig.glaive_negativeDamageModifier; - static float warglaive_negative_modifier = SimplySwords.weaponAttributesConfig.warglaive_negativeDamageModifier; - static float cutlass_negative_modifier = SimplySwords.weaponAttributesConfig.cutlass_negativeDamageModifier; - static float claymore_negative_modifier = SimplySwords.weaponAttributesConfig.claymore_negativeDamageModifier; - static float greataxe_negative_modifier = SimplySwords.weaponAttributesConfig.greataxe_negativeDamageModifier; - static float greathammer_negative_modifier = SimplySwords.weaponAttributesConfig.greathammer_negativeDamageModifier; - static float chakram_negative_modifier = SimplySwords.weaponAttributesConfig.chakram_negativeDamageModifier; - static float scythe_negative_modifier = SimplySwords.weaponAttributesConfig.scythe_negativeDamageModifier; - static float halberd_negative_modifier = SimplySwords.weaponAttributesConfig.halberd_negativeDamageModifier; - - static float longsword_attackspeed = SimplySwords.weaponAttributesConfig.longsword_attackSpeed; - static float twinblade_attackspeed = SimplySwords.weaponAttributesConfig.twinblade_attackSpeed; - static float rapier_attackspeed = SimplySwords.weaponAttributesConfig.rapier_attackSpeed; - static float sai_attackspeed = SimplySwords.weaponAttributesConfig.sai_attackSpeed; - static float spear_attackspeed = SimplySwords.weaponAttributesConfig.spear_attackSpeed; - static float katana_attackspeed = SimplySwords.weaponAttributesConfig.katana_attackSpeed; - static float glaive_attackspeed = SimplySwords.weaponAttributesConfig.glaive_attackSpeed; - static float warglaive_attackspeed = SimplySwords.weaponAttributesConfig.warglaive_attackSpeed; - static float cutlass_attackspeed = SimplySwords.weaponAttributesConfig.cutlass_attackSpeed; - static float claymore_attackspeed = SimplySwords.weaponAttributesConfig.claymore_attackSpeed; - static float greataxe_attackspeed = SimplySwords.weaponAttributesConfig.greataxe_attackSpeed; - static float greathammer_attackspeed = SimplySwords.weaponAttributesConfig.greathammer_attackSpeed; - static float chakram_attackspeed = SimplySwords.weaponAttributesConfig.chakram_attackSpeed; - static float scythe_attackspeed = SimplySwords.weaponAttributesConfig.scythe_attackSpeed; - static float halberd_attackspeed = SimplySwords.weaponAttributesConfig.halberd_attackSpeed; - - static int longsword_modifier = (int) (longsword_positive_modifier - longsword_negative_modifier); + static float longsword_positive_modifier = SimplySwords.weaponAttributesConfigOld.longsword_positiveDamageModifier; + static float twinblade_positive_modifier = SimplySwords.weaponAttributesConfigOld.twinblade_positiveDamageModifier; + static float rapier_positive_modifier = SimplySwords.weaponAttributesConfigOld.rapier_positiveDamageModifier; + static float katana_positive_modifier = SimplySwords.weaponAttributesConfigOld.katana_positiveDamageModifier; + static float sai_positive_modifier = SimplySwords.weaponAttributesConfigOld.sai_positiveDamageModifier; + static float spear_positive_modifier = SimplySwords.weaponAttributesConfigOld.spear_positiveDamageModifier; + static float glaive_positive_modifier = SimplySwords.weaponAttributesConfigOld.glaive_positiveDamageModifier; + static float warglaive_positive_modifier = SimplySwords.weaponAttributesConfigOld.warglaive_positiveDamageModifier; + static float cutlass_positive_modifier = SimplySwords.weaponAttributesConfigOld.cutlass_positiveDamageModifier; + static float claymore_positive_modifier = SimplySwords.weaponAttributesConfigOld.claymore_positiveDamageModifier; + static float greataxe_positive_modifier = SimplySwords.weaponAttributesConfigOld.greataxe_positiveDamageModifier; + static float greathammer_positive_modifier = SimplySwords.weaponAttributesConfigOld.greathammer_positiveDamageModifier; + static float chakram_positive_modifier = SimplySwords.weaponAttributesConfigOld.chakram_positiveDamageModifier; + static float scythe_positive_modifier = SimplySwords.weaponAttributesConfigOld.scythe_positiveDamageModifier; + static float halberd_positive_modifier = SimplySwords.weaponAttributesConfigOld.halberd_positiveDamageModifier; + + static float longsword_negative_modifier = SimplySwords.weaponAttributesConfigOld.longsword_negativeDamageModifier; + static float twinblade_negative_modifier = SimplySwords.weaponAttributesConfigOld.twinblade_negativeDamageModifier; + static float rapier_negative_modifier = SimplySwords.weaponAttributesConfigOld.rapier_negativeDamageModifier; + static float sai_negative_modifier = SimplySwords.weaponAttributesConfigOld.sai_negativeDamageModifier; + static float spear_negative_modifier = SimplySwords.weaponAttributesConfigOld.spear_negativeDamageModifier; + static float katana_negative_modifier = SimplySwords.weaponAttributesConfigOld.katana_negativeDamageModifier; + static float glaive_negative_modifier = SimplySwords.weaponAttributesConfigOld.glaive_negativeDamageModifier; + static float warglaive_negative_modifier = SimplySwords.weaponAttributesConfigOld.warglaive_negativeDamageModifier; + static float cutlass_negative_modifier = SimplySwords.weaponAttributesConfigOld.cutlass_negativeDamageModifier; + static float claymore_negative_modifier = SimplySwords.weaponAttributesConfigOld.claymore_negativeDamageModifier; + static float greataxe_negative_modifier = SimplySwords.weaponAttributesConfigOld.greataxe_negativeDamageModifier; + static float greathammer_negative_modifier = SimplySwords.weaponAttributesConfigOld.greathammer_negativeDamageModifier; + static float chakram_negative_modifier = SimplySwords.weaponAttributesConfigOld.chakram_negativeDamageModifier; + static float scythe_negative_modifier = SimplySwords.weaponAttributesConfigOld.scythe_negativeDamageModifier; + static float halberd_negative_modifier = SimplySwords.weaponAttributesConfigOld.halberd_negativeDamageModifier; + + static float longsword_attackspeed = SimplySwords.weaponAttributesConfigOld.longsword_attackSpeed; + static float twinblade_attackspeed = SimplySwords.weaponAttributesConfigOld.twinblade_attackSpeed; + static float rapier_attackspeed = SimplySwords.weaponAttributesConfigOld.rapier_attackSpeed; + static float sai_attackspeed = SimplySwords.weaponAttributesConfigOld.sai_attackSpeed; + static float spear_attackspeed = SimplySwords.weaponAttributesConfigOld.spear_attackSpeed; + static float katana_attackspeed = SimplySwords.weaponAttributesConfigOld.katana_attackSpeed; + static float glaive_attackspeed = SimplySwords.weaponAttributesConfigOld.glaive_attackSpeed; + static float warglaive_attackspeed = SimplySwords.weaponAttributesConfigOld.warglaive_attackSpeed; + static float cutlass_attackspeed = SimplySwords.weaponAttributesConfigOld.cutlass_attackSpeed; + static float claymore_attackspeed = SimplySwords.weaponAttributesConfigOld.claymore_attackSpeed; + static float greataxe_attackspeed = SimplySwords.weaponAttributesConfigOld.greataxe_attackSpeed; + static float greathammer_attackspeed = SimplySwords.weaponAttributesConfigOld.greathammer_attackSpeed; + static float chakram_attackspeed = SimplySwords.weaponAttributesConfigOld.chakram_attackSpeed; + static float scythe_attackspeed = SimplySwords.weaponAttributesConfigOld.scythe_attackSpeed; + static float halberd_attackspeed = SimplySwords.weaponAttributesConfigOld.halberd_attackSpeed; + + static int longsword_modifier = (int) (longsword_positive_modifier); static int twinblade_modifier = (int) (twinblade_positive_modifier - twinblade_negative_modifier); static int rapier_modifier = (int) (rapier_positive_modifier - rapier_negative_modifier); static int sai_modifier = (int) (sai_positive_modifier - sai_negative_modifier); @@ -68,15 +68,15 @@ public class GobberCompat { static int greathammer_modifier = (int) (greathammer_positive_modifier - greathammer_negative_modifier); static int greataxe_modifier = (int) (greataxe_positive_modifier - greataxe_negative_modifier); static int halberd_modifier = (int) (halberd_positive_modifier - halberd_negative_modifier); - static int gobber_modifier = (int) SimplySwords.weaponAttributesConfig.gobber_damageModifier; - static int gobber_nether_modifier = (int) SimplySwords.weaponAttributesConfig.gobberNether_damageModifier; - static int gobber_end_modifier = (int) SimplySwords.weaponAttributesConfig.gobberEnd_damageModifier; + static int gobber_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobber_damageModifier; + static int gobber_nether_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobberNether_damageModifier; + static int gobber_end_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobberEnd_damageModifier; //GOBBER /* 1.21 public static final DeferredRegister GOBBER_ITEM = DeferredRegister.create(ForgeRegistries.ITEMS, SimplySwords.MOD_ID); - + public static final RegistryObject GOBBER_LONGSWORD = GOBBER_ITEM.register("gobber_compat/gobber/gobber_longsword", () -> new SimplySwordsSwordItem(ModToolMaterial.GOBBER, gobber_modifier + longsword_modifier, longsword_attackspeed, "gobber2:gobber2_ingot")); @@ -267,4 +267,4 @@ public static void registerModItems() { */ -} +} \ No newline at end of file From 3cee628e88b0d9ca7f41d2986de3d0c5218165b7 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 1 Nov 2024 09:15:20 -0400 Subject: [PATCH 27/37] optimize imports, excise cloth from codebase almost completely, carry over new lang keys to zh_cn --- .../sweenus/simplyswords/SimplySwords.java | 9 +- .../simplyswords/api/SimplySwordsAPI.java | 4 - .../model/BattleStandardDarkModel.java | 8 +- .../renderer/model/BattleStandardModel.java | 8 +- .../compat/EldritchEndCompat.java | 1 - .../simplyswords/compat/GobberCompat.java | 1 - .../config/ConfigDefaultValues.java | 615 --------- .../simplyswords/config/ConfigWrapper.java | 14 - .../simplyswords/config/GeneralConfig.java | 1 - .../config/WeaponAttributesConfigOld.java | 177 --- .../simplyswords/effect/EchoEffect.java | 1 - .../simplyswords/effect/StormEffect.java | 1 - .../simplyswords/effect/WildfireEffect.java | 2 - .../simplyswords/item/GobberEndSwordItem.java | 1 - .../simplyswords/item/RunefusedGemItem.java | 1 - .../simplyswords/item/RunicSwordItem.java | 1 - .../item/custom/DormantRelicSwordItem.java | 1 - .../item/custom/FlamewindSwordItem.java | 1 - .../item/custom/HarbingerSwordItem.java | 1 - .../item/custom/MoltenEdgeSwordItem.java | 1 - .../item/custom/RighteousRelicSwordItem.java | 1 - .../item/custom/TaintedRelicSwordItem.java | 2 - .../item/custom/TempestSwordItem.java | 1 - .../item/custom/WatcherSwordItem.java | 1 - .../item/custom/WatchingWarglaiveItem.java | 1 - .../item/custom/WhisperwindSwordItem.java | 1 - .../sweenus/simplyswords/power/PowerType.java | 1 - .../simplyswords/power/RunefusedGemPower.java | 7 - .../simplyswords/power/RunicGemPower.java | 2 - .../power/powers/BerserkPower.java | 2 - .../simplyswords/power/powers/EchoPower.java | 5 - .../simplyswords/power/powers/FloatPower.java | 2 +- .../power/powers/FreezePower.java | 2 +- .../power/powers/FrostWardPower.java | 5 - .../power/powers/ImbuedPower.java | 4 - .../power/powers/MomentumPower.java | 7 - .../power/powers/NullificationPower.java | 1 - .../power/powers/PincushionPower.java | 2 - .../power/powers/RadiancePower.java | 1 - .../power/powers/ShieldingPower.java | 2 +- .../simplyswords/power/powers/SlowPower.java | 2 +- .../power/powers/StoneskinPower.java | 2 +- .../power/powers/SwiftnessPower.java | 2 +- .../power/powers/TrailblazePower.java | 3 +- .../power/powers/UnstablePower.java | 9 - .../simplyswords/power/powers/WardPower.java | 4 - .../power/powers/WeakenPower.java | 2 +- .../power/powers/WildfirePower.java | 3 - .../power/powers/ZephyrPower.java | 2 +- .../registry/GemPowerRegistry.java | 24 +- .../simplyswords/registry/ItemsRegistry.java | 54 +- .../simplyswords/util/AbilityMethods.java | 1 - .../simplyswords/util/HelperMethods.java | 2 - .../assets/simplyswords/lang/en_us.json | 26 +- .../assets/simplyswords/lang/zh_cn.json | 1135 ++++++++--------- .../fabric/compat/MythicMetalsCompat.java | 1 - .../forge/compat/GobberCompat.java | 102 +- 57 files changed, 654 insertions(+), 1619 deletions(-) delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/ConfigDefaultValues.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java delete mode 100644 common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index 7cfc2c72..b3818891 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -10,9 +10,6 @@ import dev.architectury.registry.registries.RegistrySupplier; import dev.architectury.utils.Env; import dev.architectury.utils.EnvExecutor; -import me.shedaniel.autoconfig.AutoConfig; -import me.shedaniel.autoconfig.serializer.JanksonConfigSerializer; -import me.shedaniel.autoconfig.serializer.PartitioningSerializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.render.entity.BeeEntityRenderer; @@ -27,7 +24,7 @@ import net.sweenus.simplyswords.client.renderer.model.BattleStandardDarkModel; import net.sweenus.simplyswords.client.renderer.model.BattleStandardModel; import net.sweenus.simplyswords.compat.eldritch_end.EldritchEndCompatRegistry; -import net.sweenus.simplyswords.config.*; +import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.entity.SimplySwordsBeeEntity; @@ -63,7 +60,6 @@ public class SimplySwords { public static final Logger LOGGER = LogManager.getLogger(MOD_ID); public static boolean isConfigOutdated; - public static WeaponAttributesConfigOld weaponAttributesConfigOld; public static String minimumEldritchEndVersion = "0.2.40"; public static String minimumSpellPowerVersion = "0.10.0+1.20.1"; @@ -74,9 +70,6 @@ public static void init() { Config.init(); - AutoConfig.register(ConfigWrapper.class, PartitioningSerializer.wrap(JanksonConfigSerializer::new)); - weaponAttributesConfigOld = AutoConfig.getConfigHolder(ConfigWrapper.class).getConfig().weapon_attributes; - String version = SimplySwordsExpectPlatform.getVersion(); String defaultConfig = String.format(""" { diff --git a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java index 3a079bb6..9af97a1a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java +++ b/common/src/main/java/net/sweenus/simplyswords/api/SimplySwordsAPI.java @@ -14,20 +14,16 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.GemPowerFiller; -import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EntityRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java index 4c6cb917..ccb63373 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardDarkModel.java @@ -1,6 +1,12 @@ package net.sweenus.simplyswords.client.renderer.model; -import net.minecraft.client.model.*; +import net.minecraft.client.model.Dilation; +import net.minecraft.client.model.ModelData; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.model.ModelPartBuilder; +import net.minecraft.client.model.ModelPartData; +import net.minecraft.client.model.ModelTransform; +import net.minecraft.client.model.TexturedModelData; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.client.util.math.MatrixStack; diff --git a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java index 2d642ae8..3b09853b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java +++ b/common/src/main/java/net/sweenus/simplyswords/client/renderer/model/BattleStandardModel.java @@ -1,6 +1,12 @@ package net.sweenus.simplyswords.client.renderer.model; -import net.minecraft.client.model.*; +import net.minecraft.client.model.Dilation; +import net.minecraft.client.model.ModelData; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.model.ModelPartBuilder; +import net.minecraft.client.model.ModelPartData; +import net.minecraft.client.model.ModelTransform; +import net.minecraft.client.model.TexturedModelData; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.client.util.math.MatrixStack; diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java index 5fb3c9ad..2648a0e9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/EldritchEndCompat.java @@ -3,7 +3,6 @@ import dev.architectury.registry.registries.DeferredRegister; import net.minecraft.item.Item; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.ItemsRegistry; public class EldritchEndCompat { diff --git a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java index 3578817a..dfbaf3a5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java +++ b/common/src/main/java/net/sweenus/simplyswords/compat/GobberCompat.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.compat; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; public class GobberCompat { diff --git a/common/src/main/java/net/sweenus/simplyswords/config/ConfigDefaultValues.java b/common/src/main/java/net/sweenus/simplyswords/config/ConfigDefaultValues.java deleted file mode 100644 index e8e0f28b..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/ConfigDefaultValues.java +++ /dev/null @@ -1,615 +0,0 @@ -package net.sweenus.simplyswords.config; - -public class ConfigDefaultValues { - - - // -- UNIQUE EFFECTS -- - - public static float abilityAbsorptionCap = 20f; - - - public static float watcherChance = 5f; - public static float watcherRestoreAmount = 0.5f; - public static float watcherRadius = 8f; - public static float omenChance = 5f; - public static float omenAbsorptionCap = 20f; - public static float omenInstantKillThreshold = 0.25f; - - - public static float stealChance = 25f; - public static float stealDuration = 400f; - public static float stealInvisDuration = 120f; - public static float stealBlindDuration = 200f; - public static float stealRadius = 30f; - public static float stealSpellScaling = 2.6f; - - - public static float soulMeldChance = 75f; - public static float soulMeldDuration = 250f; - public static float soulMeldRadius = 5f; - - - public static float soulrendChance = 85f; - public static float soulrendDuration = 500f; - public static float soulrendDamageMulti = 3f; - public static float soulrendHealMulti = 0.5f; - public static float soulrendRadius = 10f; - public static float soulrendMaxStacks = 8f; - public static float soulrendDamageSpellScaling = 0.4f; - - - public static float ferocityChance = 75f; - public static float ferocityDuration = 100f; - public static float ferocityMaxStacks = 15f; - public static float ferocityStrengthTier = 2f; - - - public static float emberIreChance = 30f; - public static float emberIreDuration = 150f; - - - public static float volcanicFuryChance = 25f; - public static float volcanicFuryRadius = 3f; - public static float volcanicFuryCooldown = 300f; - public static float volcanicFuryDamage = 3f; - public static float volcanicFurySpellScaling = 1.4f; - - - public static float stormChance = 15f; - public static float stormRadius = 10f; - public static float stormCooldown = 700f; - public static float stormFrequency = 10f; - public static float stormDuration = 200f; - - - public static float plagueChance = 55f; - - - public static float brimstoneChance = 15f; - - - public static float brambleChance = 45f; - - - public static float soultetherRange = 32f; - public static float soultetherRadius = 8f; - public static float soultetherDuration = 120f; - public static float soultetherIgniteDuration = 120f; - public static float soultetherResistanceDuration = 60f; - - - public static float frostFuryCooldown = 380f; - public static float frostFuryRadius = 3f; - public static float frostFuryDamage = 18f; - public static float frostFuryChance = 15f; - public static float frostFuryDuration = 80f; - public static float frostFurySpellScaling = 1.4f; - - - public static float moltenRoarCooldown = 320f; - public static float moltenRoarRadius = 5f; - public static float moltenRoarKnockbackStrength = 5f; - public static float moltenRoarChance = 15f; - public static float moltenRoarDuration = 100f; - - - public static float frostShatterRadius = 3f; - public static float frostShatterDamage = 18f; - public static float frostShatterChance = 15f; - public static float frostShatterDuration = 80f; - public static float frostShatterSpellScaling = 1.7f; - - - public static float permafrostRadius = 4f; - public static float permafrostDamage = 1f; - public static float permafrostCooldown = 600f; - public static float permafrostDuration = 200f; - public static float permafrostSpellScaling = 0.9f; - - - public static float arcaneAssaultRadius = 6f; - public static float arcaneAssaultDamage = 1f; - public static float arcaneAssaultCooldown = 220; - public static float arcaneAssaultChance = 25f; - public static float arcaneAssaultDuration = 120f; - public static float arcaneAssaultSpellScaling = 1.4f; - - - public static float thunderBlitzRadius = 2f; - public static float thunderBlitzDamage = 3f; - public static float thunderBlitzCooldown = 250; - public static float thunderBlitzChance = 15f; - public static float thunderBlitzSpellScaling = 1.7f; - - - public static float stormJoltCooldown = 100f; - public static float stormJoltChance = 15f; - - - public static float soulAnguishRadius = 3f; - public static float soulAnguishAbsorptionCap = 8f; - public static float soulAnguishDamage = 4f; - public static float soulAnguishCooldown = 700; - public static float soulAnguishDuration = 200f; - public static float soulAnguishHeal = 0.5f; - public static float soulAnguishRange = 22f; - public static float soulAnguishSpellScaling = 1.6f; - - - public static float shockDeflectBlockDuration = 35f; - public static float shockDeflectDamage = 12f; - public static float shockDeflectCooldown = 90; - public static float shockDeflectParryDuration = 10f; - public static float shockDeflectSpellScaling = 2.3f; - - - public static float shadowmistCooldown = 200f; - public static float shadowmistChance = 25f; - public static float shadowmistDamageMulti = 0.8f; - public static float shadowmistBlindDuration = 60f; - public static float shadowmistRadius = 4f; - - - public static float abyssalStandardCooldown = 700; - public static float abyssalStandardChance = 15f; - public static float abyssalStandardDamage = 3f; - public static float abyssalStandardSpellScaling = 1.2f; - - - public static float righteousStandardCooldown = 700f; - public static float righteousStandardChance = 15f; - public static float righteousStandardDamage = 3f; - public static float righteousStandardSpellScaling = 1.1f; - public static float righteousStandardSpellScalingHeal = 1.3f; - - - public static float fatalFlickerCooldown = 175f; - public static float fatalFlickerChance = 15f; - public static float fatalFlickerRadius = 3f; - public static float fatalFlickerMaxStacks = 99f; - public static float fatalFlickerDashVelocity = 3f; - - - public static float smoulderCooldown = 80f; - public static float smoulderMaxStacks = 5f; - public static float smoulderHeal = 15f; - public static float smoulderSpellScaling = 0.4f; - - - public static float waxweaveCooldown = 1200f; - public static float waxweaveMaxStacks = 3f; - - public static float hivemindCooldown = 60f; - public static float hivemindDuration = 450f; - public static float hivemindDamage = 1.1f; - - public static float celestialSurgeCooldown = 120f; - public static float celestialSurgeDuration = 120f; - public static float celestialSurgeStacks = 6f; - public static float celestialSurgeDamageModifier = 0.40f; - public static float celestialSurgeLifestealModifier = 0.10f; - - public static float flickerFuryCooldown = 220f; - public static float flickerFuryDuration = 40f; - public static float flickerFuryDamage = 1.0f; - - public static float vortexDuration = 1200f; - public static float vortexMaxSize = 30f; - public static float vortexMaxStacks = 10f; - public static float vortexSpellScaling = 0.3f; - - public static float voidcallerDuration = 250f; - public static float voidcallerStartingTickFrequency = 12f; - public static float voidcallerDamageModifier = 1.0f; - public static float voidcallerCorruptionFrequency = 60f; - public static float voidcallerCorruptionPerTick = 1.0f; - public static float voidcallerCorruptionDuration = 1200f; - public static float voidcallerCorruptionMax = 100f; - - public static float emberstormSpreadCap = 6f; - public static float emberstormDamage = 5f; - public static float emberstormDetonationDamage = 15f; - public static float emberstormCooldown = 980f; - public static float emberstormMaxHaste = 10f; - public static float emberstormSpellScaling = 0.4f; - - public static float ribbonwrathCooldown = 40f; - public static float ribbonwrathResilienceAmplifier = 1f; - public static float ribbonwrathDamageBonusPercent = 0.95f; - - public static float magistormCooldown = 40f; - public static float magistormDuration = 400f; - public static float magistormRadius = 4f; - public static float magistormDamage = 3f; - public static float magistormRepairChance = 0.25f; - public static float magistormSpellScaling = 0.5f; - - public static float enigmaCooldown = 800f; - public static float enigmaDecayRate = 2f; - public static float enigmaChaseRadius = 16f; - - public static float magibladeCooldown = 35; - public static float magibladeSonicDistance = 16f; - public static float magibladeDamageModifier = 0.7f; - public static float magibladeRepelChance = 0.55f; - public static float magibladeRepelRadius = 4f; - - public static float magislamCooldown = 140; - public static float magislamRadius = 4f; - public static float magislamDamageModifier = 2.0f; - public static float magislamMagicChance = 35f; - public static float magislamMagicModifier = 0.5f; - - public static float astralShiftCooldown = 420; - public static float astralShiftDuration = 100f; - public static float astralShiftDamageModifier = 1.0f; - public static float astralShiftDamageMax = 300f; - public static float astralShiftChance = 5f; - - // -- WEAPON ATTRIBUTES -- // - - public static float longsword_positiveDamageModifier = 0.0f; - public static float twinblade_positiveDamageModifier = 0.0f; - public static float rapier_positiveDamageModifier = 0.0f; - public static float katana_positiveDamageModifier = 0.0f; - public static float sai_positiveDamageModifier = 0.0f; - public static float spear_positiveDamageModifier = 0.0f; - public static float glaive_positiveDamageModifier = 0.0f; - public static float warglaive_positiveDamageModifier = 0.0f; - public static float cutlass_positiveDamageModifier = 0.0f; - public static float claymore_positiveDamageModifier = 2.0f; - public static float greataxe_positiveDamageModifier = 3.0f; - public static float greathammer_positiveDamageModifier = 4.0f; - public static float chakram_positiveDamageModifier = 0.0f; - public static float scythe_positiveDamageModifier = 1.0f; - public static float halberd_positiveDamageModifier = 3.0f; - - - public static float longsword_negativeDamageModifier = 0.0f; - public static float twinblade_negativeDamageModifier = 0.0f; - public static float rapier_negativeDamageModifier = 1.0f; - public static float katana_negativeDamageModifier = 0.0f; - public static float sai_negativeDamageModifier = 3.0f; - public static float spear_negativeDamageModifier = 0.0f; - public static float glaive_negativeDamageModifier = 0.0f; - public static float warglaive_negativeDamageModifier = 0.0f; - public static float cutlass_negativeDamageModifier = 0.0f; - public static float claymore_negativeDamageModifier = 0.0f; - public static float greataxe_negativeDamageModifier = 0.0f; - public static float greathammer_negativeDamageModifier = 0.0f; - public static float chakram_negativeDamageModifier = 1.0f; - public static float scythe_negativeDamageModifier = 0.0f; - public static float halberd_negativeDamageModifier = 0.0f; - - - public static float iron_damageModifier = 3.0f; - public static float gold_damageModifier = 3.0f; - public static float diamond_damageModifier = 3.0f; - public static float netherite_damageModifier = 3.0f; - public static float runic_damageModifier = 3.0f; - public static float adamantite_damageModifier = 3.0f; - public static float aquarium_damageModifier = 3.0f; - public static float banglum_damageModifier = 3.0f; - public static float carmot_damageModifier = 3.0f; - public static float kyber_damageModifier = 3.0f; - public static float mythril_damageModifier = 3.0f; - public static float orichalcum_damageModifier = 3.0f; - public static float durasteel_damageModifier = 3.0f; - public static float osmium_damageModifier = 3.0f; - public static float prometheum_damageModifier = 3.0f; - public static float quadrillum_damageModifier = 3.0f; - public static float runite_damageModifier = 3.0f; - public static float starPlatinum_damageModifier = 3.0f; - public static float bronze_damageModifier = 3.0f; - public static float copper_damageModifier = 3.0f; - public static float steel_damageModifier = 3.0f; - public static float palladium_damageModifier = 3.0f; - public static float stormyx_damageModifier = 3.0f; - public static float celestium_damageModifier = 3.0f; - public static float metallurgium_damageModifier = 3.0f; - public static float gobber_damageModifier = 1.0f; - public static float gobberNether_damageModifier = 3.0f; - public static float gobberEnd_damageModifier = 6.0f; - - - public static float longsword_attackSpeed = -2.4f; - public static float twinblade_attackSpeed = -2.0f; - public static float rapier_attackSpeed = -1.8f; - public static float katana_attackSpeed = -2.0f; - public static float sai_attackSpeed = -1.5f; - public static float spear_attackSpeed = -2.7f; - public static float glaive_attackSpeed = -2.6f; - public static float warglaive_attackSpeed = -2.2f; - public static float cutlass_attackSpeed = -2.0f; - public static float claymore_attackSpeed = -2.8f; - public static float greataxe_attackSpeed = -3.1f; - public static float greathammer_attackSpeed = -3.2f; - public static float chakram_attackSpeed = -3.0f; - public static float scythe_attackSpeed = -2.7f; - public static float halberd_attackSpeed = -2.8f; - - - public static float brimstone_damageModifier = 6.0f; - public static float thewatcher_damageModifier = 6.0f; - public static float stormsedge_damageModifier = 3.0f; - public static float stormbringer_damageModifier = 3.0f; - public static float swordonastick_damageModifier = 5.0f; - public static float bramblethorn_damageModifier = 3.0f; - public static float watchingwarglaive_damageModifier = 3.0f; - public static float longswordofplague_damageModifier = 3.0f; - public static float emberblade_damageModifier = 3.0f; - public static float hearthflame_damageModifier = 8.0f; - public static float soulkeeper_damageModifier = 8.0f; - public static float twistedblade_damageModifier = 4.0f; - public static float soulstealer_damageModifier = 0.0f; - public static float soulrender_damageModifier = 4.0f; - public static float mjolnir_damageModifier = 3.0f; - public static float soulpyre_damageModifier = 7.0f; - public static float frostfall_damageModifier = 5.0f; - public static float moltenedge_damageModifier = 4.0f; - public static float livyatan_damageModifier = 4.0f; - public static float icewhisper_damageModifier = 7.0f; - public static float arcanethyst_damageModifier = 7.0f; - public static float thunderbrand_damageModifier = 7.0f; - public static float lichblade_damageModifier = 7.0f; - public static float shadowsting_damageModifier = -2.0f; - public static float sunfire_damageModifier = 3.0f; - public static float harbinger_damageModifier = 3.0f; - public static float whisperwind_damageModifier = 3.0f; - public static float emberlash_damageModifier = 0.0f; - public static float waxweaver_damageModifier = 6.0f; - public static float hiveheart_damageModifier = 7.0f; - public static float starsedge_damageModifier = 3.0f; - public static float wickpiercer_damageModifier = 4.0f; - public static float dreadtide_damageModifier = 3.0f; - public static float tempest_damageModifier = 0.0f; - public static float flamewind_damageModifier = 3.0f; - public static float ribboncleaver_damageModifier = 7.0f; - public static float magiscythe_damageModifier = 4.0f; - public static float enigma_damageModifier = 7.0f; - public static float magispear_damageModifier = 4.0f; - public static float magiblade_damageModifier = 3.0f; - public static float caelestis_damageModifier = 6.0f; - - - public static float brimstone_attackSpeed = -2.8f; - public static float thewatcher_attackSpeed = -2.8f; - public static float stormsedge_attackSpeed = -2.0f; - public static float stormbringer_attackSpeed = -2.4f; - public static float swordonastick_attackSpeed = -2.6f; - public static float bramblethorn_attackSpeed = -1.8f; - public static float watchingwarglaive_attackSpeed = -2.2f; - public static float longswordofplague_attackSpeed = -2.4f; - public static float emberblade_attackSpeed = -2.4f; - public static float hearthflame_attackSpeed = -3.2f; - public static float soulkeeper_attackSpeed = -2.9f; - public static float twistedblade_attackSpeed = -2.6f; - public static float soulstealer_attackSpeed = -1.5f; - public static float soulrender_attackSpeed = -2.4f; - public static float mjolnir_attackSpeed = -3.0f; - public static float soulpyre_attackSpeed = -3.0f; - public static float frostfall_attackSpeed = -2.5f; - public static float moltenedge_attackSpeed = -2.1f; - public static float livyatan_attackSpeed = -2.1f; - public static float icewhisper_attackSpeed = -2.7f; - public static float arcanethyst_attackSpeed = -2.7f; - public static float thunderbrand_attackSpeed = -2.7f; - public static float lichblade_attackSpeed = -3.1f; - public static float shadowsting_attackSpeed = -1.7f; - public static float sunfire_attackSpeed = -2.4f; - public static float harbinger_attackSpeed = -2.4f; - public static float whisperwind_attackSpeed = -2.0f; - public static float emberlash_attackSpeed = -1.5f; - public static float waxweaver_attackSpeed = -2.9f; - public static float hiveheart_attackSpeed = -3.0f; - public static float starsedge_attackSpeed = -2.0f; - public static float wickpiercer_attackSpeed = -2.1f; - public static float dreadtide_attackSpeed = -2.0f; - public static float tempest_attackSpeed = -2.5f; - public static float flamewind_attackSpeed = -2.6f; - public static float ribboncleaver_attackSpeed = -3.2f; - public static float magiscythe_attackSpeed = -2.4f; - public static float enigma_attackSpeed = -3.2f; - public static float magispear_attackSpeed = -2.5f; - public static float magiblade_attackSpeed = -2.0f; - public static float caelestis_attackSpeed = -2.9f; - - // -- STATUS EFFECTS -- - - public static int echoDamage = 2; - - // -- RUNIC EFFECTS -- - - public static boolean enableActiveDefence = true; - public static boolean enableFloat = true; - public static boolean enableGreaterFloat = true; - public static boolean enableFreeze = true; - public static boolean enableShielding = true; - public static boolean enableGreaterShielding = true; - public static boolean enableSlow = true; - public static boolean enableGreaterSlow = true; - public static boolean enableStoneskin = true; - public static boolean enableGreaterStoneskin = true; - public static boolean enableSwiftness = true; - public static boolean enableGreaterSwiftness = true; - public static boolean enableTrailblaze = true; - public static boolean enableGreaterTrailblaze = true; - public static boolean enableWeaken = true; - public static boolean enableGreaterWeaken = true; - public static boolean enableZephyr = true; - public static boolean enableGreaterZephyr = true; - public static boolean enableFrostWard = true; - public static boolean enableWildfire = true; - public static boolean enableUnstable = true; - public static boolean enableMomentum = true; - public static boolean enableGreaterMomentum = true; - public static boolean enableImbued = true; - public static boolean enableGreaterImbued = true; - public static boolean enablePincushion = true; - public static boolean enableGreaterPincushion = true; - public static boolean enableWard = true; - public static boolean enableImmolate = true; - - - - public static float swiftnessChance = 15f; - public static float swiftnessDuration= 300f; - - - public static float slowChance = 50f; - public static float slowDuration= 50f; - - - public static float poisonChance = 15f; - public static float poisonDuration = 150f; - - - public static float freezeChance = 15f; - public static float freezeDuration = 120f; - - - public static float wildfireChance = 10f; - public static float wildfireDuration = 180f; - public static float wildfireRadius = 10; - - - public static float floatChance = 15f; - public static float floatDuration = 50f; - - - public static float zephyrChance = 15f; - public static float zephyrDuration = 180f; - - - public static float shieldingChance = 15f; - public static float shieldingDuration = 120f; - - - public static float stoneskinChance = 15f; - public static float stoneskinDuration = 60f; - - - public static float trailblazeChance = 15f; - public static float trailblazeDuration = 120; - - - public static float weakenChance = 15f; - public static float weakenDuration = 120f; - - - public static float unstableFrequency = 140f; - public static float unstableDuration = 140f; - - - public static float activeDefenceFrequency = 20f; - public static float activeDefenceRadius = 5f; - - - public static float frostWardFrequency = 20f; - public static float frostWardRadius = 5f; - public static float frostWardDuration = 60f; - - - public static float momentumCooldown = 140f; - - - public static float imbuedChance = 15; - - // -- LOOT CONFIG -- - - public static boolean enableLootDrops = true; - - public static boolean enableLootInVillages = false; - public static boolean enableTheWatcher = true; - - public static float standardLootTableWeight = 0.01f; - - public static float rareLootTableWeight = 0.004f; - - public static float runicLootTableWeight = 0.007f; - - public static float uniqueLootTableWeight = 0.001f; - public static boolean enableWatchingWarglaive = true; - public static boolean enableContainedRemnants = true; - public static boolean enableLongswordOfThePlague = true; - public static boolean enableSwordOnAStick = true; - public static boolean enableBramblethorn = true; - public static boolean enableStormsEdge = true; - public static boolean enableStormbringer = true; - public static boolean enableMjolnir = true; - public static boolean enableEmberblade = true; - public static boolean enableHearthflame = true; - public static boolean enableTwistedBlade = true; - public static boolean enableSoulrender = true; - public static boolean enableSoulpyre = true; - public static boolean enableSoulkeeper = true; - public static boolean enableSoulstealer = true; - public static boolean enableFrostfall = true; - public static boolean enableMoltenEdge = true; - public static boolean enableLivyatan = true; - public static boolean enableIcewhisper = true; - public static boolean enableArcanethyst = true; - public static boolean enableThunderbrand = true; - public static boolean enableBrimstone = true; - public static boolean enableSlumberingLichblade = true; - public static boolean enableShadowsting = true; - public static boolean enableDormantRelic = true; - public static boolean enableWhisperwind = true; - public static boolean enableEmberlash = true; - public static boolean enableWaxweaver = true; - public static boolean enableHiveheart = true; - public static boolean enableStarsEdge = true; - public static boolean enableWickpiercer = true; - public static boolean enableTempest = true; - public static boolean enableFlamewind = true; - public static boolean enableRibboncleaver = true; - public static boolean enableCaelestis = true; - - // -- GENERAL CONFIG -- - - public static boolean enableWeaponImpactSounds = true; - public static float weaponImpactSoundsVolume = 0.3f; - public static boolean enableWeaponFootfalls = true; - public static boolean enablePassiveParticles = true; - - public static boolean enableUniqueGemSockets = true; - public static boolean compatGobberEndWeaponsUnbreakable = true; - - public static boolean compatEnableSpellPowerScaling = true; - - // -- GEM EFFECTS -- - - public static boolean enableEcho = true; - public static boolean enableBerserk = true; - public static boolean enableRadiance = true; - public static boolean enableOnslaught = true; - public static boolean enableNullification = true; - - - public static boolean enablePrecise = true; - - public static int preciseChance = 30; - public static boolean enableMighty = true; - - public static int mightyChance = 30; - public static boolean enableStealthy = true; - - public static int stealthyChance = 30; - public static boolean enableRenewed = true; - - public static int renewedChance = 30; - public static boolean enableAccelerant = true; - public static boolean enableLeaping = true; - - public static int leapingChance = 65; - public static boolean enableSpellshield = true; - - public static int spellshieldChance = 15; - public static boolean enableSpellforged = true; - public static boolean enableSoulshock = true; - public static boolean enableSpellStandard = true; - public static boolean enableWarStandard = true; - public static boolean enableDeception = true; - - -} diff --git a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java b/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java deleted file mode 100644 index 5a2c2270..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/ConfigWrapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; -import me.shedaniel.autoconfig.serializer.PartitioningSerializer; -import net.sweenus.simplyswords.SimplySwords; - -@Config(name = SimplySwords.MOD_ID +"_main") -@Config.Gui.Background("cloth-config2:transparent") -public class ConfigWrapper extends PartitioningSerializer.GlobalData { - @ConfigEntry.Category("weapon_attributes") - @ConfigEntry.Gui.TransitiveObject - public WeaponAttributesConfigOld weapon_attributes = new WeaponAttributesConfigOld(); -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java index 937e7114..e785b9bf 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.config; import me.fzzyhmstrs.fzzy_config.config.Config; - import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java deleted file mode 100644 index 7307674c..00000000 --- a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfigOld.java +++ /dev/null @@ -1,177 +0,0 @@ -package net.sweenus.simplyswords.config; - -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -@Config(name = "weapon_attributes") -public class WeaponAttributesConfigOld implements ConfigData { - - @ConfigEntry.Gui.PrefixText - public float longsword_positiveDamageModifier = 0.0f; - public float twinblade_positiveDamageModifier = 0.0f; - public float rapier_positiveDamageModifier = 0.0f; - public float katana_positiveDamageModifier = 0.0f; - public float sai_positiveDamageModifier = 0.0f; - public float spear_positiveDamageModifier = 0.0f; - public float glaive_positiveDamageModifier = 0.0f; - public float warglaive_positiveDamageModifier = 0.0f; - public float cutlass_positiveDamageModifier = 0.0f; - public float claymore_positiveDamageModifier = 2.0f; - public float greataxe_positiveDamageModifier = 3.0f; - public float greathammer_positiveDamageModifier = 4.0f; - public float chakram_positiveDamageModifier = 0.0f; - public float scythe_positiveDamageModifier = 1.0f; - public float halberd_positiveDamageModifier = 3.0f; - - @ConfigEntry.Gui.PrefixText - public float longsword_negativeDamageModifier = 0.0f; - public float twinblade_negativeDamageModifier = 0.0f; - public float rapier_negativeDamageModifier = 1.0f; - public float katana_negativeDamageModifier = 0.0f; - public float sai_negativeDamageModifier = 3.0f; - public float spear_negativeDamageModifier = 0.0f; - public float glaive_negativeDamageModifier = 0.0f; - public float warglaive_negativeDamageModifier = 0.0f; - public float cutlass_negativeDamageModifier = 0.0f; - public float claymore_negativeDamageModifier = 0.0f; - public float greataxe_negativeDamageModifier = 0.0f; - public float greathammer_negativeDamageModifier = 0.0f; - public float chakram_negativeDamageModifier = 1.0f; - public float scythe_negativeDamageModifier = 0.0f; - public float halberd_negativeDamageModifier = 0.0f; - - @ConfigEntry.Gui.PrefixText - public float iron_damageModifier = 3.0f; - public float gold_damageModifier = 3.0f; - public float diamond_damageModifier = 3.0f; - public float netherite_damageModifier = 3.0f; - public float runic_damageModifier = 3.0f; - public float adamantite_damageModifier = 3.0f; - public float aquarium_damageModifier = 3.0f; - public float banglum_damageModifier = 3.0f; - public float carmot_damageModifier = 3.0f; - public float kyber_damageModifier = 3.0f; - public float mythril_damageModifier = 3.0f; - public float orichalcum_damageModifier = 3.0f; - public float durasteel_damageModifier = 3.0f; - public float osmium_damageModifier = 3.0f; - public float prometheum_damageModifier = 3.0f; - public float quadrillum_damageModifier = 3.0f; - public float runite_damageModifier = 3.0f; - public float starPlatinum_damageModifier = 3.0f; - public float bronze_damageModifier = 3.0f; - public float copper_damageModifier = 3.0f; - public float steel_damageModifier = 3.0f; - public float palladium_damageModifier = 3.0f; - public float stormyx_damageModifier = 3.0f; - public float celestium_damageModifier = 3.0f; - public float metallurgium_damageModifier = 3.0f; - public float gobber_damageModifier = 1.0f; - public float gobberNether_damageModifier = 3.0f; - public float gobberEnd_damageModifier = 6.0f; - - @ConfigEntry.Gui.PrefixText - public float longsword_attackSpeed = -2.4f; - public float twinblade_attackSpeed = -2.0f; - public float rapier_attackSpeed = -1.8f; - public float katana_attackSpeed = -2.0f; - public float sai_attackSpeed = -1.5f; - public float spear_attackSpeed = -2.7f; - public float glaive_attackSpeed = -2.6f; - public float warglaive_attackSpeed = -2.2f; - public float cutlass_attackSpeed = -2.0f; - public float claymore_attackSpeed = -2.8f; - public float greataxe_attackSpeed = -3.1f; - public float greathammer_attackSpeed = -3.2f; - public float chakram_attackSpeed = -3.0f; - public float scythe_attackSpeed = -2.7f; - public float halberd_attackSpeed = -2.8f; - - @ConfigEntry.Gui.PrefixText - public float brimstone_damageModifier = 6.0f; - public float thewatcher_damageModifier = 6.0f; - public float stormsedge_damageModifier = 3.0f; - public float stormbringer_damageModifier = 3.0f; - public float swordonastick_damageModifier = 5.0f; - public float bramblethorn_damageModifier = 3.0f; - public float watchingwarglaive_damageModifier = 3.0f; - public float longswordofplague_damageModifier = 3.0f; - public float emberblade_damageModifier = 3.0f; - public float hearthflame_damageModifier = 8.0f; - public float soulkeeper_damageModifier = 8.0f; - public float twistedblade_damageModifier = 4.0f; - public float soulstealer_damageModifier = 0.0f; - public float soulrender_damageModifier = 4.0f; - public float mjolnir_damageModifier = 3.0f; - public float soulpyre_damageModifier = 7.0f; - public float frostfall_damageModifier = 5.0f; - public float moltenedge_damageModifier = 4.0f; - public float livyatan_damageModifier = 4.0f; - public float icewhisper_damageModifier = 7.0f; - public float arcanethyst_damageModifier = 7.0f; - public float thunderbrand_damageModifier = 7.0f; - public float lichblade_damageModifier = 7.0f; - public float shadowsting_damageModifier = -2.0f; - public float sunfire_damageModifier = 3.0f; - public float harbinger_damageModifier = 3.0f; - public float whisperwind_damageModifier = 3.0f; - public float emberlash_damageModifier = 0.0f; - public float waxweaver_damageModifier = 6.0f; - public float hiveheart_damageModifier = 7.0f; - public float starsedge_damageModifier = 3.0f; - public float wickpiercer_damageModifier = 4.0f; - public float dreadtide_damageModifier = 3.0f; - public float tempest_damageModifier = 0.0f; - public float flamewind_damageModifier = 3.0f; - public float ribboncleaver_damageModifier = 7.0f; - public float magiscythe_damageModifier = 4.0f; - public float enigma_damageModifier = 7.0f; - public float magispear_damageModifier = 4.0f; - public float magiblade_damageModifier = 3.0f; - public float caelestis_damageModifier = 6.0f; - - @ConfigEntry.Gui.PrefixText - public float brimstone_attackSpeed = -2.8f; - public float thewatcher_attackSpeed = -2.8f; - public float stormsedge_attackSpeed = -2.0f; - public float stormbringer_attackSpeed = -2.4f; - public float swordonastick_attackSpeed = -2.6f; - public float bramblethorn_attackSpeed = -1.8f; - public float watchingwarglaive_attackSpeed = -2.2f; - public float longswordofplague_attackSpeed = -2.4f; - public float emberblade_attackSpeed = -2.4f; - public float hearthflame_attackSpeed = -3.2f; - public float soulkeeper_attackSpeed = -2.9f; - public float twistedblade_attackSpeed = -2.6f; - public float soulstealer_attackSpeed = -1.5f; - public float soulrender_attackSpeed = -2.4f; - public float mjolnir_attackSpeed = -3.0f; - public float soulpyre_attackSpeed = -3.0f; - public float frostfall_attackSpeed = -2.5f; - public float moltenedge_attackSpeed = -2.1f; - public float livyatan_attackSpeed = -2.1f; - public float icewhisper_attackSpeed = -2.7f; - public float arcanethyst_attackSpeed = -2.7f; - public float thunderbrand_attackSpeed = -2.7f; - public float lichblade_attackSpeed = -3.1f; - public float shadowsting_attackSpeed = -1.7f; - public float sunfire_attackSpeed = -2.4f; - public float harbinger_attackSpeed = -2.4f; - public float whisperwind_attackSpeed = -2.0f; - public float emberlash_attackSpeed = -1.5f; - public float waxweaver_attackSpeed = -2.9f; - public float hiveheart_attackSpeed = -3.0f; - public float starsedge_attackSpeed = -2.0f; - public float wickpiercer_attackSpeed = -2.1f; - public float dreadtide_attackSpeed = -2.0f; - public float tempest_attackSpeed = -2.5f; - public float flamewind_attackSpeed = -2.6f; - public float ribboncleaver_attackSpeed = -3.2f; - public float magiscythe_attackSpeed = -2.4f; - public float enigma_attackSpeed = -3.2f; - public float magispear_attackSpeed = -2.5f; - public float magiblade_attackSpeed = -2.0f; - public float caelestis_attackSpeed = -2.9f; - -} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java index 91e66d51..de41d309 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java @@ -4,7 +4,6 @@ import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.registry.EffectRegistry; public class EchoEffect extends StatusEffect { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java index ab4cff89..d308cd6a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/StormEffect.java @@ -11,7 +11,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Box; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.util.HelperMethods; public class StormEffect extends StatusEffect { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java index 17cd8c0c..bb72594a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/WildfireEffect.java @@ -8,9 +8,7 @@ import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Box; -import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.util.HelperMethods; public class WildfireEffect extends StatusEffect { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index 6fad1c47..68bd0089 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -8,7 +8,6 @@ import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import java.util.ArrayList; import java.util.Arrays; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java index bb0f1947..b2bb83be 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunefusedGemItem.java @@ -7,7 +7,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.screen.slot.Slot; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ClickType; import net.minecraft.util.Formatting; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java index fd706518..ecab6b06 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicSwordItem.java @@ -19,7 +19,6 @@ import net.minecraft.world.World; import net.sweenus.simplyswords.api.SimplySwordsAPI; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.GemPowerComponent; import net.sweenus.simplyswords.power.PowerType; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java index 0134991b..a8161665 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DormantRelicSwordItem.java @@ -8,7 +8,6 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index af2cd499..0d624398 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -19,7 +19,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index cc0b942f..f05c2131 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -22,7 +22,6 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 084bba63..30b7543a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -21,7 +21,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index a880f910..67d6c6f4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -15,7 +15,6 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java index 9d42d932..d09b0f5d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TaintedRelicSwordItem.java @@ -9,13 +9,11 @@ import net.minecraft.item.ToolMaterial; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.particle.ParticleTypes; -import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index d1b8f4d9..b9e61932 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -23,7 +23,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java index d0d184f0..de59b502 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatcherSwordItem.java @@ -16,7 +16,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.UniqueSwordItem; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java index e1e0c053..7ac39200 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WatchingWarglaiveItem.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.item.custom; import net.minecraft.item.ToolMaterial; -import net.sweenus.simplyswords.item.TwoHandedWeapon; public class WatchingWarglaiveItem extends WatcherSwordItem { diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index bd3f4446..0e06e481 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -16,7 +16,6 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.ItemStackTooltipAppender; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.item.TwoHandedWeapon; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java b/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java index 04ff53f8..69e229c9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/PowerType.java @@ -6,7 +6,6 @@ import net.sweenus.simplyswords.registry.GemPowerRegistry; import java.util.List; -import java.util.Map; public enum PowerType { RUNIC, diff --git a/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java index c59c2678..defe0cd7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/RunefusedGemPower.java @@ -1,12 +1,5 @@ package net.sweenus.simplyswords.power; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; -import net.minecraft.world.World; - public class RunefusedGemPower extends GemPower { public RunefusedGemPower(boolean isGreater) { diff --git a/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java index ee1aab31..010d57ab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/RunicGemPower.java @@ -7,8 +7,6 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; -import java.util.List; - public class RunicGemPower extends GemPower { public RunicGemPower(boolean isGreater) { diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java index f4880776..b4f09566 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/BerserkPower.java @@ -1,13 +1,11 @@ package net.sweenus.simplyswords.power.powers; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.power.NetherGemPower; -import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java index 572a52c8..3670f20f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java @@ -2,17 +2,12 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.NetherGemPower; -import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; -import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java index 6e7299da..d560a8ed 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FloatPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java index b7cdf6d6..4a63e492 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java @@ -8,11 +8,11 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java index 1c59a46a..99125209 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FrostWardPower.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.power.powers; import me.fzzyhmstrs.fzzy_config.annotations.Translation; -import me.fzzyhmstrs.fzzy_config.util.Walkable; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.Entity; @@ -9,12 +8,9 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.entity.projectile.thrown.SnowballEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.server.world.ServerWorld; @@ -22,7 +18,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java index 56868adb..bb1ddb68 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImbuedPower.java @@ -1,17 +1,13 @@ package net.sweenus.simplyswords.power.powers; import me.fzzyhmstrs.fzzy_config.annotations.Translation; -import me.fzzyhmstrs.fzzy_config.util.Walkable; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java index 52260233..c4ad57ed 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/MomentumPower.java @@ -1,13 +1,9 @@ package net.sweenus.simplyswords.power.powers; import me.fzzyhmstrs.fzzy_config.annotations.Translation; -import me.fzzyhmstrs.fzzy_config.util.Walkable; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,12 +11,9 @@ import net.minecraft.text.Text; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.TooltipSettings; -import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.power.RunicGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; -import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java index 593590b9..e070ff83 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java @@ -5,7 +5,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java index 8aefcbc3..f7b766c2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/PincushionPower.java @@ -5,8 +5,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.Styles; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java index abeffe99..ea61f3f6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java @@ -9,7 +9,6 @@ import net.minecraft.text.Text; import net.sweenus.simplyswords.power.NetherGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; -import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java index d70f61e4..126d97ef 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ShieldingPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java index d21f8f14..e7f3988b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SlowPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java index 3e268e60..61687e65 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/StoneskinPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java index 406b0107..193f0eb1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/SwiftnessPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java index 6f3ba5f5..bc22a98b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/TrailblazePower.java @@ -8,11 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java index 6c6e8c31..fea00fb1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/UnstablePower.java @@ -1,28 +1,19 @@ package net.sweenus.simplyswords.power.powers; import me.fzzyhmstrs.fzzy_config.annotations.Translation; -import me.fzzyhmstrs.fzzy_config.util.Walkable; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.projectile.thrown.SnowballEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.predicate.entity.EntityPredicates; -import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.config.settings.TooltipSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; -import net.sweenus.simplyswords.util.HelperMethods; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java index 5ae10a9e..81e3042f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java @@ -1,7 +1,5 @@ package net.sweenus.simplyswords.power.powers; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -11,8 +9,6 @@ import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; -import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.power.RunicGemPower; import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java index cb026a38..cabca252 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WeakenPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java index b36c65db..1a1e94fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java @@ -1,7 +1,5 @@ package net.sweenus.simplyswords.power.powers; -import me.fzzyhmstrs.fzzy_config.annotations.Translation; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.Item; @@ -14,7 +12,6 @@ import net.sweenus.simplyswords.registry.EffectRegistry; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java index dbcc0c93..9ffed1dc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ZephyrPower.java @@ -8,10 +8,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.sweenus.simplyswords.config.Config; +import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.power.RunefusedGemPower; import net.sweenus.simplyswords.registry.GemPowerRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; -import net.sweenus.simplyswords.config.settings.ChanceDurationSettings; import net.sweenus.simplyswords.util.Styles; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java index 87294819..0910b52a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/GemPowerRegistry.java @@ -10,7 +10,29 @@ import net.sweenus.simplyswords.config.Config; import net.sweenus.simplyswords.power.GemPower; import net.sweenus.simplyswords.power.PowerType; -import net.sweenus.simplyswords.power.powers.*; +import net.sweenus.simplyswords.power.powers.ActiveDefencePower; +import net.sweenus.simplyswords.power.powers.BerserkPower; +import net.sweenus.simplyswords.power.powers.EchoPower; +import net.sweenus.simplyswords.power.powers.FloatPower; +import net.sweenus.simplyswords.power.powers.FreezePower; +import net.sweenus.simplyswords.power.powers.FrostWardPower; +import net.sweenus.simplyswords.power.powers.ImbuedPower; +import net.sweenus.simplyswords.power.powers.ImmolationPower; +import net.sweenus.simplyswords.power.powers.MomentumPower; +import net.sweenus.simplyswords.power.powers.NullificationPower; +import net.sweenus.simplyswords.power.powers.OnslaughtPower; +import net.sweenus.simplyswords.power.powers.PincushionPower; +import net.sweenus.simplyswords.power.powers.RadiancePower; +import net.sweenus.simplyswords.power.powers.ShieldingPower; +import net.sweenus.simplyswords.power.powers.SlowPower; +import net.sweenus.simplyswords.power.powers.StoneskinPower; +import net.sweenus.simplyswords.power.powers.SwiftnessPower; +import net.sweenus.simplyswords.power.powers.TrailblazePower; +import net.sweenus.simplyswords.power.powers.UnstablePower; +import net.sweenus.simplyswords.power.powers.WardPower; +import net.sweenus.simplyswords.power.powers.WeakenPower; +import net.sweenus.simplyswords.power.powers.WildfirePower; +import net.sweenus.simplyswords.power.powers.ZephyrPower; import net.sweenus.simplyswords.util.HelperMethods; import java.util.List; diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java index fb260378..e0ad3b85 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/ItemsRegistry.java @@ -9,9 +9,57 @@ import net.minecraft.util.Rarity; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; -import net.sweenus.simplyswords.item.*; -import net.sweenus.simplyswords.item.custom.*; +import net.sweenus.simplyswords.item.ContainedRemnantItem; +import net.sweenus.simplyswords.item.EmpoweredRemnantItem; +import net.sweenus.simplyswords.item.ModToolMaterial; +import net.sweenus.simplyswords.item.NetherfusedGemItem; +import net.sweenus.simplyswords.item.RunefusedGemItem; +import net.sweenus.simplyswords.item.RunicSwordItem; +import net.sweenus.simplyswords.item.RunicTabletItem; +import net.sweenus.simplyswords.item.SimplySwordsNetheriteSwordItem; +import net.sweenus.simplyswords.item.SimplySwordsSwordItem; +import net.sweenus.simplyswords.item.custom.ArcanethystSwordItem; +import net.sweenus.simplyswords.item.custom.BrambleSwordItem; +import net.sweenus.simplyswords.item.custom.BrimstoneClaymoreItem; +import net.sweenus.simplyswords.item.custom.CaelestisSwordItem; +import net.sweenus.simplyswords.item.custom.DormantRelicSwordItem; +import net.sweenus.simplyswords.item.custom.EmberIreSwordItem; +import net.sweenus.simplyswords.item.custom.EmberlashSwordItem; +import net.sweenus.simplyswords.item.custom.EnigmaSwordItem; +import net.sweenus.simplyswords.item.custom.FlamewindSwordItem; +import net.sweenus.simplyswords.item.custom.FrostfallSwordItem; +import net.sweenus.simplyswords.item.custom.HarbingerSwordItem; +import net.sweenus.simplyswords.item.custom.HearthflameSwordItem; +import net.sweenus.simplyswords.item.custom.HiveheartSwordItem; +import net.sweenus.simplyswords.item.custom.IcewhisperSwordItem; +import net.sweenus.simplyswords.item.custom.LichbladeSwordItem; +import net.sweenus.simplyswords.item.custom.LivyatanSwordItem; +import net.sweenus.simplyswords.item.custom.MagibladeSwordItem; +import net.sweenus.simplyswords.item.custom.MagiscytheSwordItem; +import net.sweenus.simplyswords.item.custom.MagispearSwordItem; +import net.sweenus.simplyswords.item.custom.MoltenEdgeSwordItem; +import net.sweenus.simplyswords.item.custom.PlagueSwordItem; +import net.sweenus.simplyswords.item.custom.RibboncleaverSwordItem; +import net.sweenus.simplyswords.item.custom.RighteousRelicSwordItem; +import net.sweenus.simplyswords.item.custom.ShadowstingSwordItem; +import net.sweenus.simplyswords.item.custom.SoulPyreSwordItem; +import net.sweenus.simplyswords.item.custom.SoulkeeperSwordItem; +import net.sweenus.simplyswords.item.custom.SoulrenderSwordItem; +import net.sweenus.simplyswords.item.custom.StarsEdgeSwordItem; +import net.sweenus.simplyswords.item.custom.StealSwordItem; +import net.sweenus.simplyswords.item.custom.StormSwordItem; +import net.sweenus.simplyswords.item.custom.StormbringerSwordItem; +import net.sweenus.simplyswords.item.custom.StormsEdgeSwordItem; +import net.sweenus.simplyswords.item.custom.SunfireSwordItem; +import net.sweenus.simplyswords.item.custom.TaintedRelicSwordItem; +import net.sweenus.simplyswords.item.custom.TempestSwordItem; +import net.sweenus.simplyswords.item.custom.ThunderbrandSwordItem; +import net.sweenus.simplyswords.item.custom.TwistedBladeItem; +import net.sweenus.simplyswords.item.custom.WatcherClaymoreItem; +import net.sweenus.simplyswords.item.custom.WatchingWarglaiveItem; +import net.sweenus.simplyswords.item.custom.WaxweaverSwordItem; +import net.sweenus.simplyswords.item.custom.WhisperwindSwordItem; +import net.sweenus.simplyswords.item.custom.WickpiercerSwordItem; @SuppressWarnings({"SpellCheckingInspection", "UnstableApiUsage"}) public class ItemsRegistry { diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index 68e7e35f..a1661e7e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -19,7 +19,6 @@ import net.minecraft.util.math.Box; import net.minecraft.world.World; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.item.component.StoredChargeComponent; import net.sweenus.simplyswords.registry.ComponentTypeRegistry; import net.sweenus.simplyswords.registry.EffectRegistry; diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 8b6f68cd..4ee0fbc4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -31,14 +31,12 @@ import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.SimplySwordsExpectPlatform; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; import net.sweenus.simplyswords.effect.instance.SimplySwordsStatusEffectInstance; import net.sweenus.simplyswords.entity.BattleStandardDarkEntity; import net.sweenus.simplyswords.entity.BattleStandardEntity; import net.sweenus.simplyswords.item.TwoHandedWeapon; import net.sweenus.simplyswords.registry.SoundRegistry; -import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Optional; diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index e6095000..18fa2a97 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1112,7 +1112,8 @@ - "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier.@PrefixText" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7\nThese values should be §4THE SAME ON BOTH CLIENT AND SERVER§7\nThe damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + positive_modifier - negative_modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Positive Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", + "simplyswords.weapon_attributes.typeDamageModifier" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7", + "simplyswords.weapon_attributes.typeDamageModifier.desc" : "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Longsword + damage modifier", "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Twinblade + damage modifier", "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Rapier + damage modifier", @@ -1290,8 +1291,8 @@ "simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", "simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", - "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", + "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", "simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", @@ -1303,7 +1304,6 @@ "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", - "simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", "simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", @@ -1588,14 +1588,14 @@ "simplyswords.status_effects.echoDamage": "Echo base damage", - "simplyswords.config.basic_settings.chance": "Chance", - "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", - "simplyswords.config.basic_settings.duration": "Duration", - "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", - "simplyswords.config.basic_settings.radius": "Radius", - "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", - "simplyswords.config.basic_settings.frequency": "Frequency", - "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs 'once per X ticks'", - "simplyswords.config.basic_settings.cooldown": "Cooldown", - "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" + "simplyswords.config.basic_settings.chance": "Chance", + "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", + "simplyswords.config.basic_settings.duration": "Duration", + "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", + "simplyswords.config.basic_settings.radius": "Radius", + "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", + "simplyswords.config.basic_settings.frequency": "Frequency", + "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", + "simplyswords.config.basic_settings.cooldown": "Cooldown", + "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" } \ No newline at end of file diff --git a/common/src/main/resources/assets/simplyswords/lang/zh_cn.json b/common/src/main/resources/assets/simplyswords/lang/zh_cn.json index 568ad3bc..0857fedb 100644 --- a/common/src/main/resources/assets/simplyswords/lang/zh_cn.json +++ b/common/src/main/resources/assets/simplyswords/lang/zh_cn.json @@ -124,7 +124,7 @@ "item.simplyswords.magiblade": "秘法双头剑", "item.simplyswords.caelestis": "星阙", - + "item.simplyswords.runic_tablet": "符文石板", "item.simplyswords.runefused_gem": "符文宝石", "item.simplyswords.netherfused_gem": "狱灵宝石", @@ -531,13 +531,13 @@ "item.simplyswords.magispear.event2": "腐朽遗杖似乎对黑暗有一些反应", - + "effect.simplyswords.freeze": "冻结", "effect.simplyswords.omen": "预兆", "effect.simplyswords.watcher": "守望", - "effect.simplyswords.electric": "闪电", + "effect.simplyswords.storm": "闪电", "effect.simplyswords.wildfire": "野火", "effect.simplyswords.echo": "共鸣", "effect.simplyswords.ward": "加护", @@ -897,7 +897,7 @@ "item.simplyswords.magispearsworditem.tooltip7": "随后进行下砸攻击,", "item.simplyswords.magispearsworditem.tooltip8": "伤害周围所有敌人。", "item.simplyswords.magispearsworditem.tooltip9": "你在跃起期间无敌。", - + "item.simplyswords.caelestissworditem.tooltip1": "独特效果:斗转星移", "item.simplyswords.caelestissworditem.tooltip2": "装备这个物品时,", "item.simplyswords.caelestissworditem.tooltip3": "将获得概率完全", @@ -916,7 +916,7 @@ "item.simplyswords.poweredrelicsworditem.tooltip2": "更强的能量从中逸散。", - + "item.simplyswords.levitationsworditem.tooltip1": "符文之力:漂浮", "item.simplyswords.uniquesworditem.runefused_power.float": "[ 符文附加:漂浮 ]", "item.simplyswords.levitationsworditem.tooltip2": "击中时概率反转", @@ -961,11 +961,11 @@ "item.simplyswords.unstablesworditem.tooltip2": "周期性给予持有者", "item.simplyswords.unstablesworditem.tooltip3": "不稳定的状态效果。", "item.simplyswords.activedefencesworditem.tooltip1": "符文之力:主动防御", - "item.simplyswords.uniquesworditem.runefused_power.activedefence": "[ 符文附加:主动防御 ]", + "item.simplyswords.uniquesworditem.runefused_power.active_defence": "[ 符文附加:主动防御 ]", "item.simplyswords.activedefencesworditem.tooltip2": "周期性向周围敌对生物射箭", "item.simplyswords.activedefencesworditem.tooltip3": "(发动需要拥有箭矢)。", "item.simplyswords.frostwardsworditem.tooltip1": "符文之力:霜卫", - "item.simplyswords.uniquesworditem.runefused_power.frostward": "[ 符文附加:霜卫 ]", + "item.simplyswords.uniquesworditem.runefused_power.frost_ward": "[ 符文附加:霜卫 ]", "item.simplyswords.frostwardsworditem.tooltip2": "周期性向周围敌对生物", "item.simplyswords.frostwardsworditem.tooltip3": "发射能减速敌人的雪球。", "item.simplyswords.momentumsworditem.tooltip1": "符文之力:动能", @@ -995,8 +995,8 @@ "item.simplyswords.runic_tablet.tooltip3": "也可用来修", "item.simplyswords.runic_tablet.tooltip4": "复独特武器。", - - + + "item.simplyswords.uniquesworditem.netherfused_power.echo": "[ 狱灵附加:共鸣 ]", "item.simplyswords.uniquesworditem.netherfused_power.echo.description": "你的武器会为目标附着", "item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "共鸣印记,能在短暂延", @@ -1086,7 +1086,7 @@ "item.simplyswords.uniquesworditem.netherfused_power.deception.description": "使用闪避能力规", "item.simplyswords.uniquesworditem.netherfused_power.deception.description2":"避攻击后,有概", "item.simplyswords.uniquesworditem.netherfused_power.deception.description3":"率免除高亮效果。", - + "item.simplyswords.common.blacklisteffect": "能力已被禁用", "item.simplyswords.common.showtooltip": "- 按§2ALT§7以查看宝石槽 -", "item.simplyswords.common.showtooltip.info": "- 按§2ALT§7以查看详情 -", @@ -1103,621 +1103,500 @@ "item.simplyswords.compat.scaleHealing": "§7此能力与§a治愈§7法术强度相关", - "text.autoconfig.simplyswords_main.title" : "简易刀剑", - "text.autoconfig.simplyswords_main.category.general" : "整体", - "text.autoconfig.simplyswords_main.category.gem_effects" : "宝石效果", - "text.autoconfig.simplyswords_main.category.loot" : "战利品", - "text.autoconfig.simplyswords_main.category.runic_effects" : "符文效果", - "text.autoconfig.simplyswords_main.category.status_effects" : "状态效果", - "text.autoconfig.simplyswords_main.category.unique_effects" : "独特效果", - "text.autoconfig.simplyswords_main.category.weapon_attributes" : "武器属性", - - - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_positiveDamageModifier.@PrefixText" : "§a[武器属性配置]§7\n§4客户端与服务端§7中,这些值应该一致。\n武器的伤害可通过调整它们的权重来调节。\n这会直接影响伤害,但不等于游戏中的外显数值。\n计算方式:材质伤害+基础伤害+伤害增益数-伤害削减数=外显数值\n需要重启游戏来应用更改。\n\n§a[伤害增益数]§7\n使用例:设为3将提升3点外显伤害。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_positiveDamageModifier": "长剑 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_positiveDamageModifier": "双头剑 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_positiveDamageModifier": "细剑 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_positiveDamageModifier": "武士刀 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_positiveDamageModifier": "三叉刺 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_positiveDamageModifier": "矛 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_positiveDamageModifier": "长柄刀 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_positiveDamageModifier": "战刃 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_positiveDamageModifier": "弯刀 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_positiveDamageModifier": "阔剑 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_positiveDamageModifier": "巨斧 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_positiveDamageModifier": "巨锤 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_positiveDamageModifier": "环刃 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_positiveDamageModifier": "长柄镰 + 伤害增益数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_positiveDamageModifier": "戟 + 伤害增益数", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_negativeDamageModifier.@PrefixText" : "§a[伤害削减数]§7\n将此值设为3将降低3点武器外显数值。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_negativeDamageModifier": "长剑 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_negativeDamageModifier": "双头剑 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_negativeDamageModifier": "细剑 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_negativeDamageModifier": "武士刀 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_negativeDamageModifier": "三叉刺 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_negativeDamageModifier": "矛 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_negativeDamageModifier": "长柄刀 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_negativeDamageModifier": "战刃 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_negativeDamageModifier": "弯刀 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_negativeDamageModifier": "阔剑 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_negativeDamageModifier": "巨斧 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_negativeDamageModifier": "巨锤 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_negativeDamageModifier": "环刃 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_negativeDamageModifier": "长柄镰 - 伤害削减数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_negativeDamageModifier": "戟 - 伤害削减数", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.iron_damageModifier.@PrefixText" : "§a[基础伤害]§7\n伤害调整数将在此值的基础上进行加减运算。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.iron_damageModifier": "铁制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gold_damageModifier": "金制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.diamond_damageModifier": "钻石武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.netherite_damageModifier": "下界合金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.runic_damageModifier": "符文武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.adamantite_damageModifier": "精金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.aquarium_damageModifier": "激水武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.banglum_damageModifier": "聚爆石武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.carmot_damageModifier": "点金石武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.kyber_damageModifier": "凯伯武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mythril_damageModifier": "秘银武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.orichalcum_damageModifier": "山铜武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.durasteel_damageModifier": "韧钢武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.osmium_damageModifier": "锇制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.prometheum_damageModifier": "钷制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.quadrillum_damageModifier": "兆金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.runite_damageModifier": "符石武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starPlatinum_damageModifier": "星辰铂金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bronze_damageModifier": "青铜武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.copper_damageModifier": "铜制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.steel_damageModifier": "钢制武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.palladium_damageModifier": "钯金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormyx_damageModifier": "飓霆武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.celestium_damageModifier": "倚天武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.metallurgium_damageModifier": "炼金武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobber_damageModifier": "戈伯武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobberNether_damageModifier": "下界戈伯武器 基础伤害", - "text.autoconfig.simplyswords_main.option.weapon_attributes.gobberEnd_damageModifier": "末地戈伯武器 基础伤害", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_attackSpeed.@PrefixText" : "§a[攻速调整数]§7\n推荐范围:-1.0至-3.7,-1.0快,-3.7慢。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longsword_attackSpeed": "长剑 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twinblade_attackSpeed": "双头剑 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.rapier_attackSpeed": "细剑 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.katana_attackSpeed": "武士刀 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sai_attackSpeed": "三叉刺 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.spear_attackSpeed": "矛 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.glaive_attackSpeed": "长柄刀 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.warglaive_attackSpeed": "战刃 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.cutlass_attackSpeed": "弯刀 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.claymore_attackSpeed": "阔剑 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greataxe_attackSpeed": "巨斧 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.greathammer_attackSpeed": "巨锤 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.chakram_attackSpeed": "环刃 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.scythe_attackSpeed": "长柄镰 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.halberd_attackSpeed": "戟 攻速调整数", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_damageModifier.@PrefixText" : "§6[独特武器属性配置]§7\n独特武器有所不同,且只有一个调整参数。\n这会直接影响伤害,但不等于游戏中的外显数值。\n计算方式:原版下界合金工具伤害+伤害调整数=外显数值。\n\n§6[伤害增益数]§7\n使用例:设为3将提升3点外显伤害。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_damageModifier": "§6硫磺阔剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thewatcher_damageModifier": "§6守望阔剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormsedge_damageModifier": "§6风暴之刃§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormbringer_damageModifier": "§6风暴使者§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.swordonastick_damageModifier": "绑棍的长剑 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bramblethorn_damageModifier": "§6棘刺§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.watchingwarglaive_damageModifier": "§6守望战刃§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longswordofplague_damageModifier": "§6瘟疫长剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberblade_damageModifier": "§6余烬之刃§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hearthflame_damageModifier": "§6炉火巨锤§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulkeeper_damageModifier": "§6聚魂§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twistedblade_damageModifier": "§6扭曲波刃剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulstealer_damageModifier": "§6窃魂§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulrender_damageModifier": "§6裂魂§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mjolnir_damageModifier": "§6雷神之锤§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulpyre_damageModifier": "§6葬魂§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.frostfall_damageModifier": "§6霜降§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.moltenedge_damageModifier": "§6熔火§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.livyatan_damageModifier": "§6利维坦§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.icewhisper_damageModifier": "§6冰语§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.arcanethyst_damageModifier": "§6奥术紫晶戟§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thunderbrand_damageModifier": "§6纵雷§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.lichblade_damageModifier": "§6巫妖巨剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.shadowsting_damageModifier": "§6影刺§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sunfire_damageModifier": "§6日炎§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.harbinger_damageModifier": "§6噩兆§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.whisperwind_damageModifier": "§6风之低语§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberlash_damageModifier": "§6余烬鞭挞§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.waxweaver_damageModifier": "§6织蜡§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hiveheart_damageModifier": "§6群蜂之心§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starsedge_damageModifier": "§6星芒§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.wickpiercer_damageModifier": "§6穿芯§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.dreadtide_damageModifier": "§6怖潮§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.tempest_damageModifier": "§6烈风§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.flamewind_damageModifier": "§6燎原§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.ribboncleaver_damageModifier": "§6荣缎劈刀§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiscythe_damageModifier": "§6秘法之镰§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.enigma_damageModifier": "§6谜风§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magispear_damageModifier": "§6秘法之矛§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiblade_damageModifier": "§6秘法双头剑§7 伤害调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.caelestis_damageModifier": "§6星阙§7 伤害调整数", - - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_attackSpeed.@PrefixText" : "§a[攻速调整数]§7\n推荐范围:-1.0至-3.7,-1.0快,-3.7慢。", - "text.autoconfig.simplyswords_main.option.weapon_attributes.brimstone_attackSpeed": "§6硫磺阔剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thewatcher_attackSpeed": "§6守望阔剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormsedge_attackSpeed": "§6风暴之刃§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.stormbringer_attackSpeed": "§6风暴使者§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.swordonastick_attackSpeed": "§6绑棍的长剑 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.bramblethorn_attackSpeed": "§6棘刺§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.watchingwarglaive_attackSpeed": "§6守望战刃§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.longswordofplague_attackSpeed": "§6瘟疫长剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberblade_attackSpeed": "§6余烬之刃§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hearthflame_attackSpeed": "§6炉火巨锤§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulkeeper_attackSpeed": "§6聚魂§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.twistedblade_attackSpeed": "§6扭曲波刃剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulstealer_attackSpeed": "§6窃魂§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulrender_attackSpeed": "§6裂魂§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.mjolnir_attackSpeed": "§6雷神之锤§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.soulpyre_attackSpeed": "§6葬魂§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.frostfall_attackSpeed": "§6霜降§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.moltenedge_attackSpeed": "§6熔火§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.livyatan_attackSpeed": "§6利维坦§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.icewhisper_attackSpeed": "§6冰语§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.arcanethyst_attackSpeed": "§6奥术紫晶戟§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.thunderbrand_attackSpeed": "§6纵雷§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.lichblade_attackSpeed": "§6巫妖巨剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.shadowsting_attackSpeed": "§6影刺§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.sunfire_attackSpeed": "§6日炎§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.harbinger_attackSpeed": "§6噩兆§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.whisperwind_attackSpeed": "§6风之低语§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.emberlash_attackSpeed": "§6余烬鞭挞§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.waxweaver_attackSpeed": "§6织蜡§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.hiveheart_attackSpeed": "§6群蜂之心§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.starsedge_attackSpeed": "§6星芒§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.wickpiercer_attackSpeed": "§6穿芯§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.dreadtide_attackSpeed": "§6怖潮§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.tempest_attackSpeed": "§6烈风§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.flamewind_attackSpeed": "§6燎原§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.ribboncleaver_attackSpeed": "§6荣缎劈刀§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiscythe_attackSpeed": "§6秘法之镰§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.enigma_attackSpeed": "§6谜风§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magispear_attackSpeed": "§6秘法之矛§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.magiblade_attackSpeed": "§6秘法双头剑§7 攻速调整数", - "text.autoconfig.simplyswords_main.option.weapon_attributes.caelestis_attackSpeed": "§6星阙§7 攻速调整数", - - - - "text.autoconfig.simplyswords_main.option.runic_effects.enableActiveDefence.@PrefixText" : "§a[符文能力启用项]§7\n禁用符文能力将防止它被获取。", - "text.autoconfig.simplyswords_main.option.runic_effects.enableActiveDefence": "启用 主动防御", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFloat": "启用 漂浮", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterFloat": "启用 符能增强版漂浮", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFreeze": "启用 冰冻", - "text.autoconfig.simplyswords_main.option.runic_effects.enableShielding": "启用 庇佑", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterShielding": "启用 符能增强版庇佑", - "text.autoconfig.simplyswords_main.option.runic_effects.enableSlow": "启用 缓速", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterSlow": "启用 符能增强版缓速", - "text.autoconfig.simplyswords_main.option.runic_effects.enableStoneskin": "启用 石肤", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterStoneskin": "启用 符能增强版石肤", - "text.autoconfig.simplyswords_main.option.runic_effects.enableSwiftness": "启用 极速", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterSwiftness": "启用 符能增强版极速", - "text.autoconfig.simplyswords_main.option.runic_effects.enableTrailblaze": "启用 焰痕", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterTrailblaze": "启用 符能增强版焰痕", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWeaken": "启用 弱化", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterWeaken": "启用 符能增强版弱化", - "text.autoconfig.simplyswords_main.option.runic_effects.enableZephyr": "启用 微风", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterZephyr": "启用 符能增强版微风", - "text.autoconfig.simplyswords_main.option.runic_effects.enableFrostWard": "启用 霜卫", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWildfire": "启用 野火", - "text.autoconfig.simplyswords_main.option.runic_effects.enableUnstable": "启用 不稳定", - "text.autoconfig.simplyswords_main.option.runic_effects.enableMomentum": "启用 动能", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterMomentum": "启用 符能增强版动能", - "text.autoconfig.simplyswords_main.option.runic_effects.enableImbued": "启用 淬魔", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterImbued": "启用 符能增强版淬魔", - "text.autoconfig.simplyswords_main.option.runic_effects.enablePincushion": "启用 针垫", - "text.autoconfig.simplyswords_main.option.runic_effects.enableGreaterPincushion": "启用 符能增强版针垫", - "text.autoconfig.simplyswords_main.option.runic_effects.enableWard": "启用 加护", - "text.autoconfig.simplyswords_main.option.runic_effects.enableImmolate": "启用 献祭", - - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops.@Tooltip" : "禁用此项将防止本模组的物品作为战利品出现在箱子中。", - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops.@PrefixText" : "§6[战利品启用项]§7\n禁用选项将防止它作为战利品出现在箱子中。\n这个物品仍然会出现在创造模式物品栏中,但它在正常的生存模式下已经无法获取。", - "text.autoconfig.simplyswords_main.option.loot.enableLootDrops": "启用战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableLootInVillages.@Tooltip" : "启用时,简易刀剑的战利品可生成在村庄的箱子中。", - "text.autoconfig.simplyswords_main.option.loot.enableLootInVillages": "启用村庄战利品获取", - "text.autoconfig.simplyswords_main.option.loot.standardLootTableWeight.@Tooltip": "铁或金(铁>金)制武器出现在箱子中的概率。1.00 = 100%。", - "text.autoconfig.simplyswords_main.option.loot.standardLootTableWeight": "一般武器出现概率", - "text.autoconfig.simplyswords_main.option.loot.rareLootTableWeight.@Tooltip": "钻石武器出现在箱子中的概率。1.00 = 100%。", - "text.autoconfig.simplyswords_main.option.loot.rareLootTableWeight": "稀有武器出现概率", - "text.autoconfig.simplyswords_main.option.loot.runicLootTableWeight.@Tooltip": "符文武器出现在箱子中的概率。1.00 = 100%。", - "text.autoconfig.simplyswords_main.option.loot.runicLootTableWeight": "符文武器出现概率", - "text.autoconfig.simplyswords_main.option.loot.uniqueLootTableWeight.@Tooltip": "独特武器出现在箱子中的概率。1.00 = 100%。", - "text.autoconfig.simplyswords_main.option.loot.uniqueLootTableWeight": "独特武器出现概率", - "text.autoconfig.simplyswords_main.option.loot.enableContainedRemnants.@Tooltip": "是否强能容器能够改变形态。若已禁用独特武器掉落,请禁用此项。", - "text.autoconfig.simplyswords_main.option.loot.enableContainedRemnants": "启用强能容器", - "text.autoconfig.simplyswords_main.option.loot.enableBrimstone": "硫磺阔剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableTheWatcher": "守望阔剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableStormsEdge": "风暴之刃 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableStormbringer": "风暴使者 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSwordOnAStick": "绑棍的长剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableBramblethorn": "棘刺 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableWatchingWarglaive": "守望战刃 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableLongswordOfThePlague": "瘟疫长剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableEmberblade": "余烬之刃 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableHearthflame": "炉火巨锤 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSoulkeeper": "聚魂 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableTwistedBlade": "扭曲波刃剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSoulstealer": "窃魂 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSoulrender": "裂魂 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableMjolnir": "雷神之锤 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSoulpyre": "葬魂 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableFrostfall": "霜降 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableMoltenEdge": "熔火 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableLivyatan": "利维坦 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableIcewhisper": "冰语 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableArcanethyst": "奥术紫晶戟 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableThunderbrand": "纵雷 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableSlumberingLichblade": "巫妖巨剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableShadowsting": "影刺 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableDormantRelic": "沉眠遗剑 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableWhisperwind": "风之低语 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableEmberlash": "余烬鞭挞 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableWaxweaver": "织蜡 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableHiveheart": "群蜂之心 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableStarsEdge": "星芒 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableWickpiercer": "穿芯 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableTempest": "烈风 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableFlamewind": "燎原 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableRibboncleaver": "荣缎劈刀 可通过战利品获取", - "text.autoconfig.simplyswords_main.option.loot.enableCaelestis": "星阙 可通过战利品获取", - - "text.autoconfig.simplyswords_main.option.general.enableWeaponImpactSounds": "启用武器击中音效", - "text.autoconfig.simplyswords_main.option.general.weaponImpactSoundsVolume": "击中音效音量", - "text.autoconfig.simplyswords_main.option.general.enableWeaponFootfalls": "启用武器脚步声", - "text.autoconfig.simplyswords_main.option.general.enablePassiveParticles": "启用被动粒子效果", - "text.autoconfig.simplyswords_main.option.general.enableUniqueGemSockets.@Tooltip" : "若禁用,宝石槽将不再出现在新获取的独特武器上。不具备追溯效力。", - "text.autoconfig.simplyswords_main.option.general.enableUniqueGemSockets": "启用独特武器宝石槽", - "text.autoconfig.simplyswords_main.option.general.compatGobberEndWeaponsUnbreakable": "§a[兼容]§7 启用戈伯模组中,不可破坏的末地戈伯武器", - "text.autoconfig.simplyswords_main.option.general.compatEnableSpellPowerScaling.@Tooltip" : "§a[安装Spell Power后]§7\n若启用,一些武器的能力将与法术强度属性相挂钩。", - "text.autoconfig.simplyswords_main.option.general.compatEnableSpellPowerScaling": "§a[兼容]§7 启用法术强度关联性", - - "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap" : "伤害吸收上限", - "text.autoconfig.simplyswords_main.option.unique_effects.abilityAbsorptionCap.@Tooltip" : "所有能力给予的伤害吸收值都不能大于此值", - - "text.autoconfig.simplyswords_main.option.unique_effects.watcherChance.@PrefixText" : "§6[守望阔剑 & 守望战刃]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherChance": "守望阔剑 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherRestoreAmount": "守望阔剑 生命回复量", - "text.autoconfig.simplyswords_main.option.unique_effects.watcherRadius": "守望阔剑 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.omenChance": "预兆 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.omenAbsorptionCap": "预兆 伤害吸收上限", - "text.autoconfig.simplyswords_main.option.unique_effects.omenInstantKillThreshold": "预兆 秒杀阈值", - - "text.autoconfig.simplyswords_main.option.unique_effects.stealChance.@PrefixText" : "§6[窃魂]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stealChance": "灵魂窃取 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.stealDuration": "灵魂窃取 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.stealInvisDuration": "灵魂窃取 隐身时长", - "text.autoconfig.simplyswords_main.option.unique_effects.stealBlindDuration": "灵魂窃取 致盲时长", - "text.autoconfig.simplyswords_main.option.unique_effects.stealRadius": "灵魂窃取 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.stealSpellScaling": "灵魂窃取 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldChance.@PrefixText" : "§6[聚魂]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldChance": "灵魂融合 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldDuration": "灵魂融合 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.soulMeldRadius": "灵魂融合 范围", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendChance.@PrefixText" : "§6[裂魂]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendChance": "灵魂撕裂 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDuration": "灵魂撕裂 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDamageMulti": "灵魂撕裂 伤害倍率", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendHealMulti": "灵魂撕裂 治疗量倍率", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendRadius": "灵魂撕裂 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendMaxStacks": "灵魂撕裂 最大存储量", - "text.autoconfig.simplyswords_main.option.unique_effects.soulrendDamageSpellScaling": "灵魂撕裂 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityChance.@PrefixText" : "§6[扭曲波刃剑]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityChance": "凶猛 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityDuration": "凶猛 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityMaxStacks": "凶猛 最大存储量", - "text.autoconfig.simplyswords_main.option.unique_effects.ferocityStrengthTier": "凶猛 力量等级", - - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreChance.@PrefixText" : "§6[余烬之刃]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreChance": "余烬怒火 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.emberIreDuration": "余烬怒火 时长", - - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryChance.@PrefixText" : "§6[炉火巨锤]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryChance": "火山之怒 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryRadius": "火山之怒 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryCooldown": "火山之怒 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFuryDamage": "火山之怒 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.volcanicFurySpellScaling": "火山之怒 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.stormChance.@PrefixText" : "§6[雷神之锤]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stormChance": "风暴 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.stormRadius": "风暴 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.stormCooldown": "风暴 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.stormFrequency": "风暴 频率", - "text.autoconfig.simplyswords_main.option.unique_effects.stormDuration": "风暴 持续时间", - - "text.autoconfig.simplyswords_main.option.unique_effects.plagueChance.@PrefixText" : "§6[瘟疫长剑]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.plagueChance": "瘟疫 概率", - - "text.autoconfig.simplyswords_main.option.unique_effects.brimstoneChance.@PrefixText" : "§6[硫磺阔剑]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.brimstoneChance": "硫磺 概率", - - "text.autoconfig.simplyswords_main.option.unique_effects.brambleChance.@PrefixText" : "§6[棘刺]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.brambleChance": "木棘 概率", - - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRange.@PrefixText" : "§6[葬魂]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRange": "灵魂锁链 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherRadius": "灵魂锁链 半径", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherDuration": "灵魂锁链 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherIgniteDuration": "灵魂锁链 点燃时长", - "text.autoconfig.simplyswords_main.option.unique_effects.soultetherResistanceDuration": "灵魂锁链 抗性提升时长", - - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown.@PrefixText" : "§6[霜降]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryCooldown": "霜怒 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryRadius": "霜怒 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryDamage": "霜怒 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryChance": "霜怒 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFuryDuration": "霜怒 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.frostFurySpellScaling": "霜怒 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarCooldown.@PrefixText" : "§6[熔火]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarCooldown": "狂咆之炎 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarRadius": "狂咆之炎 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarKnockbackStrength": "狂咆之炎 击退力度", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarChance": "狂咆之炎 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.moltenRoarDuration": "狂咆之炎 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterRadius.@PrefixText" : "§6[利维坦]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterRadius": "冰解 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterDamage": "冰解 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterChance": "冰解 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterDuration": "冰解 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.frostShatterSpellScaling": "冰解 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostRadius.@PrefixText" : "§6[冰语]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostRadius": "永冻 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostDamage": "永冻 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostCooldown": "永冻 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostDuration": "永冻 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.permafrostSpellScaling": "永冻 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultRadius.@PrefixText" : "§6[奥术紫晶戟]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultRadius": "奥术之力 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultDamage": "奥术之力 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultCooldown": "奥术之力 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultChance": "奥术之力 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultDuration": "奥术之力 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.arcaneAssaultSpellScaling": "奥术之力 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzRadius.@PrefixText" : "§6[纵雷]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzRadius": "霆闪 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzDamage": "霆闪 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzCooldown": "霆闪 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzChance": "霆闪 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.thunderBlitzSpellScaling": "霆闪 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltCooldown.@PrefixText" : "§6[风暴之刃]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltCooldown": "霆闪 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.stormJoltChance": "霆闪 概率", - - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRadius.@PrefixText" : "§6[巫妖巨剑]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRadius": "悲魂 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishAbsorptionCap": "悲魂 伤害吸收上限", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishDamage": "悲魂 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishCooldown": "悲魂 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishDuration": "悲魂 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishHeal": "悲魂 治疗量", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishRange": "悲魂 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.soulAnguishSpellScaling": "悲魂 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectBlockDuration.@PrefixText" : "§6[风暴使者]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectBlockDuration": "冲震 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectDamage": "冲震 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectCooldown": "冲震 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectParryDuration": "冲震 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.shockDeflectSpellScaling": "冲震 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistCooldown.@PrefixText" : "§6[影刺]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistCooldown": "遮影 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistChance": "遮影 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistDamageMulti": "遮影 伤害倍率", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistBlindDuration": "遮影 致盲时长", - "text.autoconfig.simplyswords_main.option.unique_effects.shadowmistRadius": "遮影 范围", - - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardCooldown.@PrefixText" : "§6[深渊战旗]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardCooldown": "深渊战旗 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardChance": "深渊战旗 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardDamage": "深渊战旗 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.abyssalStandardSpellScaling": "深渊战旗 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardCooldown.@PrefixText" : "§6[正义战旗]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardCooldown": "正义战旗 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardChance": "正义战旗 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardDamage": "正义战旗 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardSpellScaling": "正义战旗 法术强度伤害倍数", - "text.autoconfig.simplyswords_main.option.unique_effects.righteousStandardSpellScalingHeal": "正义战旗 法术强度治疗乘数", - - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerCooldown.@PrefixText" : "§6[风之低语]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerCooldown": "绝息一闪 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerChance": "绝息一闪 概率", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerRadius": "绝息一闪 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerMaxStacks": "绝息一闪 效果叠加上限", - "text.autoconfig.simplyswords_main.option.unique_effects.fatalFlickerDashVelocity": "绝息一闪 突进速度", - - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderCooldown.@PrefixText" : "§6[余烬鞭挞]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderCooldown": "隐燃 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderMaxStacks": "隐燃 效果叠加上限", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderHeal": "隐燃 恢复百分比", - "text.autoconfig.simplyswords_main.option.unique_effects.smoulderSpellScaling": "隐燃 法术强度伤害倍数", - - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveCooldown.@PrefixText" : "§6[织蜡]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveCooldown": "织蜡 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.waxweaveMaxStacks": "织蜡 效果叠加上限", - - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindCooldown.@PrefixText" : "§6[群蜂之心]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindCooldown": "蜂巢思维 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindDuration": "蜂巢思维 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.hivemindDamage": "蜂巢思维 伤害", - - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeCooldown.@PrefixText" : "§6[星芒]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeCooldown": "星涌 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeDuration": "星涌 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeStacks": "星涌 急迫效果叠加上限", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeDamageModifier": "星涌 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.celestialSurgeLifestealModifier": "星涌 生命窃取", - - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryCooldown.@PrefixText" : "§6[穿芯]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryCooldown": "烛焰之怒 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryDuration": "烛焰之怒 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.flickerFuryDamage": "烛焰之怒 伤害", - - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDuration.@PrefixText" : "§6[怖潮]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDuration": "虚空召唤 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerStartingTickFrequency": "虚空召唤 起始刻检测频率", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerDamageModifier": "虚空召唤 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionFrequency": "虚空召唤 侵蚀频率", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionPerTick": "虚空召唤 每刻侵蚀值", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionDuration": "虚空召唤 侵蚀持续时间", - "text.autoconfig.simplyswords_main.option.unique_effects.voidcallerCorruptionMax": "虚空召唤 最大侵蚀值", - - "text.autoconfig.simplyswords_main.option.unique_effects.vortexDuration.@PrefixText" : "§6[烈风]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexDuration": "涡流 时长", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexMaxSize": "涡流 最大范围", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexMaxStacks": "涡流 效果叠加上限", - "text.autoconfig.simplyswords_main.option.unique_effects.vortexSpellScaling": "涡流 法术强度伤害乘数", - - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpreadCap.@PrefixText" : "§6[燎原]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpreadCap": "灰烬风暴 播种上限", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormDamage": "灰烬风暴 持续伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormDetonationDamage": "灰烬风暴 爆炸伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormCooldown": "灰烬风暴 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormMaxHaste": "灰烬风暴 急迫效果叠加上限", - "text.autoconfig.simplyswords_main.option.unique_effects.emberstormSpellScaling": "灰烬风暴 法术强度伤害乘数", - - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathCooldown.@PrefixText" : "§6[荣缎劈刀]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathCooldown": "荣缎护身 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathResilienceAmplifier": "荣缎护身 韧性提升倍率", - "text.autoconfig.simplyswords_main.option.unique_effects.ribbonwrathDamageBonusPercent": "荣缎护身 额外伤害倍率", - - "text.autoconfig.simplyswords_main.option.unique_effects.magistormCooldown.@PrefixText" : "§6[秘法之镰]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormCooldown": "秘法风暴 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormDuration": "秘法风暴 持续时间", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormRadius": "秘法风暴 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormDamage": "秘法风暴 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormRepairChance": "秘法风暴 修补概率", - "text.autoconfig.simplyswords_main.option.unique_effects.magistormSpellScaling": "秘法风暴 法术强度伤害乘数", - - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaCooldown.@PrefixText" : "§6[谜风]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaCooldown": "谜风 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaDecayRate": "谜风 衰减率", - "text.autoconfig.simplyswords_main.option.unique_effects.enigmaChaseRadius": "谜风 追踪范围", - - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeCooldown.@PrefixText" : "§6[秘法双头剑]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeCooldown": "秘法音爆 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeSonicDistance": "秘法音爆 射程", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeDamageModifier": "秘法音爆 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeRepelChance": "秘法音爆 检测概率", - "text.autoconfig.simplyswords_main.option.unique_effects.magibladeRepelRadius": "秘法音爆 检测范围", - - "text.autoconfig.simplyswords_main.option.unique_effects.magislamCooldown.@PrefixText" : "§6[秘法之矛]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamCooldown": "秘法跃击 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamRadius": "秘法跃击 范围", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamDamageModifier": "秘法跃击 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamMagicChance": "秘法跃击 法伤概率", - "text.autoconfig.simplyswords_main.option.unique_effects.magislamMagicModifier": "秘法跃击 魔法伤害", - - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftCooldown.@PrefixText" : "§6[星阙]§7", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftCooldown": "斗转星移 冷却时间", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDuration": "斗转星移 持续时间", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDamageModifier": "斗转星移 伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftDamageMax": "斗转星移 最大伤害", - "text.autoconfig.simplyswords_main.option.unique_effects.astralShiftChance": "斗转星移 免伤概率", - - - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessChance.@PrefixText" : "§b[极速]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.swiftnessDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.slowChance.@PrefixText" : "§b[缓速]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.slowChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.slowDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.poisonChance.@PrefixText" : "§b[猛毒]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.poisonChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.poisonDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.freezeChance.@PrefixText" : "§b[冰冻]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.freezeChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.freezeDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireChance.@PrefixText" : "§b[野火]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireDuration": "时长", - "text.autoconfig.simplyswords_main.option.runic_effects.wildfireRadius": "范围", - - "text.autoconfig.simplyswords_main.option.runic_effects.floatChance.@PrefixText" : "§b[漂浮]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.floatChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.floatDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrChance.@PrefixText" : "§b[微风]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.zephyrDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingChance.@PrefixText" : "§b[庇佑]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.shieldingDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinChance.@PrefixText" : "§b[石肤]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.stoneskinDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeChance.@PrefixText" : "§b[焰痕]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.trailblazeDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.weakenChance.@PrefixText" : "§b[弱化]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.weakenChance": "概率", - "text.autoconfig.simplyswords_main.option.runic_effects.weakenDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.unstableFrequency.@PrefixText" : "§b[不稳定]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.unstableFrequency": "触发频率", - "text.autoconfig.simplyswords_main.option.runic_effects.unstableDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceFrequency.@PrefixText" : "§b[主动防御]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceFrequency": "触发频率", - "text.autoconfig.simplyswords_main.option.runic_effects.activeDefenceRadius": "范围", - - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardFrequency.@PrefixText" : "§b[霜卫]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardFrequency": "触发频率", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardRadius": "范围", - "text.autoconfig.simplyswords_main.option.runic_effects.frostWardDuration": "时长", - - "text.autoconfig.simplyswords_main.option.runic_effects.momentumCooldown.@PrefixText" : "§b[动能]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.momentumCooldown": "概率", - - "text.autoconfig.simplyswords_main.option.runic_effects.imbuedChance.@PrefixText" : "§b[淬魔]§7", - "text.autoconfig.simplyswords_main.option.runic_effects.imbuedChance": "概率", - - "text.autoconfig.simplyswords_main.option.gem_effects.enableEcho.@PrefixText" : "§4[狱灵宝石启用项]§7\n禁用选项将防止通过宝石获取指定狱灵之力。", - "text.autoconfig.simplyswords_main.option.gem_effects.enableEcho": "启用 共鸣宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableBerserk": "启用 暴戾宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableRadiance": "启用 辐射宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableOnslaught": "启用 暴起宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableNullification": "启用 剥离宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enablePrecise.@PrefixText" : "§6[简单技能模组兼容宝石]§7\n这些宝石仅在简单技能模组安装后才能被获取。", - "text.autoconfig.simplyswords_main.option.gem_effects.enablePrecise": "启用 精准宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.preciseChance": "精准 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableMighty": "启用 强能宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.mightyChance": "强能 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableStealthy": "启用 隐秘宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.stealthyChance": "隐秘 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableRenewed": "启用 更新宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.renewedChance": "更新 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableAccelerant": "启用 加速宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableLeaping": "启用 跳跃宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.leapingChance": "跳跃 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellshield": "启用 法术护盾宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.spellshieldChance": "法术护盾 概率", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellforged": "启用 法术锻融宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSoulshock": "启用 灵魂震颤宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableSpellStandard": "启用 秘法战旗宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableWarStandard": "启用 纷争战旗宝石", - "text.autoconfig.simplyswords_main.option.gem_effects.enableDeception": "启用 诡诈宝石", - - "text.autoconfig.simplyswords_main.option.status_effects.echoDamage": "共鸣基础伤害" -} + "simplyswords.general" : "整体", + "simplyswords.gem_powers" : "宝石效果", + "simplyswords.loot" : "战利品", + "simplyswords.status_effects" : "状态效果", + "simplyswords.unique_effects" : "独特效果", + "simplyswords.weapon_attributes" : "武器属性", + + + + "simplyswords.weapon_attributes.typeDamageModifier" : "§a[武器属性配置]§7", + "simplyswords.weapon_attributes.typeDamageModifier.desc" : "\n武器的伤害可通过调整它们的权重来调节。\n这会直接影响伤害,但不等于游戏中的外显数值。\n计算方式:材质伤害+基础伤害+伤害增益数-伤害削减数=外显数值\n需要重启游戏来应用更改。\n\n§a[伤害增益数]§7\n使用例:设为3将提升3点外显伤害。", + "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "长剑 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "双头剑 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "细剑 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "武士刀 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "三叉刺 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "矛 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "长柄刀 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "战刃 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "弯刀 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "阔剑 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "巨斧 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "巨锤 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "环刃 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "长柄镰 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "戟 + 伤害增益数", + + "simplyswords.weapon_attributes.materialDamageModifier" : "§a[基础伤害]§7", + "simplyswords.weapon_attributes.materialDamageModifier.desc" : "伤害调整数将在此值的基础上进行加减运算。", + "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals" : "Requires Mythic Metals", + "simplyswords.weapon_attributes.materialDamageModifier.gobber2" : "Requires Gobber", + "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "铁制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "金制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "钻石武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "下界合金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "符文武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "精金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "激水武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "聚爆石武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "点金石武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "凯伯武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "秘银武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "山铜武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "韧钢武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "锇制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "钷制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "兆金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "符石武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "星辰铂金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "青铜武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "铜制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "钢制武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "钯金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "飓霆武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "倚天武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "炼金武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "戈伯武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "下界戈伯武器 基础伤害", + "simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "末地戈伯武器 基础伤害", + + "simplyswords.weapon_attributes.typeAttackSpeed" : "§a[攻速调整数]§7", + "simplyswords.weapon_attributes.typeAttackSpeed.desc" : "推荐范围:-1.0至-3.7,-1.0快,-3.7慢。", + "simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "长剑 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "双头剑 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "细剑 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "武士刀 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "三叉刺 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "矛 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "长柄刀 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "战刃 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "弯刀 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "阔剑 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "巨斧 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "巨锤 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "环刃 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "长柄镰 攻速调整数", + "simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "戟 攻速调整数", + + "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[独特武器属性配置]§7", + "simplyswords.weapon_attributes.uniqueDamageModifier.desc" : "独特武器有所不同,且只有一个调整参数。\n这会直接影响伤害,但不等于游戏中的外显数值。\n计算方式:原版下界合金工具伤害+伤害调整数=外显数值。\n\n§6[伤害增益数]§7\n使用例:设为3将提升3点外显伤害。", + "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6硫磺阔剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6守望阔剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6风暴之刃§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6风暴使者§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "绑棍的长剑 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6棘刺§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6守望战刃§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6瘟疫长剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6余烬之刃§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6炉火巨锤§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6聚魂§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6扭曲波刃剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6窃魂§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6裂魂§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6雷神之锤§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6葬魂§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6霜降§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6熔火§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6利维坦§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6冰语§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6奥术紫晶戟§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6纵雷§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6巫妖巨剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6影刺§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6日炎§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6噩兆§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6风之低语§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6余烬鞭挞§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6织蜡§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6群蜂之心§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6星芒§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6穿芯§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6怖潮§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6烈风§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6燎原§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6荣缎劈刀§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6秘法之镰§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6谜风§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6秘法之矛§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6秘法双头剑§7 伤害调整数", + "simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6星阙§7 伤害调整数", + + "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§a[攻速调整数]§7", + "simplyswords.weapon_attributes.uniqueAttackSpeed.desc" : "推荐范围:-1.0至-3.7,-1.0快,-3.7慢。", + "simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6硫磺阔剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6守望阔剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6风暴之刃§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6风暴使者§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6绑棍的长剑 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6棘刺§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6守望战刃§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6瘟疫长剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6余烬之刃§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6炉火巨锤§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6聚魂§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6扭曲波刃剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6窃魂§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6裂魂§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6雷神之锤§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6葬魂§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6霜降§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6熔火§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6利维坦§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6冰语§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6奥术紫晶戟§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6纵雷§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6巫妖巨剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6影刺§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6日炎§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6噩兆§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6风之低语§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6余烬鞭挞§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6织蜡§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6群蜂之心§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6星芒§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6穿芯§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6怖潮§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6烈风§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6燎原§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6荣缎劈刀§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6秘法之镰§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6谜风§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6秘法之矛§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6秘法双头剑§7 攻速调整数", + "simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6星阙§7 攻速调整数", + + "simplyswords.loot.enableLootDrops": "启用战利品获取", + "simplyswords.loot.enableLootDrops.desc" : "禁用此项将防止本模组的物品作为战利品出现在箱子中。", + "simplyswords.loot.enableLootInVillages": "启用村庄战利品获取", + "simplyswords.loot.enableLootInVillages.desc" : "启用时,简易刀剑的战利品可生成在村庄的箱子中。", + "simplyswords.loot.standardLootTableWeight": "一般武器出现概率", + "simplyswords.loot.standardLootTableWeight.desc": "铁或金(铁>金)制武器出现在箱子中的概率。1.00 = 100%。", + "simplyswords.loot.rareLootTableWeight": "稀有武器出现概率", + "simplyswords.loot.rareLootTableWeight.desc": "钻石武器出现在箱子中的概率。1.00 = 100%。", + "simplyswords.loot.runicLootTableWeight": "符文武器出现概率", + "simplyswords.loot.runicLootTableWeight.desc": "符文武器出现在箱子中的概率。1.00 = 100%。", + "simplyswords.loot.uniqueLootTableWeight": "独特武器出现概率", + "simplyswords.loot.uniqueLootTableWeight.desc": "独特武器出现在箱子中的概率。1.00 = 100%。", + + "simplyswords.loot.uniqueLootTableOptions": "Unique Weapon Loot Tables", + "simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that", + "simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", + "simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nSetting any of the below values to false will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", + + "simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", + "simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", + "simplyswords.loot.enableContainedRemnants": "启用强能容器", + "simplyswords.loot.enableContainedRemnants.desc": "是否强能容器能够改变形态。若已禁用独特武器掉落,请禁用此项。", + + "simplyswords.general.enableWeaponImpactSounds": "启用武器击中音效", + "simplyswords.general.weaponImpactSoundsVolume": "击中音效音量", + "simplyswords.general.enableWeaponFootfalls": "启用武器脚步声", + "simplyswords.general.enablePassiveParticles": "启用被动粒子效果", + "simplyswords.general.enableUniqueGemSockets": "若禁用,宝石槽将不再出现在新获取的独特武器上。不具备追溯效力。", + "simplyswords.general.enableUniqueGemSockets.desc" : "启用独特武器宝石槽", + "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[兼容]§7 启用戈伯模组中,不可破坏的末地戈伯武器", + "simplyswords.general.compatEnableSpellPowerScaling": "§a[安装Spell Power后]§7\n若启用,一些武器的能力将与法术强度属性相挂钩。", + "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[兼容]§7 启用法术强度关联性", + + "simplyswords.unique_effects.abilityAbsorptionCap": "伤害吸收上限", + "simplyswords.unique_effects.abilityAbsorptionCap.desc": "所有能力给予的伤害吸收值都不能大于此值", + + "simplyswords.unique_effects.watcher": "§6[守望阔剑 & 守望战刃]§7", + "simplyswords.unique_effects.watcher.watcherChance": "守望阔剑 概率", + "simplyswords.unique_effects.watcher.watcherRadius": "守望阔剑 生命回复量", + "simplyswords.unique_effects.watcher.watcherRestoreAmount": "守望阔剑 范围", + "simplyswords.unique_effects.watcher.omenAbsorptionCap": "预兆 概率", + "simplyswords.unique_effects.watcher.omenChance": "预兆 伤害吸收上限", + "simplyswords.unique_effects.watcher.omenInstantKillThreshold": "预兆 秒杀阈值", + + "simplyswords.unique_effects.steal": "§6[窃魂]§7", + "simplyswords.unique_effects.steal.chance": "灵魂窃取 概率", + "simplyswords.unique_effects.steal.duration": "灵魂窃取 时长", + "simplyswords.unique_effects.steal.radius": "灵魂窃取 隐身时长", + "simplyswords.unique_effects.steal.spellScaling": "灵魂窃取 致盲时长", + "simplyswords.unique_effects.steal.blindDuration": "灵魂窃取 范围", + "simplyswords.unique_effects.steal.invisDuration": "灵魂窃取 法术强度伤害倍数", + + "simplyswords.unique_effects.soulkeeper": "§6[聚魂]§7", + "simplyswords.unique_effects.soulkeeper.chance": "灵魂融合 概率", + "simplyswords.unique_effects.soulkeeper.duration": "灵魂融合 时长", + "simplyswords.unique_effects.soulkeeper.radius": "灵魂融合 范围", + + "simplyswords.unique_effects.soulRend": "§6[裂魂]§7", + "simplyswords.unique_effects.soulRend.chance": "灵魂撕裂 概率", + "simplyswords.unique_effects.soulRend.duration": "灵魂撕裂 时长", + "simplyswords.unique_effects.soulRend.maxStacks": "灵魂撕裂 伤害倍率", + "simplyswords.unique_effects.soulRend.radius": "灵魂撕裂 治疗量倍率", + "simplyswords.unique_effects.soulRend.damageMulti": "灵魂撕裂 范围", + "simplyswords.unique_effects.soulRend.healMulti": "灵魂撕裂 最大存储量", + "simplyswords.unique_effects.soulRend.spellScaling": "灵魂撕裂 法术强度伤害倍数", + + "simplyswords.unique_effects.ferocity": "§6[扭曲波刃剑]§7", + "simplyswords.unique_effects.ferocity.chance": "凶猛 概率", + "simplyswords.unique_effects.ferocity.duration": "凶猛 时长", + "simplyswords.unique_effects.ferocity.maxStacks": "凶猛 最大存储量", + "simplyswords.unique_effects.ferocity.strengthTier": "凶猛 力量等级", + + "simplyswords.unique_effects.emberIre": "§6[余烬之刃]§7", + "simplyswords.unique_effects.emberIre.chance": "余烬怒火 概率", + "simplyswords.unique_effects.emberIre.duration": "余烬怒火 时长", + + "simplyswords.unique_effects.volcanicFury" : "§6[炉火巨锤]§7", + "simplyswords.unique_effects.volcanicFury.chance": "火山之怒 概率", + "simplyswords.unique_effects.volcanicFury.cooldown": "火山之怒 范围", + "simplyswords.unique_effects.volcanicFury.damage": "火山之怒 冷却时间", + "simplyswords.unique_effects.volcanicFury.radius": "火山之怒 伤害", + "simplyswords.unique_effects.volcanicFury.spellScaling": "火山之怒 法术强度伤害倍数", + + "simplyswords.unique_effects.storm" : "§6[雷神之锤]§7", + "simplyswords.unique_effects.storm.chance": "风暴 概率", + "simplyswords.unique_effects.storm.cooldown": "风暴 范围", + "simplyswords.unique_effects.storm.duration": "风暴 冷却时间", + "simplyswords.unique_effects.storm.frequency": "风暴 频率", + "simplyswords.unique_effects.storm.radius": "风暴 持续时间", + + "simplyswords.unique_effects.plague" : "§6[瘟疫长剑]§7", + "simplyswords.unique_effects.plague.chance": "瘟疫 概率", + + "simplyswords.unique_effects.brimstone" : "§6[硫磺阔剑]§7", + "simplyswords.unique_effects.brimstone.chance": "硫磺 概率", + + "simplyswords.unique_effects.bramble" : "§6[棘刺]§7", + "simplyswords.unique_effects.bramble.Chance": "木棘 概率", + + "simplyswords.unique_effects.soultether": "§6[葬魂]§7", + "simplyswords.unique_effects.soultether.duration": "灵魂锁链 范围", + "simplyswords.unique_effects.soultether.range": "灵魂锁链 半径", + "simplyswords.unique_effects.soultether.radius": "灵魂锁链 时长", + "simplyswords.unique_effects.soultether.igniteDuration": "灵魂锁链 点燃时长", + "simplyswords.unique_effects.soultether.resistanceDuration": "灵魂锁链 抗性提升时长", + + "simplyswords.unique_effects.frostFury": "§6[霜降]§7", + "simplyswords.unique_effects.frostFury.chance": "霜怒 冷却时间", + "simplyswords.unique_effects.frostFury.cooldown": "霜怒 范围", + "simplyswords.unique_effects.frostFury.damage": "霜怒 伤害", + "simplyswords.unique_effects.frostFury.duration": "霜怒 概率", + "simplyswords.unique_effects.frostFury.radius": "霜怒 时长", + "simplyswords.unique_effects.frostFury.spellScaling": "霜怒 法术强度伤害倍数", + + "simplyswords.unique_effects.moltenRoar": "§6[熔火]§7", + "simplyswords.unique_effects.moltenRoar.chance": "狂咆之炎 冷却时间", + "simplyswords.unique_effects.moltenRoar.cooldown": "狂咆之炎 范围", + "simplyswords.unique_effects.moltenRoar.duration": "狂咆之炎 击退力度", + "simplyswords.unique_effects.moltenRoar.knockbackStrength": "狂咆之炎 概率", + "simplyswords.unique_effects.moltenRoar.radius": "狂咆之炎 时长", + + "simplyswords.unique_effects.frostShatter": "§6[利维坦]§7", + "simplyswords.unique_effects.frostShatter.chance": "冰解 范围", + "simplyswords.unique_effects.frostShatter.damage": "冰解 伤害", + "simplyswords.unique_effects.frostShatter.duration": "冰解 概率", + "simplyswords.unique_effects.frostShatter.radius": "冰解 时长", + "simplyswords.unique_effects.frostShatter.spellScaling": "冰解 法术强度伤害倍数", + + "simplyswords.unique_effects.permafrost": "§6[冰语]§7", + "simplyswords.unique_effects.permafrost.cooldown": "永冻 范围", + "simplyswords.unique_effects.permafrost.damage": "永冻 伤害", + "simplyswords.unique_effects.permafrost.duration": "永冻 冷却时间", + "simplyswords.unique_effects.permafrost.radius": "永冻 时长", + "simplyswords.unique_effects.permafrost.spellScaling": "永冻 法术强度伤害倍数", + + "simplyskills.unique_effects.arcaneAssault": "§6[奥术紫晶戟]§7", + "simplyskills.unique_effects.arcaneAssault.chance": "奥术之力 范围", + "simplyskills.unique_effects.arcaneAssault.cooldown": "奥术之力 伤害", + "simplyskills.unique_effects.arcaneAssault.damage": "奥术之力 冷却时间", + "simplyskills.unique_effects.arcaneAssault.duration": "奥术之力 概率", + "simplyskills.unique_effects.arcaneAssault.radius": "奥术之力 时长", + "simplyskills.unique_effects.arcaneAssault.spellScaling": "奥术之力 法术强度伤害倍数", + + "simplyswords.unique_effects.thunderBlitz": "§6[纵雷]§7", + "simplyswords.unique_effects.thunderBlitz.chance": "霆闪 范围", + "simplyswords.unique_effects.thunderBlitz.cooldown": "霆闪 伤害", + "simplyswords.unique_effects.thunderBlitz.damage": "霆闪 冷却时间", + "simplyswords.unique_effects.thunderBlitz.radius": "霆闪 概率", + "simplyswords.unique_effects.thunderBlitz.spellScaling": "霆闪 法术强度伤害倍数", + + "simplyswords.unique_effects.stormJolt": "§6[风暴之刃]§7", + "simplyswords.unique_effects.stormJolt.chance": "霆闪 冷却时间", + "simplyswords.unique_effects.stormJolt.cooldown": "霆闪 概率", + + "simplyswords.unique_effects.soulAnguish": "§6[巫妖巨剑]§7", + "simplyswords.unique_effects.soulAnguish.absorptionCap": "悲魂 范围", + "simplyswords.unique_effects.soulAnguish.cooldown": "悲魂 伤害吸收上限", + "simplyswords.unique_effects.soulAnguish.damage": "悲魂 伤害", + "simplyswords.unique_effects.soulAnguish.duration": "悲魂 冷却时间", + "simplyswords.unique_effects.soulAnguish.heal": "悲魂 时长", + "simplyswords.unique_effects.soulAnguish.radius": "悲魂 治疗量", + "simplyswords.unique_effects.soulAnguish.range": "悲魂 范围", + "simplyswords.unique_effects.soulAnguish.spellScaling": "悲魂 法术强度伤害倍数", + + "simplyswords.unique_effects.shockDeflect": "§6[风暴使者]§7", + "simplyswords.unique_effects.shockDeflect.Cooldown": "冲震 范围", + "simplyswords.unique_effects.shockDeflect.Damage": "冲震 伤害", + "simplyswords.unique_effects.shockDeflect.SpellScaling": "冲震 冷却时间", + "simplyswords.unique_effects.shockDeflect.BlockDuration": "冲震 概率", + "simplyswords.unique_effects.shockDeflect.ParryDuration": "冲震 法术强度伤害倍数", + + "simplyswords.unique_effects.shadowmist": "§6[影刺]§7", + "simplyswords.unique_effects.shadowmist.chance": "遮影 冷却时间", + "simplyswords.unique_effects.shadowmist.cooldown": "遮影 概率", + "simplyswords.unique_effects.shadowmist.damageMulti": "遮影 伤害倍率", + "simplyswords.unique_effects.shadowmist.radius": "遮影 致盲时长", + "simplyswords.unique_effects.shadowmist.blindDuration": "遮影 范围", + + "simplyswords.unique_effects.abyssalStandard": "§6[深渊战旗]§7", + "simplyswords.unique_effects.abyssalStandard.chance": "深渊战旗 冷却时间", + "simplyswords.unique_effects.abyssalStandard.cooldown": "深渊战旗 概率", + "simplyswords.unique_effects.abyssalStandard.damage": "深渊战旗 伤害", + "simplyswords.unique_effects.abyssalStandard.spellScaling": "深渊战旗 法术强度伤害倍数", + + "simplyswords.unique_effects.righteousStandard": "§6[正义战旗]§7", + "simplyswords.unique_effects.righteousStandard.chance": "正义战旗 冷却时间", + "simplyswords.unique_effects.righteousStandard.cooldown": "正义战旗 概率", + "simplyswords.unique_effects.righteousStandard.damage": "正义战旗 伤害", + "simplyswords.unique_effects.righteousStandard.spellScaling": "正义战旗 法术强度伤害倍数", + "simplyswords.unique_effects.righteousStandard.spellScalingHeal": "正义战旗 法术强度治疗乘数", + + "simplyswords.unique_effects.fatalFlicker": "§6[风之低语]§7", + "simplyswords.unique_effects.fatalFlicker.chance": "绝息一闪 冷却时间", + "simplyswords.unique_effects.fatalFlicker.cooldown": "绝息一闪 概率", + "simplyswords.unique_effects.fatalFlicker.maxStacks": "绝息一闪 范围", + "simplyswords.unique_effects.fatalFlicker.radius": "绝息一闪 效果叠加上限", + "simplyswords.unique_effects.fatalFlicker.dashVelocity": "绝息一闪 突进速度", + + "simplyswords.unique_effects.smoulder": "§6[余烬鞭挞]§7", + "simplyswords.unique_effects.smoulder.cooldown": "隐燃 冷却时间", + "simplyswords.unique_effects.smoulder.heal": "隐燃 效果叠加上限", + "simplyswords.unique_effects.smoulder.maxStacks": "隐燃 恢复百分比", + "simplyswords.unique_effects.smoulder.spellScaling": "隐燃 法术强度伤害倍数", + + "simplyswords.unique_effects.waxweave": "§6[织蜡]§7", + "simplyswords.unique_effects.waxweave.cooldown": "织蜡 冷却时间", + "simplyswords.unique_effects.waxweave.maxStacks": "织蜡 效果叠加上限", + + "simplyswords.unique_effects.hivemind": "§6[群蜂之心]§7", + "simplyswords.unique_effects.hivemind.cooldown": "蜂巢思维 冷却时间", + "simplyswords.unique_effects.hivemind.damage": "蜂巢思维 时长", + "simplyswords.unique_effects.hivemind.duration": "蜂巢思维 伤害", + + "simplyswords.unique_effects.celestialSurge": "§6[星芒]§7", + "simplyswords.unique_effects.celestialSurge.cooldown": "星涌 冷却时间", + "simplyswords.unique_effects.celestialSurge.duration": "星涌 时长", + "simplyswords.unique_effects.celestialSurge.damageModifier": "星涌 急迫效果叠加上限", + "simplyswords.unique_effects.celestialSurge.lifestealModifier": "星涌 伤害", + "simplyswords.unique_effects.celestialSurge.stacks": "星涌 生命窃取", + + "simplyswords.unique_effects.flickerFury": "§6[穿芯]§7", + "simplyswords.unique_effects.flickerFury.cooldown": "烛焰之怒 冷却时间", + "simplyswords.unique_effects.flickerFury.damage": "烛焰之怒 时长", + "simplyswords.unique_effects.flickerFury.duration": "烛焰之怒 伤害", + + "simplyswords.unique_effects.vortex": "§6[怖潮]§7", + "simplyswords.unique_effects.vortex.duration": "虚空召唤 时长", + "simplyswords.unique_effects.vortex.maxSize": "虚空召唤 起始刻检测频率", + "simplyswords.unique_effects.vortex.maxStacks": "虚空召唤 伤害", + "simplyswords.unique_effects.vortex.spellScaling": "虚空召唤 侵蚀频率", + "simplyswords.unique_effects.voidcaller": "虚空召唤 每刻侵蚀值", + "simplyswords.unique_effects.voidcaller.compat": "虚空召唤 侵蚀持续时间", + "simplyswords.unique_effects.voidcaller.damageModifier": "虚空召唤 最大侵蚀值", + + "simplyswords.unique_effects.voidcaller.duration": "§6[烈风]§7", + "simplyswords.unique_effects.voidcaller.startingTickFrequency": "涡流 时长", + "simplyswords.unique_effects.voidcaller.corruptionFrequency": "涡流 最大范围", + "simplyswords.unique_effects.voidcaller.corruptionPerTick": "涡流 效果叠加上限", + "simplyswords.unique_effects.voidcaller.corruptionDuration": "涡流 法术强度伤害乘数", + + "simplyswords.unique_effects.voidcaller.corruptionMax": "§6[燎原]§7", + "simplyswords.unique_effects.emberstorm": "灰烬风暴 播种上限", + "simplyswords.unique_effects.emberstorm.cooldown": "灰烬风暴 持续伤害", + "simplyswords.unique_effects.emberstorm.damage": "灰烬风暴 爆炸伤害", + "simplyswords.unique_effects.emberstorm.spellScaling": "灰烬风暴 冷却时间", + "simplyswords.unique_effects.emberstorm.detonationDamage": "灰烬风暴 急迫效果叠加上限", + "simplyswords.unique_effects.emberstorm.maxHaste": "灰烬风暴 法术强度伤害乘数", + + "simplyswords.unique_effects.ribbonwrath" : "§6[荣缎劈刀]§7", + "simplyswords.unique_effects.ribbonwrath.cooldown": "荣缎护身 冷却时间", + "simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "荣缎护身 韧性提升倍率", + "simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "荣缎护身 额外伤害倍率", + + "simplyswords.unique_effects.magistorm" : "§6[秘法之镰]§7", + "simplyswords.unique_effects.magistorm.cooldown": "秘法风暴 冷却时间", + "simplyswords.unique_effects.magistorm.damage": "秘法风暴 持续时间", + "simplyswords.unique_effects.magistorm.duration": "秘法风暴 范围", + "simplyswords.unique_effects.magistorm.radius": "秘法风暴 伤害", + "simplyswords.unique_effects.magistorm.repairChance": "秘法风暴 修补概率", + "simplyswords.unique_effects.magistorm.spellScaling": "秘法风暴 法术强度伤害乘数", + + "simplyswords.unique_effects.enigma" : "§6[谜风]§7", + "simplyswords.unique_effects.enigma.cooldown": "谜风 冷却时间", + "simplyswords.unique_effects.enigma.chaseRadius": "谜风 衰减率", + "simplyswords.unique_effects.enigma.decayRate": "谜风 追踪范围", + + "simplyswords.unique_effects.magiblade" : "§6[秘法双头剑]§7", + "simplyswords.unique_effects.magiblade.cooldown": "秘法音爆 冷却时间", + "simplyswords.unique_effects.magiblade.damageModifier": "秘法音爆 射程", + "simplyswords.unique_effects.magiblade.repelChance": "秘法音爆 伤害", + "simplyswords.unique_effects.magiblade.repelRadius": "秘法音爆 检测概率", + "simplyswords.unique_effects.magiblade.sonicDistance": "秘法音爆 检测范围", + + "simplyswords.unique_effects.magislam" : "§6[秘法之矛]§7", + "simplyswords.unique_effects.magislam.cooldown": "秘法跃击 冷却时间", + "simplyswords.unique_effects.magislam.damageModifier": "秘法跃击 范围", + "simplyswords.unique_effects.magislam.radius": "秘法跃击 伤害", + "simplyswords.unique_effects.magislam.magicChance": "秘法跃击 法伤概率", + "simplyswords.unique_effects.magislam.magicModifier": "秘法跃击 魔法伤害", + + "simplyswords.unique_effects.astralShift" : "§6[星阙]§7", + "simplyswords.unique_effects.astralShift.chance": "斗转星移 冷却时间", + "simplyswords.unique_effects.astralShift.cooldown": "斗转星移 持续时间", + "simplyswords.unique_effects.astralShift.damageMax": "斗转星移 伤害", + "simplyswords.unique_effects.astralShift.damageModifier": "斗转星移 最大伤害", + "simplyswords.unique_effects.astralShift.duration": "斗转星移 免伤概率", + + "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", + "simplyswords.gem_powers.disabledPowers.desc" : "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", + + "simplyswords.gem_powers.swiftness" : "§b[极速]§7", + "simplyswords.gem_powers.slow" : "§b[缓速]§7", + "simplyswords.gem_powers.poison" : "§b[猛毒]§7", + "simplyswords.gem_powers.freeze" : "§b[冰冻]§7", + "simplyswords.gem_powers.wildfire" : "§b[野火]§7", + "simplyswords.gem_powers.floating" : "§b[漂浮]§7", + "simplyswords.gem_powers.zephyr" : "§b[微风]§7", + "simplyswords.gem_powers.shielding" : "§b[庇佑]§7", + "simplyswords.gem_powers.stoneskin" : "§b[石肤]§7", + "simplyswords.gem_powers.trailblaze" : "§b[焰痕]§7", + "simplyswords.gem_powers.weaken" : "§b[弱化]§7", + "simplyswords.gem_powers.unstable" : "§b[不稳定]§7", + "simplyswords.gem_powers.activeDefence" : "§b[主动防御]§7", + "simplyswords.gem_powers.frostWard" : "§b[霜卫]§7", + "simplyswords.gem_powers.momentum" : "§b[动能]§7", + "simplyswords.gem_powers.imbued" : "§b[淬魔]§7", + "simplyswords.gem_powers.simplySkills": "Simply Skills Powers", + "simplyswords.gem_powers.simplySkills.desc" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", + "simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", + "simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", + "simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", + "simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", + "simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", + "simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", + + + "simplyswords.status_effects.echoDamage": "共鸣基础伤害", + + "simplyswords.config.basic_settings.chance": "Chance", + "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", + "simplyswords.config.basic_settings.duration": "Duration", + "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", + "simplyswords.config.basic_settings.radius": "Radius", + "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", + "simplyswords.config.basic_settings.frequency": "Frequency", + "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", + "simplyswords.config.basic_settings.cooldown": "Cooldown", + "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" +} \ No newline at end of file diff --git a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java index f50624e0..b317d1bc 100644 --- a/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java +++ b/fabric/src/main/java/net/sweenus/simplyswords/fabric/compat/MythicMetalsCompat.java @@ -1,7 +1,6 @@ package net.sweenus.simplyswords.fabric.compat; import net.sweenus.simplyswords.config.Config; -import net.sweenus.simplyswords.config.ConfigDefaultValues; public class MythicMetalsCompat { diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java index cb77b5fc..6fb8c31d 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/compat/GobberCompat.java @@ -1,76 +1,46 @@ package net.sweenus.simplyswords.forge.compat; import net.sweenus.simplyswords.SimplySwords; +import net.sweenus.simplyswords.config.Config; public class GobberCompat { //Compat for Gobber - static float longsword_positive_modifier = SimplySwords.weaponAttributesConfigOld.longsword_positiveDamageModifier; - static float twinblade_positive_modifier = SimplySwords.weaponAttributesConfigOld.twinblade_positiveDamageModifier; - static float rapier_positive_modifier = SimplySwords.weaponAttributesConfigOld.rapier_positiveDamageModifier; - static float katana_positive_modifier = SimplySwords.weaponAttributesConfigOld.katana_positiveDamageModifier; - static float sai_positive_modifier = SimplySwords.weaponAttributesConfigOld.sai_positiveDamageModifier; - static float spear_positive_modifier = SimplySwords.weaponAttributesConfigOld.spear_positiveDamageModifier; - static float glaive_positive_modifier = SimplySwords.weaponAttributesConfigOld.glaive_positiveDamageModifier; - static float warglaive_positive_modifier = SimplySwords.weaponAttributesConfigOld.warglaive_positiveDamageModifier; - static float cutlass_positive_modifier = SimplySwords.weaponAttributesConfigOld.cutlass_positiveDamageModifier; - static float claymore_positive_modifier = SimplySwords.weaponAttributesConfigOld.claymore_positiveDamageModifier; - static float greataxe_positive_modifier = SimplySwords.weaponAttributesConfigOld.greataxe_positiveDamageModifier; - static float greathammer_positive_modifier = SimplySwords.weaponAttributesConfigOld.greathammer_positiveDamageModifier; - static float chakram_positive_modifier = SimplySwords.weaponAttributesConfigOld.chakram_positiveDamageModifier; - static float scythe_positive_modifier = SimplySwords.weaponAttributesConfigOld.scythe_positiveDamageModifier; - static float halberd_positive_modifier = SimplySwords.weaponAttributesConfigOld.halberd_positiveDamageModifier; - - static float longsword_negative_modifier = SimplySwords.weaponAttributesConfigOld.longsword_negativeDamageModifier; - static float twinblade_negative_modifier = SimplySwords.weaponAttributesConfigOld.twinblade_negativeDamageModifier; - static float rapier_negative_modifier = SimplySwords.weaponAttributesConfigOld.rapier_negativeDamageModifier; - static float sai_negative_modifier = SimplySwords.weaponAttributesConfigOld.sai_negativeDamageModifier; - static float spear_negative_modifier = SimplySwords.weaponAttributesConfigOld.spear_negativeDamageModifier; - static float katana_negative_modifier = SimplySwords.weaponAttributesConfigOld.katana_negativeDamageModifier; - static float glaive_negative_modifier = SimplySwords.weaponAttributesConfigOld.glaive_negativeDamageModifier; - static float warglaive_negative_modifier = SimplySwords.weaponAttributesConfigOld.warglaive_negativeDamageModifier; - static float cutlass_negative_modifier = SimplySwords.weaponAttributesConfigOld.cutlass_negativeDamageModifier; - static float claymore_negative_modifier = SimplySwords.weaponAttributesConfigOld.claymore_negativeDamageModifier; - static float greataxe_negative_modifier = SimplySwords.weaponAttributesConfigOld.greataxe_negativeDamageModifier; - static float greathammer_negative_modifier = SimplySwords.weaponAttributesConfigOld.greathammer_negativeDamageModifier; - static float chakram_negative_modifier = SimplySwords.weaponAttributesConfigOld.chakram_negativeDamageModifier; - static float scythe_negative_modifier = SimplySwords.weaponAttributesConfigOld.scythe_negativeDamageModifier; - static float halberd_negative_modifier = SimplySwords.weaponAttributesConfigOld.halberd_negativeDamageModifier; - - static float longsword_attackspeed = SimplySwords.weaponAttributesConfigOld.longsword_attackSpeed; - static float twinblade_attackspeed = SimplySwords.weaponAttributesConfigOld.twinblade_attackSpeed; - static float rapier_attackspeed = SimplySwords.weaponAttributesConfigOld.rapier_attackSpeed; - static float sai_attackspeed = SimplySwords.weaponAttributesConfigOld.sai_attackSpeed; - static float spear_attackspeed = SimplySwords.weaponAttributesConfigOld.spear_attackSpeed; - static float katana_attackspeed = SimplySwords.weaponAttributesConfigOld.katana_attackSpeed; - static float glaive_attackspeed = SimplySwords.weaponAttributesConfigOld.glaive_attackSpeed; - static float warglaive_attackspeed = SimplySwords.weaponAttributesConfigOld.warglaive_attackSpeed; - static float cutlass_attackspeed = SimplySwords.weaponAttributesConfigOld.cutlass_attackSpeed; - static float claymore_attackspeed = SimplySwords.weaponAttributesConfigOld.claymore_attackSpeed; - static float greataxe_attackspeed = SimplySwords.weaponAttributesConfigOld.greataxe_attackSpeed; - static float greathammer_attackspeed = SimplySwords.weaponAttributesConfigOld.greathammer_attackSpeed; - static float chakram_attackspeed = SimplySwords.weaponAttributesConfigOld.chakram_attackSpeed; - static float scythe_attackspeed = SimplySwords.weaponAttributesConfigOld.scythe_attackSpeed; - static float halberd_attackspeed = SimplySwords.weaponAttributesConfigOld.halberd_attackSpeed; - - static int longsword_modifier = (int) (longsword_positive_modifier); - static int twinblade_modifier = (int) (twinblade_positive_modifier - twinblade_negative_modifier); - static int rapier_modifier = (int) (rapier_positive_modifier - rapier_negative_modifier); - static int sai_modifier = (int) (sai_positive_modifier - sai_negative_modifier); - static int spear_modifier = (int) (spear_positive_modifier - spear_negative_modifier); - static int katana_modifier = (int) (katana_positive_modifier - katana_negative_modifier); - static int glaive_modifier = (int) (glaive_positive_modifier - glaive_negative_modifier); - static int warglaive_modifier = (int) (warglaive_positive_modifier - warglaive_negative_modifier); - static int cutlass_modifier = (int) (cutlass_positive_modifier - cutlass_negative_modifier); - static int chakram_modifier = (int) (chakram_positive_modifier - chakram_negative_modifier); - static int scythe_modifier = (int) (scythe_positive_modifier - scythe_negative_modifier); - static int claymore_modifier = (int) (claymore_positive_modifier - claymore_negative_modifier); - static int greathammer_modifier = (int) (greathammer_positive_modifier - greathammer_negative_modifier); - static int greataxe_modifier = (int) (greataxe_positive_modifier - greataxe_negative_modifier); - static int halberd_modifier = (int) (halberd_positive_modifier - halberd_negative_modifier); - static int gobber_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobber_damageModifier; - static int gobber_nether_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobberNether_damageModifier; - static int gobber_end_modifier = (int) SimplySwords.weaponAttributesConfigOld.gobberEnd_damageModifier; + static float longsword_modifier = Config.weaponAttribute.typeDamageModifier.longsword_damageModifier; + static float twinblade_modifier = Config.weaponAttribute.typeDamageModifier.twinblade_damageModifier; + static float rapier_modifier = Config.weaponAttribute.typeDamageModifier.rapier_damageModifier; + static float katana_modifier = Config.weaponAttribute.typeDamageModifier.katana_damageModifier; + static float sai_modifier = Config.weaponAttribute.typeDamageModifier.sai_damageModifier; + static float spear_modifier = Config.weaponAttribute.typeDamageModifier.spear_damageModifier; + static float glaive_modifier = Config.weaponAttribute.typeDamageModifier.glaive_damageModifier; + static float warglaive_modifier = Config.weaponAttribute.typeDamageModifier.warglaive_damageModifier; + static float cutlass_modifier = Config.weaponAttribute.typeDamageModifier.cutlass_damageModifier; + static float claymore_modifier = Config.weaponAttribute.typeDamageModifier.claymore_damageModifier; + static float greataxe_modifier = Config.weaponAttribute.typeDamageModifier.greataxe_damageModifier; + static float greathammer_modifier = Config.weaponAttribute.typeDamageModifier.greathammer_damageModifier; + static float chakram_modifier = Config.weaponAttribute.typeDamageModifier.chakram_damageModifier; + static float scythe_modifier = Config.weaponAttribute.typeDamageModifier.scythe_damageModifier; + static float halberd_modifier = Config.weaponAttribute.typeDamageModifier.halberd_damageModifier; + + static float longsword_attackspeed = Config.weaponAttribute.typeAttackSpeed.longsword_attackSpeed; + static float twinblade_attackspeed = Config.weaponAttribute.typeAttackSpeed.twinblade_attackSpeed; + static float rapier_attackspeed = Config.weaponAttribute.typeAttackSpeed.rapier_attackSpeed; + static float sai_attackspeed = Config.weaponAttribute.typeAttackSpeed.sai_attackSpeed; + static float spear_attackspeed = Config.weaponAttribute.typeAttackSpeed.spear_attackSpeed; + static float katana_attackspeed = Config.weaponAttribute.typeAttackSpeed.katana_attackSpeed; + static float glaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.glaive_attackSpeed; + static float warglaive_attackspeed = Config.weaponAttribute.typeAttackSpeed.warglaive_attackSpeed; + static float cutlass_attackspeed = Config.weaponAttribute.typeAttackSpeed.cutlass_attackSpeed; + static float claymore_attackspeed = Config.weaponAttribute.typeAttackSpeed.claymore_attackSpeed; + static float greataxe_attackspeed = Config.weaponAttribute.typeAttackSpeed.greataxe_attackSpeed; + static float greathammer_attackspeed = Config.weaponAttribute.typeAttackSpeed.greathammer_attackSpeed; + static float chakram_attackspeed = Config.weaponAttribute.typeAttackSpeed.chakram_attackSpeed; + static float scythe_attackspeed = Config.weaponAttribute.typeAttackSpeed.scythe_attackSpeed; + static float halberd_attackspeed = Config.weaponAttribute.typeAttackSpeed.halberd_attackSpeed; + + static float gobber_modifier = Config.weaponAttribute.materialDamageModifier.gobber_damageModifier.get(); + static float gobber_nether_modifier = Config.weaponAttribute.materialDamageModifier.gobberNether_damageModifier.get(); + static float gobber_end_modifier = Config.weaponAttribute.materialDamageModifier.gobberEnd_damageModifier.get(); //GOBBER /* 1.21 From 7d884b7fe99358d4083425782fbb0110e1e89e0a Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:09:01 -0400 Subject: [PATCH 28/37] Update zh_cn.json --- .../assets/simplyswords/lang/zh_cn.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/zh_cn.json b/common/src/main/resources/assets/simplyswords/lang/zh_cn.json index 0857fedb..7a0a8575 100644 --- a/common/src/main/resources/assets/simplyswords/lang/zh_cn.json +++ b/common/src/main/resources/assets/simplyswords/lang/zh_cn.json @@ -1114,21 +1114,21 @@ "simplyswords.weapon_attributes.typeDamageModifier" : "§a[武器属性配置]§7", "simplyswords.weapon_attributes.typeDamageModifier.desc" : "\n武器的伤害可通过调整它们的权重来调节。\n这会直接影响伤害,但不等于游戏中的外显数值。\n计算方式:材质伤害+基础伤害+伤害增益数-伤害削减数=外显数值\n需要重启游戏来应用更改。\n\n§a[伤害增益数]§7\n使用例:设为3将提升3点外显伤害。", - "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "长剑 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "双头剑 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "细剑 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "武士刀 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "三叉刺 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "矛 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "长柄刀 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "战刃 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "弯刀 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "阔剑 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "巨斧 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "巨锤 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "环刃 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "长柄镰 + 伤害增益数", - "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "戟 + 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "长剑 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "双头剑 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "细剑 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "武士刀 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "三叉刺 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "矛 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "长柄刀 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "战刃 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "弯刀 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "阔剑 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "巨斧 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "巨锤 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "环刃 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "长柄镰 伤害增益数", + "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "戟 伤害增益数", "simplyswords.weapon_attributes.materialDamageModifier" : "§a[基础伤害]§7", "simplyswords.weapon_attributes.materialDamageModifier.desc" : "伤害调整数将在此值的基础上进行加减运算。", @@ -1599,4 +1599,4 @@ "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", "simplyswords.config.basic_settings.cooldown": "Cooldown", "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" -} \ No newline at end of file +} From ee66e8f6994a8ee3ce43175950c34b324d7d9ac2 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs <72876796+fzzyhmstrs@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:18:47 -0400 Subject: [PATCH 29/37] Update en_us.json --- .../assets/simplyswords/lang/en_us.json | 1154 ++++++++--------- 1 file changed, 576 insertions(+), 578 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index 18fa2a97..e2cc35e7 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -117,12 +117,12 @@ "item.simplyswords.tempest": "Tempest", "item.simplyswords.flamewind": "Flamewind", "item.simplyswords.ribboncleaver": "Ribboncleaver", - "item.simplyswords.decaying_relic": "Decaying relic", - "item.simplyswords.magiscythe": "Magiscythe", - "item.simplyswords.enigma": "Enigma", - "item.simplyswords.magispear": "Magispear", - "item.simplyswords.magiblade": "Magiblade", - "item.simplyswords.caelestis": "Caelestis", + "item.simplyswords.decaying_relic": "Decaying relic", + "item.simplyswords.magiscythe": "Magiscythe", + "item.simplyswords.enigma": "Enigma", + "item.simplyswords.magispear": "Magispear", + "item.simplyswords.magiblade": "Magiblade", + "item.simplyswords.caelestis": "Caelestis", "item.simplyswords.runic_tablet": "Runic Tablet", @@ -130,7 +130,7 @@ "item.simplyswords.netherfused_gem": "Netherfused Gem", "item.simplyswords.empowered_remnant": "Empowered Remnant", "item.simplyswords.contained_remnant": "Contained Remnant", - "item.simplyswords.tampered_remnant": "Tampered Remnant", + "item.simplyswords.tampered_remnant": "Tampered Remnant", "item.simplyswords.mythicmetals_compat.adamantite.adamantite_claymore": "Adamantite Claymore", @@ -507,28 +507,28 @@ "item.simplyswords.empty_runic_slot": "[ empty rune socket ]", "item.simplyswords.empty_nether_slot": "[ empty nether socket ]", "item.simplyswords.filled_runic_slot": "[ runefused gem ]", - "item.simplyswords.contained_remnant_description": "Stabilised and contained energy", - "item.simplyswords.contained_remnant_description2": "sourced from remnants.", - "item.simplyswords.contained_remnant_description3": "Its form appears to be changing", - "item.simplyswords.contained_remnant_description4": "when in close proximity to you.", - "item.simplyswords.contained_remnant_description5": "Keeping this item in your inventory", - "item.simplyswords.contained_remnant_description6": "may yield further insights.", - "item.simplyswords.contained_remnant_description7": "Try keeping this in your inventory", - "item.simplyswords.contained_remnant_description8": "alongside a Runic Tablet while", - "item.simplyswords.contained_remnant_description9": "exploring the End dimension.", - "item.simplyswords.contained_remnant.event": "A Remnant in your inventory seems to have changed form", - "item.simplyswords.contained_remnant.event2": "A Remnant in your inventory is acting strangely", - "item.simplyswords.tampered_remnant_description3": "It appears to have been tampered", - "item.simplyswords.tampered_remnant_description4": "with somehow...", - "item.simplyswords.decayingrelicsworditem.tooltip1": "Try keeping this in your inventory", - "item.simplyswords.decayingrelicsworditem.tooltip2": "while exploring the deepest,", - "item.simplyswords.decayingrelicsworditem.tooltip3": "darkest depths of the Overworld.", - "item.simplyswords.magicythe.event": "Your Decaying Relic has begun making sounds", - "item.simplyswords.magicythe.event2": "Your Decaying Relic seems to be reacting to this area", - "item.simplyswords.magiblade.event": "Your Decaying Relic seems to be quivering", - "item.simplyswords.magiblade.event2": "Your Decaying Relic seems gravitated to the block beneath you", - "item.simplyswords.magispear.event": "Your Decaying Relic seems to have been influenced by something", - "item.simplyswords.magispear.event2": "Your Decaying Relic seems to be reacting to the darkness", + "item.simplyswords.contained_remnant_description": "Stabilised and contained energy", + "item.simplyswords.contained_remnant_description2": "sourced from remnants.", + "item.simplyswords.contained_remnant_description3": "Its form appears to be changing", + "item.simplyswords.contained_remnant_description4": "when in close proximity to you.", + "item.simplyswords.contained_remnant_description5": "Keeping this item in your inventory", + "item.simplyswords.contained_remnant_description6": "may yield further insights.", + "item.simplyswords.contained_remnant_description7": "Try keeping this in your inventory", + "item.simplyswords.contained_remnant_description8": "alongside a Runic Tablet while", + "item.simplyswords.contained_remnant_description9": "exploring the End dimension.", + "item.simplyswords.contained_remnant.event": "A Remnant in your inventory seems to have changed form", + "item.simplyswords.contained_remnant.event2": "A Remnant in your inventory is acting strangely", + "item.simplyswords.tampered_remnant_description3": "It appears to have been tampered", + "item.simplyswords.tampered_remnant_description4": "with somehow...", + "item.simplyswords.decayingrelicsworditem.tooltip1": "Try keeping this in your inventory", + "item.simplyswords.decayingrelicsworditem.tooltip2": "while exploring the deepest,", + "item.simplyswords.decayingrelicsworditem.tooltip3": "darkest depths of the Overworld.", + "item.simplyswords.magicythe.event": "Your Decaying Relic has begun making sounds", + "item.simplyswords.magicythe.event2": "Your Decaying Relic seems to be reacting to this area", + "item.simplyswords.magiblade.event": "Your Decaying Relic seems to be quivering", + "item.simplyswords.magiblade.event2": "Your Decaying Relic seems gravitated to the block beneath you", + "item.simplyswords.magispear.event": "Your Decaying Relic seems to have been influenced by something", + "item.simplyswords.magispear.event2": "Your Decaying Relic seems to be reacting to the darkness", @@ -556,12 +556,12 @@ "effect.simplyswords.ribboncleave": "Ribboncleave", "effect.simplyswords.resilience": "Resilience", "effect.simplyswords.battle_fatigue": "Battle Fatigue", - "effect.simplyswords.pain": "Pain", - "effect.simplyswords.spore_swarm": "Spore Swarm", - "effect.simplyswords.magistorm": "Magistorm", - "effect.simplyswords.magislam": "Magislam", + "effect.simplyswords.pain": "Pain", + "effect.simplyswords.spore_swarm": "Spore Swarm", + "effect.simplyswords.magistorm": "Magistorm", + "effect.simplyswords.magislam": "Magislam", "effect.simplyswords.astral_shift": "Astral Shift", - "effect.simplyswords.fatal_flicker": "Fatal Flicker", + "effect.simplyswords.fatal_flicker": "Fatal Flicker", "item.simplyswords.onrightclick": "On Right Click:", "item.simplyswords.onrightclickheld": "Hold Right Click:", @@ -856,67 +856,66 @@ "item.simplyswords.ribboncleaversworditem.tooltip9": "to deal +95% damage to a", "item.simplyswords.ribboncleaversworditem.tooltip10": "single target.", - "item.simplyswords.magiscythesworditem.tooltip1": "Unique Effect: Magistorm", - "item.simplyswords.magiscythesworditem.tooltip2": "Attacking enemies while", - "item.simplyswords.magiscythesworditem.tooltip3": "Magistorm is active grants a", - "item.simplyswords.magiscythesworditem.tooltip4": "chance to repair an equipped", - "item.simplyswords.magiscythesworditem.tooltip5": "item.", - "item.simplyswords.magiscythesworditem.tooltip6": "A localised magical storm", - "item.simplyswords.magiscythesworditem.tooltip7": "manifests above you, dealing", - "item.simplyswords.magiscythesworditem.tooltip8": "damage to nearby enemies.", - "item.simplyswords.magiscythesworditem.tooltip9": "Each time the storm strikes,", - "item.simplyswords.magiscythesworditem.tooltip10": "it has a chance to refresh its", - "item.simplyswords.magiscythesworditem.tooltip11": "duration and increases its", - "item.simplyswords.magiscythesworditem.tooltip12": "severity.", - - "item.simplyswords.enigmasworditem.tooltip1": "Unique Effect: Galeforce", - "item.simplyswords.enigmasworditem.tooltip2": "While you are near to your", - "item.simplyswords.enigmasworditem.tooltip3": "twister, gain Haste.", - "item.simplyswords.enigmasworditem.tooltip4": "Summon a twister that chases", - "item.simplyswords.enigmasworditem.tooltip5": "down nearby enemies, dealing", - "item.simplyswords.enigmasworditem.tooltip6": "increased damage the longer", - "item.simplyswords.enigmasworditem.tooltip7": "an enemy remains trapped", - "item.simplyswords.enigmasworditem.tooltip8": "within.", - - "item.simplyswords.magibladesworditem.tooltip1": "Unique Effect: Magisonic", - "item.simplyswords.magibladesworditem.tooltip2": "The Magiblade occasionally", - "item.simplyswords.magibladesworditem.tooltip3": "detects and repels approaching", - "item.simplyswords.magibladesworditem.tooltip4": "enemies.", - "item.simplyswords.magibladesworditem.tooltip5": "After a short delay, your", - "item.simplyswords.magibladesworditem.tooltip6": "Magiblade releases a sonic", - "item.simplyswords.magibladesworditem.tooltip7": "boom in front of you, dealing", - "item.simplyswords.magibladesworditem.tooltip8": "damage to enemies caught in", - "item.simplyswords.magibladesworditem.tooltip9": "its path.", - - "item.simplyswords.magispearsworditem.tooltip1": "Unique Effect: Magislam", - "item.simplyswords.magispearsworditem.tooltip2": "When attacking enemies,", - "item.simplyswords.magispearsworditem.tooltip3": "you have a chance to deal", - "item.simplyswords.magispearsworditem.tooltip4": "additional magic damage.", - "item.simplyswords.magispearsworditem.tooltip5": "Powered by the Magispear,", - "item.simplyswords.magispearsworditem.tooltip6": "you perform a forward leap,", - "item.simplyswords.magispearsworditem.tooltip7": "followed by a slam attack,", - "item.simplyswords.magispearsworditem.tooltip8": "damaging nearby enemies.", - "item.simplyswords.magispearsworditem.tooltip9": "You are immune while leaping.", - - "item.simplyswords.caelestissworditem.tooltip1": "Unique Effect: Astral Shift", - "item.simplyswords.caelestissworditem.tooltip2": "While wielded, grants a chance", - "item.simplyswords.caelestissworditem.tooltip3": "to completely avoid incoming", - "item.simplyswords.caelestissworditem.tooltip4": "damage.", - "item.simplyswords.caelestissworditem.tooltip5": "Briefly step into the astral plane,", - "item.simplyswords.caelestissworditem.tooltip6": "becoming immune to damage for", - "item.simplyswords.caelestissworditem.tooltip7": "%ds", - "item.simplyswords.caelestissworditem.tooltip8": "Upon leaving the astral plane,", - "item.simplyswords.caelestissworditem.tooltip9": "release a violent explosion,", - "item.simplyswords.caelestissworditem.tooltip10": "dealing area damage relative", - "item.simplyswords.caelestissworditem.tooltip11": "to the damage negated while", - "item.simplyswords.caelestissworditem.tooltip12": "in the astral plane.", + "item.simplyswords.magiscythesworditem.tooltip1": "Unique Effect: Magistorm", + "item.simplyswords.magiscythesworditem.tooltip2": "Attacking enemies while", + "item.simplyswords.magiscythesworditem.tooltip3": "Magistorm is active grants a", + "item.simplyswords.magiscythesworditem.tooltip4": "chance to repair an equipped", + "item.simplyswords.magiscythesworditem.tooltip5": "item.", + "item.simplyswords.magiscythesworditem.tooltip6": "A localised magical storm", + "item.simplyswords.magiscythesworditem.tooltip7": "manifests above you, dealing", + "item.simplyswords.magiscythesworditem.tooltip8": "damage to nearby enemies.", + "item.simplyswords.magiscythesworditem.tooltip9": "Each time the storm strikes,", + "item.simplyswords.magiscythesworditem.tooltip10": "it has a chance to refresh its", + "item.simplyswords.magiscythesworditem.tooltip11": "duration and increases its", + "item.simplyswords.magiscythesworditem.tooltip12": "severity.", + + "item.simplyswords.enigmasworditem.tooltip1": "Unique Effect: Galeforce", + "item.simplyswords.enigmasworditem.tooltip2": "While you are near to your", + "item.simplyswords.enigmasworditem.tooltip3": "twister, gain Haste.", + "item.simplyswords.enigmasworditem.tooltip4": "Summon a twister that chases", + "item.simplyswords.enigmasworditem.tooltip5": "down nearby enemies, dealing", + "item.simplyswords.enigmasworditem.tooltip6": "increased damage the longer", + "item.simplyswords.enigmasworditem.tooltip7": "an enemy remains trapped", + "item.simplyswords.enigmasworditem.tooltip8": "within.", + + "item.simplyswords.magibladesworditem.tooltip1": "Unique Effect: Magisonic", + "item.simplyswords.magibladesworditem.tooltip2": "The Magiblade occasionally", + "item.simplyswords.magibladesworditem.tooltip3": "detects and repels approaching", + "item.simplyswords.magibladesworditem.tooltip4": "enemies.", + "item.simplyswords.magibladesworditem.tooltip5": "After a short delay, your", + "item.simplyswords.magibladesworditem.tooltip6": "Magiblade releases a sonic", + "item.simplyswords.magibladesworditem.tooltip7": "boom in front of you, dealing", + "item.simplyswords.magibladesworditem.tooltip8": "damage to enemies caught in", + "item.simplyswords.magibladesworditem.tooltip9": "its path.", + + "item.simplyswords.magispearsworditem.tooltip1": "Unique Effect: Magislam", + "item.simplyswords.magispearsworditem.tooltip2": "When attacking enemies,", + "item.simplyswords.magispearsworditem.tooltip3": "you have a chance to deal", + "item.simplyswords.magispearsworditem.tooltip4": "additional magic damage.", + "item.simplyswords.magispearsworditem.tooltip5": "Powered by the Magispear,", + "item.simplyswords.magispearsworditem.tooltip6": "you perform a forward leap,", + "item.simplyswords.magispearsworditem.tooltip7": "followed by a slam attack,", + "item.simplyswords.magispearsworditem.tooltip8": "damaging nearby enemies.", + "item.simplyswords.magispearsworditem.tooltip9": "You are immune while leaping.", + + "item.simplyswords.caelestissworditem.tooltip1": "Unique Effect: Astral Shift", + "item.simplyswords.caelestissworditem.tooltip2": "While wielded, grants a chance", + "item.simplyswords.caelestissworditem.tooltip3": "to completely avoid incoming", + "item.simplyswords.caelestissworditem.tooltip4": "damage.", + "item.simplyswords.caelestissworditem.tooltip5": "Briefly step into the astral plane,", + "item.simplyswords.caelestissworditem.tooltip6": "becoming immune to damage for", + "item.simplyswords.caelestissworditem.tooltip7": "%ds", + "item.simplyswords.caelestissworditem.tooltip8": "Upon leaving the astral plane,", + "item.simplyswords.caelestissworditem.tooltip9": "release a violent explosion,", + "item.simplyswords.caelestissworditem.tooltip10": "dealing area damage relative", + "item.simplyswords.caelestissworditem.tooltip11": "to the damage negated while", + "item.simplyswords.caelestissworditem.tooltip12": "in the astral plane.", "item.simplyswords.dormantrelicsworditem.tooltip2": "A faint power seems to emanate from within.", "item.simplyswords.poweredrelicsworditem.tooltip2": "A growing power seems to emanate from within.", - "item.simplyswords.levitationsworditem.tooltip1": "Runic Power: Float", "item.simplyswords.uniquesworditem.runefused_power.float": "[ Runefused: Float ]", "item.simplyswords.levitationsworditem.tooltip2": "Chance on hit to reverse the effects", @@ -996,7 +995,6 @@ "item.simplyswords.runic_tablet.tooltip4": "Unique weapons.", - "item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Netherfused: Echo ]", "item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Your weapon swings echo, dealing", "item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "additional unmitigated damage ", @@ -1103,499 +1101,499 @@ "item.simplyswords.compat.scaleHealing": "§7Ability scales with §aHealing§7 spell power", - "simplyswords.general" : "General", - "simplyswords.gem_powers" : "Gem Effects", - "simplyswords.loot" : "Loot", - "simplyswords.status_effects" : "Status Effects", - "simplyswords.unique_effects" : "Unique Effects", - "simplyswords.weapon_attributes" : "Weapon Attributes", - - - - "simplyswords.weapon_attributes.typeDamageModifier" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7", - "simplyswords.weapon_attributes.typeDamageModifier.desc" : "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", - "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Longsword + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Twinblade + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Rapier + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Katana + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Sai + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Spear + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Glaive + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Warglaive + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Cutlass + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Claymore + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Greataxe + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Greathammer + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Chakram + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Scythe + damage modifier", - "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Halberd + damage modifier", - - "simplyswords.weapon_attributes.materialDamageModifier" : "§a[Base Damage Modifiers]§7", - "simplyswords.weapon_attributes.materialDamageModifier.desc" : "Positive & Negative damage modifiers scale off these base values.", - "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals" : "Requires Mythic Metals", - "simplyswords.weapon_attributes.materialDamageModifier.gobber2" : "Requires Gobber", - "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end" : "Requires Eldritch End", - "simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Netherite base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Runic base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Adamantite base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Aquarium base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Banglum base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Carmot base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Kyber base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Mythril base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Orichalcum base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Durasteel base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Osmium base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Prometheum base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Quadrillum base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Runite base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Platinum base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Bronze base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Copper base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Steel base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Palladium base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Stormyx base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Celestium base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Metallurgium base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Gobber base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Gobber Nether base damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Gobber End base damage modifier", - - "simplyswords.weapon_attributes.typeAttackSpeed" : "§a[Attack Speed Modifiers]", - "simplyswords.weapon_attributes.typeAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", - "simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Longsword attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Twinblade attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Rapier attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Katana attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Sai attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Spear attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Glaive attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Warglaive attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Cutlass attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Claymore attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Greataxe attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Greathammer damage modifier", - "simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Chakram attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", - "simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", - - "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[UNIQUE ATTRIBUTES CONFIGURATION]", - "simplyswords.weapon_attributes.uniqueDamageModifier.desc" : "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", - "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end" : "Requires Eldritch End", - "simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "Sword on a Stick damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6Emberblade§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6Soulrender§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6Frostfall§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6Livyatan§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6Lichblade§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6Sunfire§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6Harbinger§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6Emberlash§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6Tempest§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6Flamewind§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6Enigma§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6Magispear§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", - - "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§6[Attack Speed Modifiers]", - "simplyswords.weapon_attributes.uniqueAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", - "simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6Emberblade§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6Soulrender§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6Frostfall§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6Livyatan§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6Lichblade§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6Sunfire§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6Harbinger§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6Emberlash§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6Tempest§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6Flamewind§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6Enigma§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6Magispear§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6Magiblade§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6Caelestis§7 attack speed", - - "simplyswords.loot.enableLootDrops": "Enable loot drops", - "simplyswords.loot.enableLootDrops.desc" : "Disabling this setting will prevent Simply Swords from generating loot in chests.", - "simplyswords.loot.enableLootInVillages": "Enable loot drops in villages", - "simplyswords.loot.enableLootInVillages.desc" : "When enabled, Simply Swords loot can spawn in village chests.", - "simplyswords.loot.standardLootTableWeight": "Standard loot chance", - "simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", - "simplyswords.loot.rareLootTableWeight": "Rare loot chance", - "simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", - "simplyswords.loot.runicLootTableWeight": "Runic loot chance", - "simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", - "simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", - "simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", + "simplyswords.general" : "General", + "simplyswords.gem_powers" : "Gem Effects", + "simplyswords.loot" : "Loot", + "simplyswords.status_effects" : "Status Effects", + "simplyswords.unique_effects" : "Unique Effects", + "simplyswords.weapon_attributes" : "Weapon Attributes", + + + + "simplyswords.weapon_attributes.typeDamageModifier" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7", + "simplyswords.weapon_attributes.typeDamageModifier.desc" : "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", + "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Longsword damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Twinblade damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Rapier damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Katana damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Sai damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Spear damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Glaive damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Warglaive damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Cutlass damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Claymore damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Greataxe damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Greathammer damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Chakram damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Scythe damage modifier", + "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Halberd damage modifier", + + "simplyswords.weapon_attributes.materialDamageModifier" : "§a[Base Damage Modifiers]§7", + "simplyswords.weapon_attributes.materialDamageModifier.desc" : "Damage modifiers scale off these base values.", + "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals" : "Requires Mythic Metals", + "simplyswords.weapon_attributes.materialDamageModifier.gobber2" : "Requires Gobber", + "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Netherite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Runic base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Adamantite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Aquarium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Banglum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Carmot base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Kyber base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Mythril base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Orichalcum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Durasteel base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Osmium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Prometheum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Quadrillum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Runite base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Platinum base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Bronze base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Copper base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Steel base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Palladium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Stormyx base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Celestium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Metallurgium base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Gobber base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Gobber Nether base damage modifier", + "simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Gobber End base damage modifier", + + "simplyswords.weapon_attributes.typeAttackSpeed" : "§a[Attack Speed Modifiers]", + "simplyswords.weapon_attributes.typeAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", + "simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Longsword attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Twinblade attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Rapier attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Katana attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Sai attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Spear attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Glaive attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Warglaive attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Cutlass attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Claymore attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Greataxe attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Greathammer damage modifier", + "simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Chakram attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", + "simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", + + "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[UNIQUE ATTRIBUTES CONFIGURATION]", + "simplyswords.weapon_attributes.uniqueDamageModifier.desc" : "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", + "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "Sword on a Stick damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6Emberblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6Soulrender§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6Frostfall§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6Livyatan§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6Lichblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6Sunfire§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6Harbinger§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6Emberlash§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6Tempest§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6Flamewind§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6Enigma§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6Magispear§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", + + "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§6[Attack Speed Modifiers]", + "simplyswords.weapon_attributes.uniqueAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", + "simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6Emberblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6Soulrender§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6Frostfall§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6Livyatan§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6Lichblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6Sunfire§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6Harbinger§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6Emberlash§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6Tempest§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6Flamewind§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6Enigma§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6Magispear§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6Magiblade§7 attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6Caelestis§7 attack speed", + + "simplyswords.loot.enableLootDrops": "Enable loot drops", + "simplyswords.loot.enableLootDrops.desc" : "Disabling this setting will prevent Simply Swords from generating loot in chests.", + "simplyswords.loot.enableLootInVillages": "Enable loot drops in villages", + "simplyswords.loot.enableLootInVillages.desc" : "When enabled, Simply Swords loot can spawn in village chests.", + "simplyswords.loot.standardLootTableWeight": "Standard loot chance", + "simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.rareLootTableWeight": "Rare loot chance", + "simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", + "simplyswords.loot.runicLootTableWeight": "Runic loot chance", + "simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", + "simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", + "simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", "simplyswords.loot.uniqueLootTableOptions": "Unique Weapon Loot Tables", - "simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that", + "simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that unique weapons will appear in, and the chance they appear in that table", "simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", - "simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nSetting any of the below values to false will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", + "simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nIncluding the id of any unique sword will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay. ", "simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", "simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", - "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", - "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", - - "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", - "simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", - "simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", - "simplyswords.general.enablePassiveParticles": "Enable passive particles", - "simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", - "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", - "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", - "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", - "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", + "simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", + "simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", + + "simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", + "simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", + "simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", + "simplyswords.general.enablePassiveParticles": "Enable passive particles", + "simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", + "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", + "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", + "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", + "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", "simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", - "simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", - - "simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", - "simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", - "simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", - "simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", - "simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", - "simplyswords.unique_effects.watcher.omenChance": "Omen chance", - "simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", - - "simplyswords.unique_effects.steal": "§6[Soulstealer]§7", - "simplyswords.unique_effects.steal.chance": "Steal chance", - "simplyswords.unique_effects.steal.duration": "Steal duration", - "simplyswords.unique_effects.steal.radius": "Steal radius", - "simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", - "simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", - "simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", - - "simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", - "simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", - "simplyswords.unique_effects.soulkeeper.duration": "Soulmeld duration", - "simplyswords.unique_effects.soulkeeper.radius": "Soulmeld radius", - - "simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", - "simplyswords.unique_effects.soulRend.chance": "Soulrend chance", - "simplyswords.unique_effects.soulRend.duration": "Soulrend duration", - "simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", - "simplyswords.unique_effects.soulRend.radius": "Soulrend radius", - "simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", - "simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", - "simplyswords.unique_effects.soulRend.spellScaling": "Soulrend Spell Power DMG multi", - - "simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", - "simplyswords.unique_effects.ferocity.chance": "Ferocity chance", - "simplyswords.unique_effects.ferocity.duration": "Ferocity duration", - "simplyswords.unique_effects.ferocity.maxStacks": "Ferocity max stacks", - "simplyswords.unique_effects.ferocity.strengthTier": "Ferocity strength amplifier", - - "simplyswords.unique_effects.emberIre": "§6[Emberblade]§7", - "simplyswords.unique_effects.emberIre.chance": "Ember Ire chance", - "simplyswords.unique_effects.emberIre.duration": "Ember Ire duration", - - "simplyswords.unique_effects.volcanicFury" : "§6[Hearthflame]§7", - "simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", - "simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", - "simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", - "simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", - "simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", - - "simplyswords.unique_effects.storm" : "§6[Mjolnir]§7", - "simplyswords.unique_effects.storm.chance": "Storm chance", - "simplyswords.unique_effects.storm.cooldown": "Storm cooldown", - "simplyswords.unique_effects.storm.duration": "Storm duration", - "simplyswords.unique_effects.storm.frequency": "Storm frequency", - "simplyswords.unique_effects.storm.radius": "Storm radius", - - "simplyswords.unique_effects.plague" : "§6[Longsword of The Plague]§7", - "simplyswords.unique_effects.plague.chance": "Plague chance", - - "simplyswords.unique_effects.brimstone" : "§6[Brimstone Claymore]§7", - "simplyswords.unique_effects.brimstone.chance": "Brimstone chance", - - "simplyswords.unique_effects.bramble" : "§6[Bramblethorn]§7", - "simplyswords.unique_effects.bramble.Chance": "Bramble chance", - - "simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", - "simplyswords.unique_effects.soultether.duration": "Soultether duration", - "simplyswords.unique_effects.soultether.range": "Soultether range", - "simplyswords.unique_effects.soultether.radius": "Soultether radius", - "simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", - "simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", - - "simplyswords.unique_effects.frostFury": "§6[Frostfall]§7", - "simplyswords.unique_effects.frostFury.chance": "Frost Fury chance", - "simplyswords.unique_effects.frostFury.cooldown": "Frost Fury cooldown", - "simplyswords.unique_effects.frostFury.damage": "Frost Fury damage", - "simplyswords.unique_effects.frostFury.duration": "Frost Fury duration", - "simplyswords.unique_effects.frostFury.radius": "Frost Fury radius", - "simplyswords.unique_effects.frostFury.spellScaling": "Frost Fury Spell Power DMG multi", - - "simplyswords.unique_effects.moltenRoar": "§6[Molten Edge]§7", - "simplyswords.unique_effects.moltenRoar.chance": "Molten Roar chance", - "simplyswords.unique_effects.moltenRoar.cooldown": "Molten Roar cooldown", - "simplyswords.unique_effects.moltenRoar.duration": "Molten Roar duration", - "simplyswords.unique_effects.moltenRoar.knockbackStrength": "Molten Roar Knockback strength", - "simplyswords.unique_effects.moltenRoar.radius": "Molten Roar radius", - - "simplyswords.unique_effects.frostShatter": "§6[Livyatan]§7", - "simplyswords.unique_effects.frostShatter.chance": "Frost Shatter chance", - "simplyswords.unique_effects.frostShatter.damage": "Frost Shatter damage", - "simplyswords.unique_effects.frostShatter.duration": "Frost Shatter duration", - "simplyswords.unique_effects.frostShatter.radius": "Frost Shatter radius", - "simplyswords.unique_effects.frostShatter.spellScaling": "Frost Shatter Spell Power DMG multi", - - "simplyswords.unique_effects.permafrost": "§6[Icewhisper]§7", - "simplyswords.unique_effects.permafrost.cooldown": "Permafrost cooldown", - "simplyswords.unique_effects.permafrost.damage": "Permafrost damage", - "simplyswords.unique_effects.permafrost.duration": "Permafrost duration", - "simplyswords.unique_effects.permafrost.radius": "Permafrost radius", - "simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", - - "simplyskills.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", - "simplyskills.unique_effects.arcaneAssault.chance": "Arcane Assault chance", - "simplyskills.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", - "simplyskills.unique_effects.arcaneAssault.damage": "Arcane Assault damage", - "simplyskills.unique_effects.arcaneAssault.duration": "Arcane Assault duration", - "simplyskills.unique_effects.arcaneAssault.radius": "Arcane Assault radius", - "simplyskills.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", - - "simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", - "simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", - "simplyswords.unique_effects.thunderBlitz.cooldown": "Thunder Blitz cooldown", - "simplyswords.unique_effects.thunderBlitz.damage": "Thunder Blitz damage", - "simplyswords.unique_effects.thunderBlitz.radius": "Thunder Blitz radius", - "simplyswords.unique_effects.thunderBlitz.spellScaling": "Thunder Blitz Spell Power DMG multi", - - "simplyswords.unique_effects.stormJolt": "§6[Storm's Edge]§7", - "simplyswords.unique_effects.stormJolt.chance": "Storm Jolt chance", - "simplyswords.unique_effects.stormJolt.cooldown": "Storm Jolt cooldown", - - "simplyswords.unique_effects.soulAnguish": "§6[Lichblade]§7", - "simplyswords.unique_effects.soulAnguish.absorptionCap": "Soul Anguish absorption cap", - "simplyswords.unique_effects.soulAnguish.cooldown": "Soul Anguish cooldown", - "simplyswords.unique_effects.soulAnguish.damage": "Soul Anguish damage", - "simplyswords.unique_effects.soulAnguish.duration": "Soul Anguish duration", - "simplyswords.unique_effects.soulAnguish.heal": "Soul Anguish heal", - "simplyswords.unique_effects.soulAnguish.radius": "Soul Anguish radius", - "simplyswords.unique_effects.soulAnguish.range": "Soul Anguish range", - "simplyswords.unique_effects.soulAnguish.spellScaling": "Soul Anguish Spell Power DMG multi", - - "simplyswords.unique_effects.shockDeflect": "§6[Stormbringer]§7", - "simplyswords.unique_effects.shockDeflect.Cooldown": "Shock Deflect cooldown", - "simplyswords.unique_effects.shockDeflect.Damage": "Shock Deflect damage", - "simplyswords.unique_effects.shockDeflect.SpellScaling": "Shock Deflect Spell Power DMG multi", - "simplyswords.unique_effects.shockDeflect.BlockDuration": "Shock Deflect radius", - "simplyswords.unique_effects.shockDeflect.ParryDuration": "Shock Deflect chance", - - "simplyswords.unique_effects.shadowmist": "§6[Shadowsting]§7", - "simplyswords.unique_effects.shadowmist.chance": "Shadowmist chance", - "simplyswords.unique_effects.shadowmist.cooldown": "Shadowmist cooldown", - "simplyswords.unique_effects.shadowmist.damageMulti": "Shadowmist damage multiplier", - "simplyswords.unique_effects.shadowmist.radius": "Shadowmist radius", - "simplyswords.unique_effects.shadowmist.blindDuration": "Shadowmist Blind duration", - - "simplyswords.unique_effects.abyssalStandard": "§6[Abyssal Standard]§7", - "simplyswords.unique_effects.abyssalStandard.chance": "Abyssal Standard chance", - "simplyswords.unique_effects.abyssalStandard.cooldown": "Abyssal Standard cooldown", - "simplyswords.unique_effects.abyssalStandard.damage": "Abyssal Standard damage", - "simplyswords.unique_effects.abyssalStandard.spellScaling": "Abyssal Standard Spell Power DMG multi", - - "simplyswords.unique_effects.righteousStandard": "§6[Righteous Standard]§7", - "simplyswords.unique_effects.righteousStandard.chance": "Righteous Standard chance", - "simplyswords.unique_effects.righteousStandard.cooldown": "Righteous Standard cooldown", - "simplyswords.unique_effects.righteousStandard.damage": "Righteous Standard damage", - "simplyswords.unique_effects.righteousStandard.spellScaling": "Righteous Standard Spell Power DMG multi", - "simplyswords.unique_effects.righteousStandard.spellScalingHeal": "Righteous Standard Spell Power HEAL multi", - - "simplyswords.unique_effects.fatalFlicker": "§6[Whisperwind]§7", - "simplyswords.unique_effects.fatalFlicker.chance": "Fatal Flicker chance", - "simplyswords.unique_effects.fatalFlicker.cooldown": "Fatal Flicker cooldown", - "simplyswords.unique_effects.fatalFlicker.maxStacks": "Fatal Flicker max stacks", - "simplyswords.unique_effects.fatalFlicker.radius": "Fatal Flicker radius", - "simplyswords.unique_effects.fatalFlicker.dashVelocity": "Fatal Flicker dash velocity", - - "simplyswords.unique_effects.smoulder": "§6[Emberlash]§7", - "simplyswords.unique_effects.smoulder.cooldown": "Smoulder cooldown", - "simplyswords.unique_effects.smoulder.heal": "Smoulder heal percent", - "simplyswords.unique_effects.smoulder.maxStacks": "Smoulder max stacks", - "simplyswords.unique_effects.smoulder.spellScaling": "Smoulder Spell Power DMG multi", - - "simplyswords.unique_effects.waxweave": "§6[Waxweaver]§7", - "simplyswords.unique_effects.waxweave.cooldown": "Waxweave cooldown", - "simplyswords.unique_effects.waxweave.maxStacks": "Waxweave max stacks", - - "simplyswords.unique_effects.hivemind": "§6[Hiveheart]§7", - "simplyswords.unique_effects.hivemind.cooldown": "Hivemind cooldown", - "simplyswords.unique_effects.hivemind.damage": "Hivemind damage modifier", - "simplyswords.unique_effects.hivemind.duration": "Hivemind duration", - - "simplyswords.unique_effects.celestialSurge": "§6[Star's Edge]§7", - "simplyswords.unique_effects.celestialSurge.cooldown": "Celestial Surge cooldown", - "simplyswords.unique_effects.celestialSurge.duration": "Celestial Surge duration", - "simplyswords.unique_effects.celestialSurge.damageModifier": "Celestial Surge Damage modifier", - "simplyswords.unique_effects.celestialSurge.lifestealModifier": "Celestial Surge Lifesteal modifier", - "simplyswords.unique_effects.celestialSurge.stacks": "Celestial Surge Haste stacks", - - "simplyswords.unique_effects.flickerFury": "§6[Wickpiercer]§7", - "simplyswords.unique_effects.flickerFury.cooldown": "Flicker Fury cooldown", - "simplyswords.unique_effects.flickerFury.damage": "Flicker Fury damage modifier", - "simplyswords.unique_effects.flickerFury.duration": "Flicker Fury duration", - - "simplyswords.unique_effects.vortex": "§6[Tempest]§7", - "simplyswords.unique_effects.vortex.duration": "Vortex duration", - "simplyswords.unique_effects.vortex.maxSize": "Vortex max size", - "simplyswords.unique_effects.vortex.maxStacks": "Vortex max stacks", - "simplyswords.unique_effects.vortex.spellScaling": "Vortex Spell Power DMG multi", - - "simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", - "simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", - "simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", - "simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", - "simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", - "simplyswords.unique_effects.voidcaller.corruptionFrequency": "Voidcaller Corruption frequency", - "simplyswords.unique_effects.voidcaller.corruptionPerTick": "Voidcaller Corruption per tick", - "simplyswords.unique_effects.voidcaller.corruptionDuration": "Voidcaller Corruption duration", - "simplyswords.unique_effects.voidcaller.corruptionMax": "Voidcaller Corruption max", - - "simplyswords.unique_effects.emberstorm": "§6[Flamewind]§7", - "simplyswords.unique_effects.emberstorm.cooldown": "Emberstorm cooldown", - "simplyswords.unique_effects.emberstorm.damage": "Emberstorm damage", - "simplyswords.unique_effects.emberstorm.spellScaling": "Emberstorm Spell Power DMG multi", - "simplyswords.unique_effects.emberstorm.detonationDamage": "Emberstorm detonation damage", - "simplyswords.unique_effects.emberstorm.maxHaste": "Emberstorm Haste max", - "simplyswords.unique_effects.emberstorm.spreadCap": "Emberstorm spread cap", - - "simplyswords.unique_effects.ribbonwrath" : "§6[Ribboncleaver]§7", - "simplyswords.unique_effects.ribbonwrath.cooldown": "Ribbonwrath cooldown", - "simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Ribbonwrath damage bonus percent", - "simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Ribbonwrath resilience amplifier", - - "simplyswords.unique_effects.magistorm" : "§6[Magiscythe]§7", - "simplyswords.unique_effects.magistorm.cooldown": "Magiscythe cooldown", - "simplyswords.unique_effects.magistorm.damage": "Magistorm damage", - "simplyswords.unique_effects.magistorm.duration": "Magistorm duration", - "simplyswords.unique_effects.magistorm.radius": "Magistorm radius", - "simplyswords.unique_effects.magistorm.repairChance": "Magistorm repair chance", - "simplyswords.unique_effects.magistorm.spellScaling": "Magistorm Spell Power DMG multi", - - "simplyswords.unique_effects.enigma" : "§6[Enigma]§7", - "simplyswords.unique_effects.enigma.cooldown": "Enigma cooldown", - "simplyswords.unique_effects.enigma.chaseRadius": "Enigma chase radius", - "simplyswords.unique_effects.enigma.decayRate": "Enigma decay rate", - - "simplyswords.unique_effects.magiblade" : "§6[Magiblade]§7", - "simplyswords.unique_effects.magiblade.cooldown": "Magisonic cooldown", - "simplyswords.unique_effects.magiblade.damageModifier": "Magisonic damage modifier", - "simplyswords.unique_effects.magiblade.repelChance": "Magisonic repel chance", - "simplyswords.unique_effects.magiblade.repelRadius": "Magisonic repel radius", - "simplyswords.unique_effects.magiblade.sonicDistance": "Magisonic sonic distance", - - "simplyswords.unique_effects.magislam" : "§6[Magispear]§7", - "simplyswords.unique_effects.magislam.cooldown": "Magislam cooldown", - "simplyswords.unique_effects.magislam.damageModifier": "Magislam damage modifier", - "simplyswords.unique_effects.magislam.radius": "Magislam radius", - "simplyswords.unique_effects.magislam.magicChance": "Magislam magic chance", - "simplyswords.unique_effects.magislam.magicModifier": "Magislam magic modifier", - - "simplyswords.unique_effects.astralShift" : "§6[Caelestis]§7", - "simplyswords.unique_effects.astralShift.chance": "Astral Shift avoidance chance", - "simplyswords.unique_effects.astralShift.cooldown": "Astral Shift cooldown", - "simplyswords.unique_effects.astralShift.damageMax": "Astral Shift damage max", - "simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", - "simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", - - "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", - "simplyswords.gem_powers.disabledPowers.desc" : "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", - "simplyswords.gem_powers.swiftness" : "§b[Swiftness]§7", - "simplyswords.gem_powers.slow" : "§b[Slow]§7", - "simplyswords.gem_powers.poison" : "§b[Poison]§7", - "simplyswords.gem_powers.freeze" : "§b[Freeze]§7", - "simplyswords.gem_powers.wildfire" : "§b[Wildfire]§7", - "simplyswords.gem_powers.floating" : "§b[Float]§7", - "simplyswords.gem_powers.zephyr" : "§b[Zephyr]§7", - "simplyswords.gem_powers.shielding" : "§b[Shielding]§7", - "simplyswords.gem_powers.stoneskin" : "§b[Stoneskin]§7", - "simplyswords.gem_powers.trailblaze" : "§b[Trailblaze]§7", - "simplyswords.gem_powers.weaken" : "§b[Weaken]§7", - "simplyswords.gem_powers.unstable" : "§b[Unstable]§7", - "simplyswords.gem_powers.activeDefence" : "§b[Active Defence]§7", - "simplyswords.gem_powers.frostWard" : "§b[Frost Ward]§7", - "simplyswords.gem_powers.momentum" : "§b[Momentum]§7", - "simplyswords.gem_powers.imbued" : "§b[Imbued]§7", - "simplyswords.gem_powers.simplySkills": "Simply Skills Powers", - "simplyswords.gem_powers.simplySkills.desc" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", - "simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", - "simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", - "simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", - "simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", - "simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", - "simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", - - "simplyswords.status_effects.echoDamage": "Echo base damage", - - "simplyswords.config.basic_settings.chance": "Chance", - "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", - "simplyswords.config.basic_settings.duration": "Duration", - "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", - "simplyswords.config.basic_settings.radius": "Radius", - "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", - "simplyswords.config.basic_settings.frequency": "Frequency", - "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", - "simplyswords.config.basic_settings.cooldown": "Cooldown", - "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" -} \ No newline at end of file + "simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", + + "simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", + "simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", + "simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", + "simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", + "simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", + "simplyswords.unique_effects.watcher.omenChance": "Omen chance", + "simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", + + "simplyswords.unique_effects.steal": "§6[Soulstealer]§7", + "simplyswords.unique_effects.steal.chance": "Steal chance", + "simplyswords.unique_effects.steal.duration": "Steal duration", + "simplyswords.unique_effects.steal.radius": "Steal radius", + "simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", + "simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", + "simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", + + "simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", + "simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", + "simplyswords.unique_effects.soulkeeper.duration": "Soulmeld duration", + "simplyswords.unique_effects.soulkeeper.radius": "Soulmeld radius", + + "simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", + "simplyswords.unique_effects.soulRend.chance": "Soulrend chance", + "simplyswords.unique_effects.soulRend.duration": "Soulrend duration", + "simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", + "simplyswords.unique_effects.soulRend.radius": "Soulrend radius", + "simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", + "simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", + "simplyswords.unique_effects.soulRend.spellScaling": "Soulrend Spell Power DMG multi", + + "simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", + "simplyswords.unique_effects.ferocity.chance": "Ferocity chance", + "simplyswords.unique_effects.ferocity.duration": "Ferocity duration", + "simplyswords.unique_effects.ferocity.maxStacks": "Ferocity max stacks", + "simplyswords.unique_effects.ferocity.strengthTier": "Ferocity strength amplifier", + + "simplyswords.unique_effects.emberIre": "§6[Emberblade]§7", + "simplyswords.unique_effects.emberIre.chance": "Ember Ire chance", + "simplyswords.unique_effects.emberIre.duration": "Ember Ire duration", + + "simplyswords.unique_effects.volcanicFury" : "§6[Hearthflame]§7", + "simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", + "simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", + "simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", + "simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", + "simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", + + "simplyswords.unique_effects.storm" : "§6[Mjolnir]§7", + "simplyswords.unique_effects.storm.chance": "Storm chance", + "simplyswords.unique_effects.storm.cooldown": "Storm cooldown", + "simplyswords.unique_effects.storm.duration": "Storm duration", + "simplyswords.unique_effects.storm.frequency": "Storm frequency", + "simplyswords.unique_effects.storm.radius": "Storm radius", + + "simplyswords.unique_effects.plague" : "§6[Longsword of The Plague]§7", + "simplyswords.unique_effects.plague.chance": "Plague chance", + + "simplyswords.unique_effects.brimstone" : "§6[Brimstone Claymore]§7", + "simplyswords.unique_effects.brimstone.chance": "Brimstone chance", + + "simplyswords.unique_effects.bramble" : "§6[Bramblethorn]§7", + "simplyswords.unique_effects.bramble.Chance": "Bramble chance", + + "simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", + "simplyswords.unique_effects.soultether.duration": "Soultether duration", + "simplyswords.unique_effects.soultether.range": "Soultether range", + "simplyswords.unique_effects.soultether.radius": "Soultether radius", + "simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", + "simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", + + "simplyswords.unique_effects.frostFury": "§6[Frostfall]§7", + "simplyswords.unique_effects.frostFury.chance": "Frost Fury chance", + "simplyswords.unique_effects.frostFury.cooldown": "Frost Fury cooldown", + "simplyswords.unique_effects.frostFury.damage": "Frost Fury damage", + "simplyswords.unique_effects.frostFury.duration": "Frost Fury duration", + "simplyswords.unique_effects.frostFury.radius": "Frost Fury radius", + "simplyswords.unique_effects.frostFury.spellScaling": "Frost Fury Spell Power DMG multi", + + "simplyswords.unique_effects.moltenRoar": "§6[Molten Edge]§7", + "simplyswords.unique_effects.moltenRoar.chance": "Molten Roar chance", + "simplyswords.unique_effects.moltenRoar.cooldown": "Molten Roar cooldown", + "simplyswords.unique_effects.moltenRoar.duration": "Molten Roar duration", + "simplyswords.unique_effects.moltenRoar.knockbackStrength": "Molten Roar Knockback strength", + "simplyswords.unique_effects.moltenRoar.radius": "Molten Roar radius", + + "simplyswords.unique_effects.frostShatter": "§6[Livyatan]§7", + "simplyswords.unique_effects.frostShatter.chance": "Frost Shatter chance", + "simplyswords.unique_effects.frostShatter.damage": "Frost Shatter damage", + "simplyswords.unique_effects.frostShatter.duration": "Frost Shatter duration", + "simplyswords.unique_effects.frostShatter.radius": "Frost Shatter radius", + "simplyswords.unique_effects.frostShatter.spellScaling": "Frost Shatter Spell Power DMG multi", + + "simplyswords.unique_effects.permafrost": "§6[Icewhisper]§7", + "simplyswords.unique_effects.permafrost.cooldown": "Permafrost cooldown", + "simplyswords.unique_effects.permafrost.damage": "Permafrost damage", + "simplyswords.unique_effects.permafrost.duration": "Permafrost duration", + "simplyswords.unique_effects.permafrost.radius": "Permafrost radius", + "simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", + + "simplyskills.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", + "simplyskills.unique_effects.arcaneAssault.chance": "Arcane Assault chance", + "simplyskills.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", + "simplyskills.unique_effects.arcaneAssault.damage": "Arcane Assault damage", + "simplyskills.unique_effects.arcaneAssault.duration": "Arcane Assault duration", + "simplyskills.unique_effects.arcaneAssault.radius": "Arcane Assault radius", + "simplyskills.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", + + "simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", + "simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", + "simplyswords.unique_effects.thunderBlitz.cooldown": "Thunder Blitz cooldown", + "simplyswords.unique_effects.thunderBlitz.damage": "Thunder Blitz damage", + "simplyswords.unique_effects.thunderBlitz.radius": "Thunder Blitz radius", + "simplyswords.unique_effects.thunderBlitz.spellScaling": "Thunder Blitz Spell Power DMG multi", + + "simplyswords.unique_effects.stormJolt": "§6[Storm's Edge]§7", + "simplyswords.unique_effects.stormJolt.chance": "Storm Jolt chance", + "simplyswords.unique_effects.stormJolt.cooldown": "Storm Jolt cooldown", + + "simplyswords.unique_effects.soulAnguish": "§6[Lichblade]§7", + "simplyswords.unique_effects.soulAnguish.absorptionCap": "Soul Anguish absorption cap", + "simplyswords.unique_effects.soulAnguish.cooldown": "Soul Anguish cooldown", + "simplyswords.unique_effects.soulAnguish.damage": "Soul Anguish damage", + "simplyswords.unique_effects.soulAnguish.duration": "Soul Anguish duration", + "simplyswords.unique_effects.soulAnguish.heal": "Soul Anguish heal", + "simplyswords.unique_effects.soulAnguish.radius": "Soul Anguish radius", + "simplyswords.unique_effects.soulAnguish.range": "Soul Anguish range", + "simplyswords.unique_effects.soulAnguish.spellScaling": "Soul Anguish Spell Power DMG multi", + + "simplyswords.unique_effects.shockDeflect": "§6[Stormbringer]§7", + "simplyswords.unique_effects.shockDeflect.Cooldown": "Shock Deflect cooldown", + "simplyswords.unique_effects.shockDeflect.Damage": "Shock Deflect damage", + "simplyswords.unique_effects.shockDeflect.SpellScaling": "Shock Deflect Spell Power DMG multi", + "simplyswords.unique_effects.shockDeflect.BlockDuration": "Shock Deflect radius", + "simplyswords.unique_effects.shockDeflect.ParryDuration": "Shock Deflect chance", + + "simplyswords.unique_effects.shadowmist": "§6[Shadowsting]§7", + "simplyswords.unique_effects.shadowmist.chance": "Shadowmist chance", + "simplyswords.unique_effects.shadowmist.cooldown": "Shadowmist cooldown", + "simplyswords.unique_effects.shadowmist.damageMulti": "Shadowmist damage multiplier", + "simplyswords.unique_effects.shadowmist.radius": "Shadowmist radius", + "simplyswords.unique_effects.shadowmist.blindDuration": "Shadowmist Blind duration", + + "simplyswords.unique_effects.abyssalStandard": "§6[Abyssal Standard]§7", + "simplyswords.unique_effects.abyssalStandard.chance": "Abyssal Standard chance", + "simplyswords.unique_effects.abyssalStandard.cooldown": "Abyssal Standard cooldown", + "simplyswords.unique_effects.abyssalStandard.damage": "Abyssal Standard damage", + "simplyswords.unique_effects.abyssalStandard.spellScaling": "Abyssal Standard Spell Power DMG multi", + + "simplyswords.unique_effects.righteousStandard": "§6[Righteous Standard]§7", + "simplyswords.unique_effects.righteousStandard.chance": "Righteous Standard chance", + "simplyswords.unique_effects.righteousStandard.cooldown": "Righteous Standard cooldown", + "simplyswords.unique_effects.righteousStandard.damage": "Righteous Standard damage", + "simplyswords.unique_effects.righteousStandard.spellScaling": "Righteous Standard Spell Power DMG multi", + "simplyswords.unique_effects.righteousStandard.spellScalingHeal": "Righteous Standard Spell Power HEAL multi", + + "simplyswords.unique_effects.fatalFlicker": "§6[Whisperwind]§7", + "simplyswords.unique_effects.fatalFlicker.chance": "Fatal Flicker chance", + "simplyswords.unique_effects.fatalFlicker.cooldown": "Fatal Flicker cooldown", + "simplyswords.unique_effects.fatalFlicker.maxStacks": "Fatal Flicker max stacks", + "simplyswords.unique_effects.fatalFlicker.radius": "Fatal Flicker radius", + "simplyswords.unique_effects.fatalFlicker.dashVelocity": "Fatal Flicker dash velocity", + + "simplyswords.unique_effects.smoulder": "§6[Emberlash]§7", + "simplyswords.unique_effects.smoulder.cooldown": "Smoulder cooldown", + "simplyswords.unique_effects.smoulder.heal": "Smoulder heal percent", + "simplyswords.unique_effects.smoulder.maxStacks": "Smoulder max stacks", + "simplyswords.unique_effects.smoulder.spellScaling": "Smoulder Spell Power DMG multi", + + "simplyswords.unique_effects.waxweave": "§6[Waxweaver]§7", + "simplyswords.unique_effects.waxweave.cooldown": "Waxweave cooldown", + "simplyswords.unique_effects.waxweave.maxStacks": "Waxweave max stacks", + + "simplyswords.unique_effects.hivemind": "§6[Hiveheart]§7", + "simplyswords.unique_effects.hivemind.cooldown": "Hivemind cooldown", + "simplyswords.unique_effects.hivemind.damage": "Hivemind damage modifier", + "simplyswords.unique_effects.hivemind.duration": "Hivemind duration", + + "simplyswords.unique_effects.celestialSurge": "§6[Star's Edge]§7", + "simplyswords.unique_effects.celestialSurge.cooldown": "Celestial Surge cooldown", + "simplyswords.unique_effects.celestialSurge.duration": "Celestial Surge duration", + "simplyswords.unique_effects.celestialSurge.damageModifier": "Celestial Surge Damage modifier", + "simplyswords.unique_effects.celestialSurge.lifestealModifier": "Celestial Surge Lifesteal modifier", + "simplyswords.unique_effects.celestialSurge.stacks": "Celestial Surge Haste stacks", + + "simplyswords.unique_effects.flickerFury": "§6[Wickpiercer]§7", + "simplyswords.unique_effects.flickerFury.cooldown": "Flicker Fury cooldown", + "simplyswords.unique_effects.flickerFury.damage": "Flicker Fury damage modifier", + "simplyswords.unique_effects.flickerFury.duration": "Flicker Fury duration", + + "simplyswords.unique_effects.vortex": "§6[Tempest]§7", + "simplyswords.unique_effects.vortex.duration": "Vortex duration", + "simplyswords.unique_effects.vortex.maxSize": "Vortex max size", + "simplyswords.unique_effects.vortex.maxStacks": "Vortex max stacks", + "simplyswords.unique_effects.vortex.spellScaling": "Vortex Spell Power DMG multi", + + "simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", + "simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", + "simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", + "simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", + "simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", + "simplyswords.unique_effects.voidcaller.corruptionFrequency": "Voidcaller Corruption frequency", + "simplyswords.unique_effects.voidcaller.corruptionPerTick": "Voidcaller Corruption per tick", + "simplyswords.unique_effects.voidcaller.corruptionDuration": "Voidcaller Corruption duration", + "simplyswords.unique_effects.voidcaller.corruptionMax": "Voidcaller Corruption max", + + "simplyswords.unique_effects.emberstorm": "§6[Flamewind]§7", + "simplyswords.unique_effects.emberstorm.cooldown": "Emberstorm cooldown", + "simplyswords.unique_effects.emberstorm.damage": "Emberstorm damage", + "simplyswords.unique_effects.emberstorm.spellScaling": "Emberstorm Spell Power DMG multi", + "simplyswords.unique_effects.emberstorm.detonationDamage": "Emberstorm detonation damage", + "simplyswords.unique_effects.emberstorm.maxHaste": "Emberstorm Haste max", + "simplyswords.unique_effects.emberstorm.spreadCap": "Emberstorm spread cap", + + "simplyswords.unique_effects.ribbonwrath" : "§6[Ribboncleaver]§7", + "simplyswords.unique_effects.ribbonwrath.cooldown": "Ribbonwrath cooldown", + "simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Ribbonwrath damage bonus percent", + "simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Ribbonwrath resilience amplifier", + + "simplyswords.unique_effects.magistorm" : "§6[Magiscythe]§7", + "simplyswords.unique_effects.magistorm.cooldown": "Magiscythe cooldown", + "simplyswords.unique_effects.magistorm.damage": "Magistorm damage", + "simplyswords.unique_effects.magistorm.duration": "Magistorm duration", + "simplyswords.unique_effects.magistorm.radius": "Magistorm radius", + "simplyswords.unique_effects.magistorm.repairChance": "Magistorm repair chance", + "simplyswords.unique_effects.magistorm.spellScaling": "Magistorm Spell Power DMG multi", + + "simplyswords.unique_effects.enigma" : "§6[Enigma]§7", + "simplyswords.unique_effects.enigma.cooldown": "Enigma cooldown", + "simplyswords.unique_effects.enigma.chaseRadius": "Enigma chase radius", + "simplyswords.unique_effects.enigma.decayRate": "Enigma decay rate", + + "simplyswords.unique_effects.magiblade" : "§6[Magiblade]§7", + "simplyswords.unique_effects.magiblade.cooldown": "Magisonic cooldown", + "simplyswords.unique_effects.magiblade.damageModifier": "Magisonic damage modifier", + "simplyswords.unique_effects.magiblade.repelChance": "Magisonic repel chance", + "simplyswords.unique_effects.magiblade.repelRadius": "Magisonic repel radius", + "simplyswords.unique_effects.magiblade.sonicDistance": "Magisonic sonic distance", + + "simplyswords.unique_effects.magislam" : "§6[Magispear]§7", + "simplyswords.unique_effects.magislam.cooldown": "Magislam cooldown", + "simplyswords.unique_effects.magislam.damageModifier": "Magislam damage modifier", + "simplyswords.unique_effects.magislam.radius": "Magislam radius", + "simplyswords.unique_effects.magislam.magicChance": "Magislam magic chance", + "simplyswords.unique_effects.magislam.magicModifier": "Magislam magic modifier", + + "simplyswords.unique_effects.astralShift" : "§6[Caelestis]§7", + "simplyswords.unique_effects.astralShift.chance": "Astral Shift avoidance chance", + "simplyswords.unique_effects.astralShift.cooldown": "Astral Shift cooldown", + "simplyswords.unique_effects.astralShift.damageMax": "Astral Shift damage max", + "simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", + "simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", + + "simplyswords.gem_powers.disabledPowers" : "Disabled Gem Powers", + "simplyswords.gem_powers.disabledPowers.desc" : "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", + "simplyswords.gem_powers.swiftness" : "§b[Swiftness]§7", + "simplyswords.gem_powers.slow" : "§b[Slow]§7", + "simplyswords.gem_powers.poison" : "§b[Poison]§7", + "simplyswords.gem_powers.freeze" : "§b[Freeze]§7", + "simplyswords.gem_powers.wildfire" : "§b[Wildfire]§7", + "simplyswords.gem_powers.floating" : "§b[Float]§7", + "simplyswords.gem_powers.zephyr" : "§b[Zephyr]§7", + "simplyswords.gem_powers.shielding" : "§b[Shielding]§7", + "simplyswords.gem_powers.stoneskin" : "§b[Stoneskin]§7", + "simplyswords.gem_powers.trailblaze" : "§b[Trailblaze]§7", + "simplyswords.gem_powers.weaken" : "§b[Weaken]§7", + "simplyswords.gem_powers.unstable" : "§b[Unstable]§7", + "simplyswords.gem_powers.activeDefence" : "§b[Active Defence]§7", + "simplyswords.gem_powers.frostWard" : "§b[Frost Ward]§7", + "simplyswords.gem_powers.momentum" : "§b[Momentum]§7", + "simplyswords.gem_powers.imbued" : "§b[Imbued]§7", + "simplyswords.gem_powers.simplySkills": "Simply Skills Powers", + "simplyswords.gem_powers.simplySkills.desc" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", + "simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", + "simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", + "simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", + "simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", + "simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", + "simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", + + "simplyswords.status_effects.echoDamage": "Echo base damage", + + "simplyswords.config.basic_settings.chance": "Chance", + "simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", + "simplyswords.config.basic_settings.duration": "Duration", + "simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", + "simplyswords.config.basic_settings.radius": "Radius", + "simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", + "simplyswords.config.basic_settings.frequency": "Frequency", + "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", + "simplyswords.config.basic_settings.cooldown": "Cooldown", + "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" +} From 7f5723b49d19deb7a78f3f900c38555b25cbf8e2 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Fri, 1 Nov 2024 19:22:45 -0400 Subject: [PATCH 30/37] few more conditional options, en_us polish --- .../simplyswords/config/GeneralConfig.java | 22 +++++++++++++++++-- .../simplyswords/config/LootConfig.java | 7 +++++- .../config/WeaponAttributesConfig.java | 10 ++++++++- .../simplyswords/item/GobberEndSwordItem.java | 4 ++-- .../simplyswords/util/HelperMethods.java | 2 +- .../assets/simplyswords/lang/en_us.json | 6 ++++- .../simplyswords/forge/SimplySwordsForge.java | 5 ----- 7 files changed, 43 insertions(+), 13 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java index e785b9bf..a82670a2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GeneralConfig.java @@ -1,10 +1,16 @@ package net.sweenus.simplyswords.config; +import dev.architectury.platform.Platform; import me.fzzyhmstrs.fzzy_config.config.Config; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedBoolean; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; +import static net.sweenus.simplyswords.SimplySwords.minimumSpellPowerVersion; + public class GeneralConfig extends Config { public GeneralConfig() { @@ -17,7 +23,19 @@ public GeneralConfig() { public boolean enableWeaponFootfalls = true; public boolean enablePassiveParticles = true; public boolean enableUniqueGemSockets = true; - public boolean compatGobberEndWeaponsUnbreakable = true; - public boolean compatEnableSpellPowerScaling = true; + + public ValidatedCondition compatGobberEndWeaponsUnbreakable = new ValidatedBoolean(true) + .toCondition( + () -> Platform.isModLoaded("gobber2"), + Text.translatable("simplyswords.general.compatGobberEndWeaponsUnbreakable.condition"), + () -> false + ).withFailTitle(Text.translatable("simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle")); + + public ValidatedCondition compatEnableSpellPowerScaling = new ValidatedBoolean(true) + .toCondition( + () -> SimplySwords.passVersionCheck("spell_power", minimumSpellPowerVersion), + Text.translatable("simplyswords.general.compatEnableSpellPowerScaling.condition"), + () -> false + ).withFailTitle(Text.translatable("simplyswords.general.compatEnableSpellPowerScaling.failTitle")); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index 7965bda3..8c8a8da6 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -39,7 +39,12 @@ public LootConfig() { public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); - public ValidatedCondition enableContainedRemnants = new ValidatedBoolean().toCondition(() -> uniqueLootTableWeight.get() > 0f, Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), () -> false).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); + public ValidatedCondition enableContainedRemnants = new ValidatedBoolean() + .toCondition( + () -> uniqueLootTableWeight.get() > 0f, + Text.translatable("simplyswords.loot.enableContainedRemnants.condition"), + () -> false + ).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); @SuppressWarnings("deprecation") public ValidatedIdentifierMap uniqueLootTableOptions = new ValidatedIdentifierMap.Builder() diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java index 9fae94e2..69e38cb3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java @@ -1,6 +1,8 @@ package net.sweenus.simplyswords.config; import dev.architectury.platform.Platform; +import me.fzzyhmstrs.fzzy_config.annotations.Action; +import me.fzzyhmstrs.fzzy_config.annotations.RequiresAction; import me.fzzyhmstrs.fzzy_config.config.Config; import me.fzzyhmstrs.fzzy_config.config.ConfigSection; import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; @@ -9,6 +11,7 @@ import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; +@RequiresAction(action = Action.RESTART) public class WeaponAttributesConfig extends Config { public WeaponAttributesConfig() { @@ -21,6 +24,7 @@ public WeaponAttributesConfig() { public UniqueDamageModifier uniqueDamageModifier = new UniqueDamageModifier(); public UniqueAttackSpeed uniqueAttackSpeed = new UniqueAttackSpeed(); + @RequiresAction(action = Action.RESTART) public static class TypeDamageModifier extends ConfigSection { public float chakram_damageModifier = -1.0f; public float claymore_damageModifier = 2.0f; @@ -39,6 +43,7 @@ public static class TypeDamageModifier extends ConfigSection { public float warglaive_damageModifier = 0.0f; } + @RequiresAction(action = Action.RESTART) public static class MaterialDamageModifier extends ConfigSection { public float iron_damageModifier = 3.0f; public float gold_damageModifier = 3.0f; @@ -79,10 +84,11 @@ private ValidatedCondition createCondition(float defaultValue, String mod () -> Platform.isModLoaded(modNeeded), Text.translatable("simplyswords.weapon_attributes.materialDamageModifier." + modNeeded), () -> defaultValue - ); + ).withFailTitle(Text.translatable("simplyswords.loot.materialDamageModifier." + modNeeded + ".failTitle")); } } + @RequiresAction(action = Action.RESTART) public static class TypeAttackSpeed extends ConfigSection { public float chakram_attackSpeed = -3.0f; public float claymore_attackSpeed = -2.8f; @@ -103,6 +109,7 @@ public static class TypeAttackSpeed extends ConfigSection { } + @RequiresAction(action = Action.RESTART) public static class UniqueDamageModifier extends ConfigSection { public float arcanethyst_damageModifier = 7.0f; public float bramblethorn_damageModifier = 3.0f; @@ -154,6 +161,7 @@ public static class UniqueDamageModifier extends ConfigSection { ); } + @RequiresAction(action = Action.RESTART) public static class UniqueAttackSpeed extends ConfigSection { public float arcanethyst_attackSpeed = -2.7f; public float bramblethorn_attackSpeed = -1.8f; diff --git a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java index 68bd0089..d4444aa3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/GobberEndSwordItem.java @@ -33,7 +33,7 @@ public boolean canRepair(ItemStack stack, ItemStack ingredient) { } //Unbreakable weapon support for Gobber - static boolean unbreakable = Config.general.compatGobberEndWeaponsUnbreakable; + static boolean unbreakable = Config.general.compatGobberEndWeaponsUnbreakable.get(); /* 1.21 @Override @@ -41,7 +41,7 @@ public void onCraft(ItemStack stack, World world, PlayerEntity player) { if(world.isClient) return; - if(unbreakable) + if(Config.general.compatGobberEndWeaponsUnbreakable.get();) { stack.getOrCreateNbt().putBoolean("Unbreakable", true); } diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index 4ee0fbc4..e51d4144 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -396,7 +396,7 @@ public static float spellScaledDamage(String spellSchool, Entity entity, float d public static float commonSpellAttributeScaling(float damageModifier, Entity entity, String magicSchool) { if (Platform.isModLoaded("spell_power") && Platform.isFabric()) - if ((entity instanceof PlayerEntity player) && Config.general.compatEnableSpellPowerScaling && SimplySwords.passVersionCheck("spell_power", minimumSpellPowerVersion)) + if ((entity instanceof PlayerEntity player) && Config.general.compatEnableSpellPowerScaling.get() && SimplySwords.passVersionCheck("spell_power", minimumSpellPowerVersion)) return SimplySwordsExpectPlatform.getSpellPowerDamage(damageModifier, player, magicSchool); return 0f; diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index e2cc35e7..131c9811 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1299,8 +1299,12 @@ "simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", + "simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Requires Spell Power", + "simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle": "Disabled", "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", + "simplyswords.general.compatEnableSpellPowerScaling.condition": "Requires Spell Power", + "simplyswords.general.compatEnableSpellPowerScaling.failTitle": "Disabled", "simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", "simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", @@ -1596,4 +1600,4 @@ "simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", "simplyswords.config.basic_settings.cooldown": "Cooldown", "simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" -} +} \ No newline at end of file diff --git a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java index 286739bd..d6c4a0e5 100644 --- a/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java +++ b/forge/src/main/java/net/sweenus/simplyswords/forge/SimplySwordsForge.java @@ -1,13 +1,8 @@ package net.sweenus.simplyswords.forge; -import me.shedaniel.autoconfig.AutoConfig; -import net.neoforged.fml.ModList; -import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.common.Mod; import net.sweenus.simplyswords.SimplySwords; -import net.sweenus.simplyswords.config.ConfigWrapper; -import net.sweenus.simplyswords.forge.compat.GobberCompat; @Mod(SimplySwords.MOD_ID) public class SimplySwordsForge { From b96ef943338af73fc55762c4d8eb75c01b66c507 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Mon, 4 Nov 2024 12:49:55 -0500 Subject: [PATCH 31/37] polish up the Config presentation in-game --- .../sweenus/simplyswords/config/Config.java | 2 +- .../simplyswords/config/GemPowersConfig.java | 34 ++++++++------- .../simplyswords/config/LootConfig.java | 4 +- .../config/UniqueEffectsConfig.java | 2 +- .../config/WeaponAttributesConfig.java | 6 +-- .../assets/simplyswords/lang/en_us.json | 43 +++++++++++-------- gradle.properties | 2 +- 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index 3b6f4484..b195ee27 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -188,7 +188,7 @@ public static void safeValueFetch(String type, String parent) { public static final GeneralConfig general = ConfigApiJava.registerAndLoadConfig(GeneralConfig::new); public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); - public static final UniqueEffectsConfig uniqueEffects = ConfigApiJava.registerAndLoadConfig(UniqueEffectsConfig::new); public static final WeaponAttributesConfig weaponAttribute = ConfigApiJava.registerAndLoadConfig(WeaponAttributesConfig::new); + public static final UniqueEffectsConfig uniqueEffects = ConfigApiJava.registerAndLoadConfig(UniqueEffectsConfig::new); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java index d4ec8878..d727097e 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java @@ -1,10 +1,14 @@ package net.sweenus.simplyswords.config; +import dev.architectury.platform.Platform; import me.fzzyhmstrs.fzzy_config.config.Config; import me.fzzyhmstrs.fzzy_config.config.ConfigSection; import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; +import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; +import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.power.powers.ActiveDefencePower; @@ -53,23 +57,21 @@ public GemPowersConfig() { public static class SimplySkills extends ConfigSection { - @ValidatedInt.Restrict(min = 0, max = 100) - public int preciseChance = 30; + public ValidatedCondition preciseChance = createCondition(30); + public ValidatedCondition mightyChance = createCondition(30); + public ValidatedCondition stealthyChance = createCondition(30); + public ValidatedCondition renewedChance = createCondition(30); + public ValidatedCondition leapingChance = createCondition(65); + public ValidatedCondition spellshieldChance = createCondition(15); - @ValidatedInt.Restrict(min = 0, max = 100) - public int mightyChance = 30; - - @ValidatedInt.Restrict(min = 0, max = 100) - public int stealthyChance = 30; - - @ValidatedInt.Restrict(min = 0, max = 100) - public int renewedChance = 30; - - @ValidatedInt.Restrict(min = 0, max = 100) - public int leapingChance = 65; - - @ValidatedInt.Restrict(min = 0, max = 100) - public int spellshieldChance = 15; + private ValidatedCondition createCondition(int defaultValue) { + return new ValidatedInt(defaultValue, 100, 0) + .toCondition( + () -> Platform.isModLoaded("simplyskills"), + Text.translatable("simplyswords.gem_powers.simplySkills.condition"), + () -> defaultValue + ).withFailTitle(Text.translatable("simplyswords.gem_powers.simplySkills.failTitle")); + } } } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index 8c8a8da6..e2cdf779 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -14,6 +14,7 @@ import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import net.minecraft.item.Item; import net.minecraft.loot.LootTables; +import net.minecraft.loot.context.LootContextTypes; import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKeys; import net.minecraft.text.Text; @@ -46,9 +47,8 @@ public LootConfig() { () -> false ).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); - @SuppressWarnings("deprecation") public ValidatedIdentifierMap uniqueLootTableOptions = new ValidatedIdentifierMap.Builder() - .keyHandler(ValidatedIdentifier.ofRegistryKey(LootTables.END_CITY_TREASURE_CHEST.getValue(), RegistryKeys.LOOT_TABLE)) + .keyHandler(ValidatedIdentifier.ofDynamicKey(LootTables.END_CITY_TREASURE_CHEST.getValue(), RegistryKeys.LOOT_TABLE, "no_blocks", (id, e) -> e.value().getType() != LootContextTypes.BLOCK)) .valueHandler(new ValidatedFloat(0.01f, 1f, 0f)) .defaults( ImmutableMap.builder() diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index 9392b9f9..17bf1588 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -99,5 +99,5 @@ public UniqueEffectsConfig() { () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), Text.translatable("simplyswords.unique_effects.voidcaller.compat"), DreadtideSwordItem.EffectSettings::new - ); + ).withFailTitle(Text.translatable("simplyswords.unique_effects.voidcaller.compat.failTitle")); } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java index 69e38cb3..02da7b6a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java @@ -84,7 +84,7 @@ private ValidatedCondition createCondition(float defaultValue, String mod () -> Platform.isModLoaded(modNeeded), Text.translatable("simplyswords.weapon_attributes.materialDamageModifier." + modNeeded), () -> defaultValue - ).withFailTitle(Text.translatable("simplyswords.loot.materialDamageModifier." + modNeeded + ".failTitle")); + ).withFailTitle(Text.translatable("simplyswords.weapon_attributes.materialDamageModifier." + modNeeded + ".failTitle")); } } @@ -158,7 +158,7 @@ public static class UniqueDamageModifier extends ConfigSection { () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end"), () -> 3.0f - ); + ).withFailTitle(Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle")); } @RequiresAction(action = Action.RESTART) @@ -210,7 +210,7 @@ public static class UniqueAttackSpeed extends ConfigSection { () -> SimplySwords.passVersionCheck("eldritch_end", SimplySwords.minimumEldritchEndVersion), Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end"), () -> -2.0f - ); + ).withFailTitle(Text.translatable("simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle")); } } \ No newline at end of file diff --git a/common/src/main/resources/assets/simplyswords/lang/en_us.json b/common/src/main/resources/assets/simplyswords/lang/en_us.json index 131c9811..acd63ba2 100644 --- a/common/src/main/resources/assets/simplyswords/lang/en_us.json +++ b/common/src/main/resources/assets/simplyswords/lang/en_us.json @@ -1110,7 +1110,7 @@ - "simplyswords.weapon_attributes.typeDamageModifier" : "§a[WEAPON ATTRIBUTES CONFIGURATION]§7", + "simplyswords.weapon_attributes.typeDamageModifier" : "§a[Weapon Modifiers]§7", "simplyswords.weapon_attributes.typeDamageModifier.desc" : "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", "simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Longsword damage modifier", "simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Twinblade damage modifier", @@ -1128,11 +1128,14 @@ "simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Scythe damage modifier", "simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Halberd damage modifier", - "simplyswords.weapon_attributes.materialDamageModifier" : "§a[Base Damage Modifiers]§7", - "simplyswords.weapon_attributes.materialDamageModifier.desc" : "Damage modifiers scale off these base values.", - "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals" : "Requires Mythic Metals", - "simplyswords.weapon_attributes.materialDamageModifier.gobber2" : "Requires Gobber", - "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.materialDamageModifier": "§a[Material Modifiers]§7", + "simplyswords.weapon_attributes.materialDamageModifier.desc": "Damage modifiers scale off these base values.", + "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals": "Requires Mythic Metals", + "simplyswords.weapon_attributes.materialDamageModifier.mythicmetals.failTitle": "Disabled", + "simplyswords.weapon_attributes.materialDamageModifier.gobber2": "Requires Gobber", + "simplyswords.weapon_attributes.materialDamageModifier.gobber2.failTitle": "Disabled", + "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end": "Requires Eldritch End", + "simplyswords.weapon_attributes.materialDamageModifier.eldritch_end.failTitle": "Disabled", "simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", "simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", "simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", @@ -1180,14 +1183,15 @@ "simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", "simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", - "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[UNIQUE ATTRIBUTES CONFIGURATION]", + "simplyswords.weapon_attributes.uniqueDamageModifier" : "§6[Unique Modifiers]", "simplyswords.weapon_attributes.uniqueDamageModifier.desc" : "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end" : "Requires Eldritch End", + "simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle" : "Disabled", "simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", - "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "Sword on a Stick damage modifier", + "simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "§6Sword on a Stick§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", @@ -1225,13 +1229,13 @@ "simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", "simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", - "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§6[Attack Speed Modifiers]", + "simplyswords.weapon_attributes.uniqueAttackSpeed" : "§6[Unique Attack Speed Modifiers]", "simplyswords.weapon_attributes.uniqueAttackSpeed.desc" : "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", "simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", - "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick attack speed", + "simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", "simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", @@ -1299,7 +1303,7 @@ "simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", "simplyswords.general.enableUniqueGemSockets.desc" : "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", "simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", - "simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Requires Spell Power", + "simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Requires Gobber", "simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle": "Disabled", "simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", "simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", @@ -1408,13 +1412,13 @@ "simplyswords.unique_effects.permafrost.radius": "Permafrost radius", "simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", - "simplyskills.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", - "simplyskills.unique_effects.arcaneAssault.chance": "Arcane Assault chance", - "simplyskills.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", - "simplyskills.unique_effects.arcaneAssault.damage": "Arcane Assault damage", - "simplyskills.unique_effects.arcaneAssault.duration": "Arcane Assault duration", - "simplyskills.unique_effects.arcaneAssault.radius": "Arcane Assault radius", - "simplyskills.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", + "simplyswords.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", + "simplyswords.unique_effects.arcaneAssault.chance": "Arcane Assault chance", + "simplyswords.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", + "simplyswords.unique_effects.arcaneAssault.damage": "Arcane Assault damage", + "simplyswords.unique_effects.arcaneAssault.duration": "Arcane Assault duration", + "simplyswords.unique_effects.arcaneAssault.radius": "Arcane Assault radius", + "simplyswords.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", "simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", "simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", @@ -1506,6 +1510,7 @@ "simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", "simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", + "simplyswords.unique_effects.voidcaller.compat.failTitle": "Disabled", "simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", "simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", "simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", @@ -1581,6 +1586,8 @@ "simplyswords.gem_powers.imbued" : "§b[Imbued]§7", "simplyswords.gem_powers.simplySkills": "Simply Skills Powers", "simplyswords.gem_powers.simplySkills.desc" : "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", + "simplyswords.gem_powers.simplySkills.condition": "Requires Simply Skills", + "simplyswords.gem_powers.simplySkills.failTitle": "Disabled", "simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", "simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", "simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", diff --git a/gradle.properties b/gradle.properties index 8f1a786b..1dde51ba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,7 +23,7 @@ spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 cloth_config_version=15.0.130 -fzz_config_version=0.5.5+1.21 +fzz_config_version=0.5.6+1.21 mod_menu_version=11.0.2 eldritch_end_version=5035580 necronomicon_version=5041803 \ No newline at end of file From 764741bd90fa45b4511ebf04e4fccfe618ed1ef4 Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Sat, 16 Nov 2024 12:21:55 -0500 Subject: [PATCH 32/37] fix status effect problem caused by arch. add some instructional guides to configs and powers --- .../sweenus/simplyswords/SimplySwords.java | 19 -- .../sweenus/simplyswords/config/Config.java | 217 +++++------------- .../simplyswords/config/GemPowersConfig.java | 43 +++- .../simplyswords/config/LootConfig.java | 8 +- .../config/UniqueEffectsConfig.java | 32 +++ .../config/WeaponAttributesConfig.java | 4 +- .../config/settings/TooltipSettings.java | 3 + .../effect/AstralShiftEffect.java | 6 +- .../simplyswords/effect/EchoEffect.java | 2 +- .../effect/ElementalVortexEffect.java | 2 +- .../effect/FatalFlickerEffect.java | 4 +- .../simplyswords/effect/FireVortexEffect.java | 2 +- .../simplyswords/effect/FlameSeedEffect.java | 6 +- .../simplyswords/effect/FrenzyEffect.java | 4 +- .../effect/FrostVortexEffect.java | 2 +- .../simplyswords/effect/ImmolationEffect.java | 4 +- .../simplyswords/effect/MagislamEffect.java | 6 +- .../simplyswords/effect/MagistormEffect.java | 2 +- .../simplyswords/effect/OnslaughtEffect.java | 8 +- .../simplyswords/effect/PainEffect.java | 4 +- .../effect/RibboncleaveEffect.java | 4 +- .../simplyswords/effect/SporeSwarmEffect.java | 6 +- .../effect/VoidAssaultEffect.java | 2 +- .../entity/BattleStandardDarkEntity.java | 2 +- .../entity/BattleStandardEntity.java | 2 +- .../item/ContainedRemnantItem.java | 6 +- .../item/EmpoweredRemnantItem.java | 6 +- .../simplyswords/item/RunicTabletItem.java | 6 +- .../simplyswords/item/UniqueSwordItem.java | 12 +- .../component/TargetedLocationComponent.java | 4 +- .../item/custom/BrambleSwordItem.java | 4 +- .../item/custom/DreadtideSwordItem.java | 6 +- .../item/custom/EmberlashSwordItem.java | 6 +- .../item/custom/EnigmaSwordItem.java | 2 +- .../item/custom/FlamewindSwordItem.java | 4 +- .../item/custom/FrostfallSwordItem.java | 4 +- .../item/custom/HarbingerSwordItem.java | 18 +- .../item/custom/LivyatanSwordItem.java | 6 +- .../item/custom/MagiscytheSwordItem.java | 4 +- .../item/custom/MagispearSwordItem.java | 4 +- .../item/custom/MoltenEdgeSwordItem.java | 2 +- .../item/custom/RibboncleaverSwordItem.java | 4 +- .../item/custom/RighteousRelicSwordItem.java | 10 +- .../item/custom/SoulPyreSwordItem.java | 2 +- .../item/custom/StormSwordItem.java | 2 +- .../item/custom/TempestSwordItem.java | 25 +- .../item/custom/WhisperwindSwordItem.java | 2 +- .../item/custom/WickpiercerSwordItem.java | 4 +- .../simplyswords/mixin/LivingEntityMixin.java | 6 +- .../mixin/ServerPlayerEntityMixin.java | 18 +- .../sweenus/simplyswords/power/GemPower.java | 8 + .../simplyswords/power/powers/EchoPower.java | 2 +- .../power/powers/FreezePower.java | 2 +- .../power/powers/ImmolationPower.java | 2 +- .../power/powers/NullificationPower.java | 4 +- .../power/powers/OnslaughtPower.java | 2 +- .../power/powers/RadiancePower.java | 2 +- .../simplyswords/power/powers/WardPower.java | 2 +- .../power/powers/WildfirePower.java | 2 +- .../simplyswords/registry/EffectRegistry.java | 7 + .../simplyswords/util/AbilityMethods.java | 2 +- .../simplyswords/util/HelperMethods.java | 41 ---- .../util/ModLootTableModifiers.java | 1 + .../simplyswords/util/SoundHelper.java | 2 +- gradle.properties | 2 +- 65 files changed, 282 insertions(+), 360 deletions(-) diff --git a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java index b3818891..e00af303 100644 --- a/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java +++ b/common/src/main/java/net/sweenus/simplyswords/SimplySwords.java @@ -59,8 +59,6 @@ public class SimplySwords { public static final Logger LOGGER = LogManager.getLogger(MOD_ID); - public static boolean isConfigOutdated; - public static String minimumEldritchEndVersion = "0.2.40"; public static String minimumSpellPowerVersion = "0.10.0+1.20.1"; @@ -70,23 +68,6 @@ public static void init() { Config.init(); - String version = SimplySwordsExpectPlatform.getVersion(); - String defaultConfig = String.format(""" - { - "regen_simplyswords_config_file": false, - "config_version": %s - }""", version.substring(0, 4)); - - File configFile = Config.createFile("config/simplyswords_extra/backupconfig.json", defaultConfig, false); - JsonObject json = Config.getJsonObject(Config.readFile(configFile)); - if (json.has("config_version") && version.startsWith(json.get("config_version").getAsString())) { - isConfigOutdated = false; - } else { - isConfigOutdated = true; - //System.out.println("SimplySwords: It looks like you've updated from a previous version. Please regenerate the Simply Swords configs to get the latest features."); - //System.out.println(version.substring(0, 4)); - } - SimplySwords.TABS.register(); ItemsRegistry.ITEM.register(); SoundRegistry.SOUND.register(); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/Config.java b/common/src/main/java/net/sweenus/simplyswords/config/Config.java index b195ee27..9cffbba4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/Config.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/Config.java @@ -21,174 +21,63 @@ public final class Config { public static void init() {} - public static File createFile(String path, String contents, boolean overwrite) { - File file = new File(path); - if (file.exists() && !overwrite) { - return file; - } - file.getParentFile().mkdirs(); - try { - file.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - file.setReadable(true); - file.setWritable(true); - file.setExecutable(true); - if (contents == null || "".equals(contents)) { - return file; - } - try (FileWriter writer = new FileWriter(file)) { - writer.write(contents); - } catch (IOException e) { - e.printStackTrace(); - } - return file; - } - - - public static String readFile(File file) { - String output = ""; - try (Scanner scanner = new Scanner(file)) { - scanner.useDelimiter("\\Z"); - output = scanner.next(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return output; - } - - public static JsonObject getJsonObject(String json) { - try { - return new JsonParser().parse(json).getAsJsonObject(); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - - - // -- Safe Config Fetching -- - // Allows safely fetching config values in a scenario where we do not know if they exist. - // EG. Addon mod for Simply Swords attempting to load config values before Simply Swords has initialised. - - private static final HashMap BOOLEAN = new LinkedHashMap<>(); - private static final HashMap FLOAT = new LinkedHashMap<>(); - private static final HashMap DOUBLE = new LinkedHashMap<>(); - private static final HashMap INT = new LinkedHashMap<>(); - - public static boolean getBoolean(String key, String parent, boolean defaultValue) { - //System.out.println("Trying to fetch config value for " + key + " from " + parent); - safeValueFetch("boolean", parent); - if (!BOOLEAN.isEmpty()) { - if (BOOLEAN.containsKey(key)) { - //System.out.println("Successfully fetched value for " + key + " : " + BOOLEAN.get(key)); - return BOOLEAN.get(key); - } - } - System.out.println("Failed to fetch config value for " + key + ". Loading default value.\nIt is recommended that you restart your game."); - return defaultValue; - } - - public static float getFloat(String key, String parent, float defaultValue) { - //System.out.println("Trying to fetch config value for " + key + " from " + parent); - safeValueFetch("float", parent); - if (!FLOAT.isEmpty()) { - if (FLOAT.containsKey(key)) { - //System.out.println("Successfully fetched value for " + key + " : " + FLOAT.get(key)); - return FLOAT.get(key); - } - } - System.out.println("Failed to fetch config value for " + key + ". Loading default value.\nIt is recommended that you restart your game."); - //System.out.print(FLOAT); - return defaultValue; - } - - public static double getDouble(String key, String parent, double defaultValue) { - safeValueFetch("double", parent); - if (!DOUBLE.isEmpty()) { - if (DOUBLE.containsKey(key)) - return DOUBLE.get(key); - } - System.out.println("Failed to fetch config value for " + key + ". Loading default value.\nIt is recommended that you restart your game."); - return defaultValue; - } - - public static int getInt(String key, String parent, int defaultValue) { - safeValueFetch("int", parent); - if (!INT.isEmpty()) { - if (INT.containsKey(key)) - return INT.get(key); - } - System.out.println("Failed to fetch config value for " + key + ". Loading default value.\nIt is recommended that you restart your game."); - return defaultValue; - } - - public static void safeValueFetch(String type, String parent) { - Path path = Paths.get("config/simplyswords_main/"); - JsonObject json = null; - if (Files.exists(path)) { - json = switch (parent) { - case "GemEffects" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/gem_effects.json5"))); - case "General" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/general.json5"))); - case "Loot" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/loot.json5"))); - case "RunicEffects" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/runic_effects.json5"))); - case "StatusEffects" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/status_effects.json5"))); - case "UniqueEffects" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/unique_effects.json5"))); - case "WeaponAttributes" -> Config.getJsonObject(Config.readFile(new File("config/simplyswords_main/weapon_attributes.json5"))); - default -> null; - }; - } - - if (json != null) { - - switch (type) { - case "boolean" -> { - for (Map.Entry entry : json.entrySet()) { - try { - BOOLEAN.put(entry.getKey(), entry.getValue().getAsBoolean()); - } catch (Exception e) { - //System.out.println(entry.getKey() + ": " + entry.getValue() + " is not a valid value. Skipping this entry."); - } - } - } - case "float" -> { - for (Map.Entry entry : json.entrySet()) { - try { - FLOAT.put(entry.getKey(), entry.getValue().getAsFloat()); - } catch (Exception e) { - //System.out.println(entry.getKey() + ": " + entry.getValue() + " is not a valid value. Skipping this entry."); - } - } - } - case "double" -> { - for (Map.Entry entry : json.entrySet()) { - try { - DOUBLE.put(entry.getKey(), entry.getValue().getAsDouble()); - } catch (Exception e) { - //System.out.println(entry.getKey() + ": " + entry.getValue() + " is not a valid value. Skipping this entry."); - } - } - } - case "int" -> { - for (Map.Entry entry : json.entrySet()) { - try { - INT.put(entry.getKey(), entry.getValue().getAsInt()); - } catch (Exception e) { - //System.out.println(entry.getKey() + ": " + entry.getValue() + " is not a valid value. Skipping this entry."); - } - } - } - } - } - } - - + ////////// + //Loot config is registered internally in LootConfig. There were some load order issues otherwise. + ////////// public static final GeneralConfig general = ConfigApiJava.registerAndLoadConfig(GeneralConfig::new); public static final GemPowersConfig gemPowers = ConfigApiJava.registerAndLoadConfig(GemPowersConfig::new); public static final StatusEffectsConfig statusEffects = ConfigApiJava.registerAndLoadConfig(StatusEffectsConfig::new); public static final WeaponAttributesConfig weaponAttribute = ConfigApiJava.registerAndLoadConfig(WeaponAttributesConfig::new); public static final UniqueEffectsConfig uniqueEffects = ConfigApiJava.registerAndLoadConfig(UniqueEffectsConfig::new); +//Guide to Config Features + +//ValidatedThings + //Validated[Thing] is a fancy setting. In most cases you won't need it, I've used them sparingly where it had functional benefit + //Validation are suppliers and consumers. + // Retrieve the setting with [mySetting].get() + //update the setting internally (not recommended) with [mySetting].accept(newthing) + //ValidatedSet/List/Map are also themselves Set/List/Map, so you can call the normal collection methods like get() and containsKey() directly. + + +//ValidatedCondition + //ValidatedCondition is a wrapper around a setting that only allows interaction with the setting if a condition is met. + //in SS case, I've used it to gate mod compat settings behind checks for the mod being loaded. + //Example below. + //line1: the setting itself, using a `Validated[Thing] instead of a plain java type + //line2: wraps the setting in the condition + //line3: supplies the conditional boolean check + //line4: tooltip text for when the condition is failing. "Requires Gobber" etc. + //line5: Fallback value. This supplies the value to get from the setting if the condition fails, regardless of the config choices made underneath. + //So in this case, it will always return false if gobber isn't loaded. + //line6: adds a unique Caption to the setting button. Normally "Condition not met", in SS I changed it to "Disabled" + /* + public ValidatedCondition compatGobberEndWeaponsUnbreakable = new ValidatedBoolean(true) + .toCondition( + () -> Platform.isModLoaded("gobber2"), + Text.translatable("simplyswords.general.compatGobberEndWeaponsUnbreakable.condition"), + () -> false + ).withFailTitle(Text.translatable("simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle")); + */ + +//@Validated[Number].Restrict + //Works basically like the Cloth version of this annotation. Just make sure the [Number] type matches the actual number being restricted. + +//Disabled Things + //With fzzy config, I decided to make sets of disabled things, rather than a collection of booleans for everything being enabled + //if a things id is in the set, it's disabled + //Example + // ValidatedSet disabledPowers = ValidatedIdentifier.ofRegistryKey(GemPowerRegistry.REGISTRY.key()).toSet(); + //To see if a thing is enabled, I check that it's id isn't in the set + // !Config.gemPowers.disabledPowers.contains(entry.getId())); + +//Translation + //For repeated basic effects on gem powers like cooldown, duration, etc. I made common translation keys. + //These are referenced using the @Translation annotation + //Example + // @Translation(prefix = "simplyswords.config.basic_settings") + //the entire key will be "simplyswords.config.basic_settings.[fieldName]" + //Example + //"simplyswords.config.basic_settings.cooldown" + } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java index d727097e..8569eb3c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/GemPowersConfig.java @@ -6,7 +6,6 @@ import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedSet; import me.fzzyhmstrs.fzzy_config.validation.minecraft.ValidatedIdentifier; import me.fzzyhmstrs.fzzy_config.validation.misc.ValidatedCondition; -import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -74,4 +73,46 @@ private ValidatedCondition createCondition(int defaultValue) { } } +//Settings + //Settings blocks are all stored within the corresponding power. + //some of them override predefined basic settings classes; Fzzy Config works with inherited settings as well as ones directly in the subclass + //example + //type declaration: Settings extends TooltipSettings, if nothing else. This allows tooltips of what the power is to appear in-game + //constructor: TooltipSettings require a supplier of TooltipAppender. + //Conveniently, RegistrySupplier is a supplier, and GemPower is a TooltipAppender! + //settings: in most places I've restricted the settings so non-functional numbers aren't possible (like negative durations). + //Also, most power settings share names, so the @Translation mentioned in Config is here too + //Reference into a settings like + //int f = Config.gemPowers.activeDefence.frequency; + /* + public static class Settings extends TooltipSettings { + + public Settings() { + super(GemPowerRegistry.ACTIVE_DEFENCE); + } + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedInt.Restrict(min = 1) + public int frequency = 20; + + @Translation(prefix = "simplyswords.config.basic_settings") + @ValidatedDouble.Restrict(min = 0.0) + public double radius = 5.0; + } + */ + + //example 2, simple settings + //this exmaple uses one of the predefined settings classes. Many powers use the exact same set of 2 or 3 settings. + //simply provide the chance and duration and the super class handles all the config stuff for you + + /* + public static class Settings extends ChanceDurationSettings { + + public Settings() { + super(15, 50, GemPowerRegistry.FLOAT); + } + } + */ + + } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java index e2cdf779..f741f5ff 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/LootConfig.java @@ -40,6 +40,7 @@ public LootConfig() { public ValidatedFloat runicLootTableWeight = new ValidatedFloat(0.007f, 1f, 0f); public ValidatedFloat uniqueLootTableWeight = new ValidatedFloat(0.001f, 1f, 0f); + //contained remnants will be disabled by default if the unique loot chance is set to 0 public ValidatedCondition enableContainedRemnants = new ValidatedBoolean() .toCondition( () -> uniqueLootTableWeight.get() > 0f, @@ -47,8 +48,11 @@ public LootConfig() { () -> false ).withFailTitle(Text.translatable("simplyswords.loot.enableContainedRemnants.failTitle")); + //Unique table options are copied over from the previous sub-config system. + //This map only allows non-block loot table ids, and chances clamped 0f to 1f. + //if you ever use another toDynamicKey, the predicate id should be unique unless the predicate is exactly the same (non-block) public ValidatedIdentifierMap uniqueLootTableOptions = new ValidatedIdentifierMap.Builder() - .keyHandler(ValidatedIdentifier.ofDynamicKey(LootTables.END_CITY_TREASURE_CHEST.getValue(), RegistryKeys.LOOT_TABLE, "no_blocks", (id, e) -> e.value().getType() != LootContextTypes.BLOCK)) + .keyHandler(ValidatedIdentifier.ofDynamicKey(LootTables.END_CITY_TREASURE_CHEST.getValue(), RegistryKeys.LOOT_TABLE, "simplyswords_no_blocks", (id, e) -> e.value().getType() != LootContextTypes.BLOCK)) .valueHandler(new ValidatedFloat(0.01f, 1f, 0f)) .defaults( ImmutableMap.builder() @@ -75,4 +79,6 @@ public LootConfig() { ).build(); public ValidatedSet disabledUniqueWeaponLoot = ValidatedRegistryType.of(ItemsRegistry.ARCANETHYST.value(), Registries.ITEM, (entry) -> entry.value() instanceof UniqueSwordItem).toSet(); + + // } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java index 17bf1588..5d4c5cd7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/UniqueEffectsConfig.java @@ -100,4 +100,36 @@ public UniqueEffectsConfig() { Text.translatable("simplyswords.unique_effects.voidcaller.compat"), DreadtideSwordItem.EffectSettings::new ).withFailTitle(Text.translatable("simplyswords.unique_effects.voidcaller.compat.failTitle")); + +//EffectSettings + //much like the gem power settings, each setting block is stored within the sword item it's used for + //These settings use the unique item themselves to provide a config context tooltip + //example + //Type declaration: A tooltip settings, so needs a supplier of TooltipAppender + //Constructor + //Items are not tooltip appenders, so I made a class ItemStackTooltipAppender to help + //NOTE: the ::get part is very important. RegistrySuppliers are suppliers, but without the get you get load order issues + //settings: work basically like the gem power configs. + //note that here I've left all the sword-specific naming + //so instead of using the basic "Cooldown", it still will say "Harbinger cooldown" and so on. + //like gem powers, call like + //int c = Config.uniqueEffects.abyssalStandard.cooldown; + /* + public static class EffectSettings extends TooltipSettings { + + public EffectSettings() { + super(new ItemStackTooltipAppender(ItemsRegistry.HARBINGER::get)); + } + + @ValidatedInt.Restrict(min = 0, max = 100) + public int chance = 15; + @ValidatedInt.Restrict(min = 0) + public int cooldown = 700; + @ValidatedFloat.Restrict(min = 0f) + public float damage = 3f; + @ValidatedFloat.Restrict(min = 0f) + public float spellScaling = 1.2f; + + } + */ } \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java index 02da7b6a..7f5e0fff 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/WeaponAttributesConfig.java @@ -51,7 +51,7 @@ public static class MaterialDamageModifier extends ConfigSection { public float netherite_damageModifier = 3.0f; public float runic_damageModifier = 3.0f; - //mythic metals compat + //mythic metals compat, all gated behind a mod-loaded condition public ValidatedCondition adamantite_damageModifier = createCondition(3.0f, "mythicmetals"); public ValidatedCondition aquarium_damageModifier = createCondition(3.0f, "mythicmetals"); public ValidatedCondition banglum_damageModifier = createCondition(3.0f, "mythicmetals"); @@ -73,7 +73,7 @@ public static class MaterialDamageModifier extends ConfigSection { public ValidatedCondition steel_damageModifier = createCondition(3.0f, "mythicmetals"); public ValidatedCondition stormyx_damageModifier = createCondition(3.0f, "mythicmetals"); - //gobber compat + //gobber compat - all mod-loaded gated public ValidatedCondition gobber_damageModifier = createCondition(1.0f, "gobber2"); public ValidatedCondition gobberNether_damageModifier = createCondition(3.0f, "gobber2"); public ValidatedCondition gobberEnd_damageModifier = createCondition(6.0f, "gobber2"); diff --git a/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java index 01977564..03d077f4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java +++ b/common/src/main/java/net/sweenus/simplyswords/config/settings/TooltipSettings.java @@ -14,6 +14,9 @@ import java.util.function.Consumer; import java.util.function.Supplier; +/** + * A settings block that will provide a tooltip from the supplied TooltipAppender + */ public class TooltipSettings implements Translatable, Walkable { public TooltipSettings(@Nullable Supplier appender) { diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java index 9b1f86a5..2a3d437d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/AstralShiftEffect.java @@ -28,8 +28,8 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { ServerWorld world = (ServerWorld) entity.getWorld(); if (entity instanceof PlayerEntity player) { - if (player.hasStatusEffect(EffectRegistry.ASTRAL_SHIFT)) { - StatusEffectInstance effectInstance = player.getStatusEffect(EffectRegistry.ASTRAL_SHIFT); + if (player.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT))) { + StatusEffectInstance effectInstance = player.getStatusEffect(EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT)); if (effectInstance != null && effectInstance.getDuration() < 10) { double x = entity.getX(); @@ -63,7 +63,7 @@ public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { HelperMethods.spawnRainingParticles(world, ParticleTypes.EXPLOSION, target, 2, 1); } } - entity.removeStatusEffect(EffectRegistry.ASTRAL_SHIFT); + entity.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT)); } } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java index de41d309..a4991c21 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/EchoEffect.java @@ -18,7 +18,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { int damage = Config.statusEffects.echoDamage; livingEntity.timeUntilRegen = 0; livingEntity.damage(livingEntity.getDamageSources().magic(), damage+amplifier); - livingEntity.removeStatusEffect(EffectRegistry.ECHO); + livingEntity.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.ECHO)); } } super.applyUpdateEffect(livingEntity, amplifier); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java index 21f49b98..372f82ef 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ElementalVortexEffect.java @@ -36,7 +36,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); SoundHelper.loopSound(livingEntity, SoundRegistry.AMBIENCE_WIND_LOOP.getId(), 20); - if (livingEntity.getStatusEffect(EffectRegistry.ELEMENTAL_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.ELEMENTAL_VORTEX)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java index a7c4b462..431ab6a3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FatalFlickerEffect.java @@ -42,7 +42,7 @@ public static void performDash(LivingEntity user, World world, int radius) { } for (Entity entity : entities) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - HelperMethods.incrementStatusEffect(le, EffectRegistry.ECHO, 20, amplifier, maxAmplifier); + HelperMethods.incrementStatusEffect(le, EffectRegistry.getReference(EffectRegistry.ECHO), 20, amplifier, maxAmplifier); } } @@ -61,7 +61,7 @@ public boolean applyUpdateEffect(LivingEntity user, int amplifier) { if (!user.getWorld().isClient()) { - int ability_timer = Objects.requireNonNull(user.getStatusEffect(EffectRegistry.FATAL_FLICKER)).getDuration(); + int ability_timer = Objects.requireNonNull(user.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FATAL_FLICKER))).getDuration(); World world = user.getWorld(); int radius = Config.uniqueEffects.fatalFlicker.radius; diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java index 2e6967ae..c253b6d2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FireVortexEffect.java @@ -30,7 +30,7 @@ public void setAdditionalData(int data) { public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); - if (livingEntity.getStatusEffect(EffectRegistry.FIRE_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java index 2ec5913d..3b7671ff 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FlameSeedEffect.java @@ -43,7 +43,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { float pitch = 1.3f; int frequency = 20; SoundEvent soundEvent = SoundEvents.ENTITY_GENERIC_BURN; - if (livingEntity.getStatusEffect(EffectRegistry.FLAMESEED) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FLAMESEED)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); duration = statusEffect.getDuration(); @@ -73,10 +73,10 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { for (Entity entity : serverWorld.getOtherEntities(livingEntity, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, sourceEntity)) { le.damage(damageSource, (abilityDamage)); - if (!le.hasStatusEffect(EffectRegistry.FLAMESEED) && additionalData > 0) { + if (!le.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FLAMESEED)) && additionalData > 0) { additionalData -= 1; SimplySwordsStatusEffectInstance flamSeedEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.FLAMESEED, 101, 0, false, + EffectRegistry.getReference(EffectRegistry.FLAMESEED), 101, 0, false, false, true); flamSeedEffect.setSourceEntity(sourceEntity); flamSeedEffect.setAdditionalData(additionalData); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java index a9942eb4..68f5cf20 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrenzyEffect.java @@ -17,7 +17,7 @@ public FrenzyEffect(StatusEffectCategory statusEffectCategory, int color) { public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (!(livingEntity.getMainHandStack().getItem() instanceof WickpiercerSwordItem) && !(livingEntity.getOffHandStack().getItem() instanceof WickpiercerSwordItem)) - livingEntity.removeStatusEffect(EffectRegistry.FRENZY); + livingEntity.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.FRENZY)); } super.applyUpdateEffect(livingEntity, amplifier); return false; @@ -32,4 +32,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java index 020db59b..4a38460c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/FrostVortexEffect.java @@ -31,7 +31,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) livingEntity.getWorld(); float abilityDamage = 0; - if (livingEntity.getStatusEffect(EffectRegistry.FROST_VORTEX) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java index 98086ae4..d71d019b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/ImmolationEffect.java @@ -48,10 +48,10 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { || offComponent.hasRunic(GemPowerRegistry.IMMOLATION) || mainComponent.hasNether(GemPowerRegistry.RADIANCE) || offComponent.hasNether(GemPowerRegistry.RADIANCE))) { - player.removeStatusEffect(EffectRegistry.IMMOLATION); + player.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.IMMOLATION)); } } else { - player.removeStatusEffect(EffectRegistry.IMMOLATION); + player.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.IMMOLATION)); } float abilityDamage = (player.getHealth() / 3); diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java index 5a17748a..1ae00ab0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagislamEffect.java @@ -30,7 +30,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (livingEntity instanceof PlayerEntity player) { - int ability_timer = Objects.requireNonNull(player.getStatusEffect(EffectRegistry.MAGISLAM)).getDuration(); + int ability_timer = Objects.requireNonNull(player.getStatusEffect(EffectRegistry.getReference(EffectRegistry.MAGISLAM))).getDuration(); double radius = Config.uniqueEffects.magislam.radius; double leapVelocity = 1.5; double height = 0.9; @@ -61,8 +61,8 @@ else if (ability_timer <= 50) { HelperMethods.spawnOrbitParticles((ServerWorld) player.getWorld(), player.getPos(), ParticleTypes.EXPLOSION, 1, 3); player.getWorld().playSoundFromEntity(null, player, SoundEvents.ENTITY_GENERIC_EXPLODE.value(), SoundCategory.PLAYERS, 0.9f, 1.1f); - player.removeStatusEffect(EffectRegistry.MAGISLAM); - player.removeStatusEffect(EffectRegistry.RESILIENCE); + player.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.MAGISLAM)); + player.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.RESILIENCE)); } } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java index eb61df1f..477c199b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/MagistormEffect.java @@ -63,7 +63,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { SoundCategory.PLAYERS, 0.1f, 1.0f + (player.getRandom().nextFloat())); if (new Random().nextInt(100) < 5) - HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.MAGISTORM, (int) duration, 1, 10); + HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.getReference(EffectRegistry.MAGISTORM), (int) duration, 1, 10); } } } diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java index 25ee301f..f238d1e2 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/OnslaughtEffect.java @@ -31,14 +31,14 @@ public boolean applyUpdateEffect(LivingEntity pLivingEntity, int pAmplifier) { } //If Onslaught is expiring, remove all haste and grant weakness. Also expire Onslaught early. - if (pLivingEntity.hasStatusEffect(EffectRegistry.ONSLAUGHT)) { - StatusEffectInstance statusEffect = pLivingEntity.getStatusEffect(EffectRegistry.ONSLAUGHT); + if (pLivingEntity.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.ONSLAUGHT))) { + StatusEffectInstance statusEffect = pLivingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.ONSLAUGHT)); assert statusEffect != null; if (statusEffect.getDuration() < 10 && pLivingEntity.hasStatusEffect(StatusEffects.HASTE)) { pLivingEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 80, 0), pLivingEntity); pLivingEntity.removeStatusEffect(StatusEffects.HASTE); - pLivingEntity.removeStatusEffect(EffectRegistry.ONSLAUGHT); + pLivingEntity.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.ONSLAUGHT)); } } } @@ -54,4 +54,4 @@ public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java index f77043da..02fd4b57 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/PainEffect.java @@ -27,7 +27,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { int startingTickFrequency = 15; - if (livingEntity.getStatusEffect(EffectRegistry.PAIN) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.PAIN)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } @@ -51,4 +51,4 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return true; } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java index cccc59c6..f93172a8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/RibboncleaveEffect.java @@ -17,7 +17,7 @@ public RibboncleaveEffect(StatusEffectCategory statusEffectCategory, int color) public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { if (!(livingEntity.getMainHandStack().getItem() instanceof RibboncleaverSwordItem)) - livingEntity.removeStatusEffect(EffectRegistry.RIBBONCLEAVE); + livingEntity.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.RIBBONCLEAVE)); } super.applyUpdateEffect(livingEntity, amplifier); return false; @@ -32,4 +32,4 @@ public void onRemoved(LivingEntity entity, AttributeContainer attributes) { public boolean canApplyUpdateEffect(int pDuration, int pAmplifier) { return super.canApplyUpdateEffect(pDuration, pAmplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java index 44c6a5c3..3d21a9d4 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/SporeSwarmEffect.java @@ -40,12 +40,12 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if ((livingEntity.getMainHandStack().getItem() instanceof BrambleSwordItem) && (livingEntity.getOffHandStack().getItem() instanceof BrambleSwordItem)) maxAmp = 74; SimplySwordsStatusEffectInstance effect = HelperMethods.incrementSimplySwordsStatusEffect( - ee, EffectRegistry.PAIN, 60, 1, maxAmp); + ee, EffectRegistry.getReference(EffectRegistry.PAIN), 60, 1, maxAmp); effect.setSourceEntity(livingEntity); effect.setAdditionalData(0); ee.addStatusEffect(effect); HelperMethods.spawnWaistHeightParticles(world, ParticleTypes.SMOKE, ee, livingEntity, 10); - HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.SPORE_SWARM, 200, 1, 4); + HelperMethods.incrementStatusEffect(livingEntity, EffectRegistry.getReference(EffectRegistry.SPORE_SWARM), 200, 1, 4); } } } @@ -63,4 +63,4 @@ public boolean canApplyUpdateEffect(int duration, int amplifier) { return super.canApplyUpdateEffect(duration, amplifier); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java index 6527f013..15388ceb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java +++ b/common/src/main/java/net/sweenus/simplyswords/effect/VoidAssaultEffect.java @@ -28,7 +28,7 @@ public boolean applyUpdateEffect(LivingEntity livingEntity, int amplifier) { if (!livingEntity.getWorld().isClient()) { int voidcallerStartingTickFrequency = Config.uniqueEffects.voidcaller.get().startingTickFrequency; - if (livingEntity.getStatusEffect(EffectRegistry.VOIDASSAULT) instanceof SimplySwordsStatusEffectInstance statusEffect) { + if (livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.VOIDASSAULT)) instanceof SimplySwordsStatusEffectInstance statusEffect) { sourceEntity = statusEffect.getSourceEntity(); additionalData = statusEffect.getAdditionalData(); } diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java index 6bfbe061..4f1ea465 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardDarkEntity.java @@ -119,7 +119,7 @@ public void baseTick() { le.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 120, 0), this); if (standardType.equals("enigma")) { SimplySwordsStatusEffectInstance effect = HelperMethods.incrementSimplySwordsStatusEffect( - le, EffectRegistry.PAIN, 60, 1, 49); + le, EffectRegistry.getReference(EffectRegistry.PAIN), 60, 1, 49); effect.setSourceEntity(ownerEntity); effect.setAdditionalData(0); le.addStatusEffect(effect); diff --git a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java index d079b434..af6d74b5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java +++ b/common/src/main/java/net/sweenus/simplyswords/entity/BattleStandardEntity.java @@ -185,7 +185,7 @@ public void baseTick() { RegistryEntry effectEntry = statusEffectInstance.getEffectType(); StatusEffect effect = effectEntry.value(); if (effect != null && !effect.isBeneficial() - && !Objects.equals(effectEntry, EffectRegistry.BATTLE_FATIGUE.get())) { + && !Objects.equals(effectEntry, EffectRegistry.getReference(EffectRegistry.BATTLE_FATIGUE))) { le.removeStatusEffect(effectEntry); break; } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java index 7463e14d..44beb854 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/ContainedRemnantItem.java @@ -11,6 +11,7 @@ import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -23,8 +24,7 @@ public ContainedRemnantItem() { @Override public Text getName(ItemStack stack) { - Style LEGENDARY = HelperMethods.getStyle("legendary"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(LEGENDARY); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.LEGENDARY); } @Override @@ -55,4 +55,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li } } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java index 85a9024f..562ac263 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/EmpoweredRemnantItem.java @@ -9,6 +9,7 @@ import net.minecraft.util.Rarity; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -21,8 +22,7 @@ public EmpoweredRemnantItem() { @Override public Text getName(ItemStack stack) { - Style UNIQUE = HelperMethods.getStyle("unique"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(UNIQUE); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.UNIQUE); } @Override @@ -35,4 +35,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.remnant_description4").formatted(Formatting.GRAY, Formatting.ITALIC)); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java b/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java index 34a4837f..d85372a1 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/RunicTabletItem.java @@ -9,6 +9,7 @@ import net.minecraft.util.Rarity; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -21,8 +22,7 @@ public RunicTabletItem() { @Override public Text getName(ItemStack stack) { - Style RUNIC = HelperMethods.getStyle("runic"); - return Text.translatable(this.getTranslationKey(stack)).setStyle(RUNIC); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.RUNIC); } @Override @@ -36,4 +36,4 @@ public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, Li tooltip.add(Text.translatable("item.simplyswords.runic_tablet.tooltip4").formatted(Formatting.GRAY, Formatting.ITALIC)); } -} +} \ No newline at end of file diff --git a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java index b2bfba9d..417d1851 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/UniqueSwordItem.java @@ -16,6 +16,7 @@ import net.sweenus.simplyswords.api.SimplySwordsAPI; import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -57,11 +58,6 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack @Override public Text getName(ItemStack stack) { - Style COMMON = HelperMethods.getStyle("common"); - Style UNIQUE = HelperMethods.getStyle("unique"); - Style LEGENDARY = HelperMethods.getStyle("legendary"); - Style CORRUPTED = HelperMethods.getStyle("corrupted"); - if (this.getDefaultStack().isOf(ItemsRegistry.AWAKENED_LICHBLADE.get()) || this.getDefaultStack().isOf(ItemsRegistry.HARBINGER.get()) || this.getDefaultStack().isOf(ItemsRegistry.SUNFIRE.get()) @@ -70,11 +66,11 @@ public Text getName(ItemStack stack) { || this.getDefaultStack().isOf(ItemsRegistry.MAGISCYTHE.get()) || this.getDefaultStack().isOf(ItemsRegistry.CAELESTIS.get())) { this.iRarity = "LEGENDARY"; - return Text.translatable(this.getTranslationKey(stack)).setStyle(LEGENDARY); + return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.LEGENDARY); } - if (this.iRarity.equals("UNIQUE")) return Text.translatable(this.getTranslationKey(stack)).setStyle(UNIQUE); - else return Text.translatable(this.getTranslationKey(stack)).setStyle(COMMON); + if (this.iRarity.equals("UNIQUE")) return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.UNIQUE); + else return Text.translatable(this.getTranslationKey(stack)).setStyle(Styles.COMMON); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java b/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java index c22cf0f4..d4548883 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/component/TargetedLocationComponent.java @@ -21,6 +21,7 @@ public TargetedLocationComponent(double lastX, double lastY, double lastZ) { @Nullable public LivingEntity getEntity(ServerWorld world) { + if (uuid == DEFAULT_UUID) return null; Entity entity = world.getEntity(uuid); return entity instanceof LivingEntity ? (LivingEntity) entity : null; } @@ -29,7 +30,8 @@ public TargetedLocationComponent setTarget(Entity newTarget) { return new TargetedLocationComponent(newTarget.getUuid(), lastX, lastY, lastZ); } - public static TargetedLocationComponent DEFAULT = new TargetedLocationComponent(UUID.randomUUID(), 0.0, 0.0, 0.0); + private static final UUID DEFAULT_UUID = UUID.randomUUID(); + public static TargetedLocationComponent DEFAULT = new TargetedLocationComponent(DEFAULT_UUID, 0.0, 0.0, 0.0); public static Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java index 6deb010e..1dd31256 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/BrambleSwordItem.java @@ -33,8 +33,8 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack int hitChance = Config.uniqueEffects.bramble.chance; HelperMethods.playHitSounds(attacker, target); if (attacker.getRandom().nextInt(100) <= hitChance) { - if (!attacker.hasStatusEffect(EffectRegistry.SPORE_SWARM)) - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.SPORE_SWARM, 200, 2, false, false, true)); + if (!attacker.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.SPORE_SWARM))) + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.SPORE_SWARM), 200, 2, false, false, true)); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java index 0031d98d..f510aed0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/DreadtideSwordItem.java @@ -68,7 +68,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if ((closestEntity instanceof LivingEntity ee)) { if (HelperMethods.checkFriendlyFire(ee, user)) { - StatusEffectInstance voidcloakEffect = user.getStatusEffect(EffectRegistry.VOIDCLOAK); + StatusEffectInstance voidcloakEffect = user.getStatusEffect(EffectRegistry.getReference(EffectRegistry.VOIDCLOAK)); if (voidcloakEffect != null) { SoundEvent soundSelect = SoundRegistry.MAGIC_SHAMANIC_VOICE_04.get(); List sounds = new ArrayList<>(); @@ -91,12 +91,12 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.getSoundCategory(), 0.3f, 1.3f); SimplySwordsStatusEffectInstance voidAssaultEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.VOIDASSAULT, voidcallerDuration, voidcloakEffect.getAmplifier(), false, + EffectRegistry.getReference(EffectRegistry.VOIDASSAULT), voidcallerDuration, voidcloakEffect.getAmplifier(), false, false, true); voidAssaultEffect.setSourceEntity(user); voidAssaultEffect.setAdditionalData((int) (HelperMethods.getEntityAttackDamage(user) * voidcallerDamageModifier)); ee.addStatusEffect(voidAssaultEffect); - user.removeStatusEffect(EffectRegistry.VOIDCLOAK); + user.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.VOIDCLOAK)); user.getItemCooldownManager().set(this, skillCooldown); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java index b0432979..fc0428b7 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EmberlashSwordItem.java @@ -43,9 +43,9 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack HelperMethods.playHitSounds(attacker, target); - if (target.hasStatusEffect(EffectRegistry.SMOULDERING)) { + if (target.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.SMOULDERING))) { target.timeUntilRegen = 0; - StatusEffectInstance smoulderingEffect = target.getStatusEffect(EffectRegistry.SMOULDERING); + StatusEffectInstance smoulderingEffect = target.getStatusEffect(EffectRegistry.getReference(EffectRegistry.SMOULDERING)); if (smoulderingEffect != null) { DamageSource damageSource = attacker instanceof PlayerEntity player ? player.getDamageSources().playerAttack(player) : world.getDamageSources().generic(); float abilityDamage = Math.max(HelperMethods.commonSpellAttributeScaling(Config.uniqueEffects.smoulder.spellScaling, attacker, "fire"), (float) HelperMethods.getEntityAttackDamage(attacker)); @@ -54,7 +54,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack } } int maximum_stacks = Config.uniqueEffects.smoulder.maxStacks; - HelperMethods.incrementStatusEffect(target, EffectRegistry.SMOULDERING, 100, 1, maximum_stacks + 1); + HelperMethods.incrementStatusEffect(target, EffectRegistry.getReference(EffectRegistry.SMOULDERING), 100, 1, maximum_stacks + 1); } return super.postHit(stack, target, attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java index e0dbb314..80e39d92 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/EnigmaSwordItem.java @@ -72,7 +72,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", user.getName())); banner.setCustomNameVisible(false); banner.setInvisible(true); - banner.addStatusEffect( new StatusEffectInstance(EffectRegistry.ELEMENTAL_VORTEX, 900, 11, false, false, false)); + banner.addStatusEffect( new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.ELEMENTAL_VORTEX), 900, 11, false, false, false)); } user.getItemCooldownManager().set(this, Config.uniqueEffects.enigma.enigmaCooldown); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java index 0d624398..204c861a 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FlamewindSwordItem.java @@ -62,7 +62,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (closestEntity != null) { if ((closestEntity instanceof LivingEntity ee)) { - if (HelperMethods.checkFriendlyFire(ee, user) && !ee.hasStatusEffect(EffectRegistry.FLAMESEED)) { + if (HelperMethods.checkFriendlyFire(ee, user) && !ee.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FLAMESEED))) { SoundEvent soundSelect = SoundRegistry.SPELL_FIRE.get(); int particleCount = 20; // Number of particles along the line @@ -71,7 +71,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.getSoundCategory(), 0.3f, 1.3f); SimplySwordsStatusEffectInstance flamSeedEffect = new SimplySwordsStatusEffectInstance( - EffectRegistry.FLAMESEED, flameSeedDuration, 0, false, + EffectRegistry.getReference(EffectRegistry.FLAMESEED), flameSeedDuration, 0, false, false, true); flamSeedEffect.setSourceEntity(user); flamSeedEffect.setAdditionalData(flameSeedSpreadCap); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java index 0cdf0b69..e5ef2afb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/FrostfallSwordItem.java @@ -59,7 +59,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target.getX() - radius, target.getY() - radius, target.getZ() - radius); for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FREEZE), shatter_timer_max + 10, 0), attacker); le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), le.getSoundCategory(), 0.1f, 3f); @@ -147,7 +147,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, for (Entity otherEntity : world.getOtherEntities(player, box, EntityPredicates.VALID_LIVING_ENTITY)) { //Ice shatter if (otherEntity instanceof LivingEntity le) { - if (le.hasStatusEffect(EffectRegistry.FREEZE)) { + if (le.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FREEZE))) { float abilityDamage = HelperMethods.spellScaledDamage("frost", player, Config.uniqueEffects.frostFury.spellScaling, Config.uniqueEffects.frostFury.damage); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java index f05c2131..f47d5464 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/HarbingerSwordItem.java @@ -30,6 +30,7 @@ import net.sweenus.simplyswords.registry.ItemsRegistry; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -85,19 +86,16 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style RIGHTCLICK = HelperMethods.getStyle("rightclick"); - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(RIGHTCLICK)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip3").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip4").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip5").setStyle(TEXT)); - tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip6").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.onrightclick").setStyle(Styles.RIGHT_CLICK)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip3").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip4").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip5").setStyle(Styles.TEXT)); + tooltip.add(Text.translatable("item.simplyswords.harbingersworditem.tooltip6").setStyle(Styles.TEXT)); if (Platform.isModLoaded("spell_power")) { tooltip.add(Text.literal("")); tooltip.add(Text.translatable("item.simplyswords.compat.scaleSoul")); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java index e4e1436b..475421fb 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/LivyatanSwordItem.java @@ -60,7 +60,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack target.getX() - radius, target.getY() - radius, target.getZ() - radius); for (Entity entity : world.getOtherEntities(attacker, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, attacker)) { - le.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, shatter_timer_max + 10, 0), attacker); + le.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FREEZE), shatter_timer_max + 10, 0), attacker); le.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, shatter_timer_max - 10, 4), attacker); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_01.get(), le.getSoundCategory(), 0.1f, 3f); @@ -102,8 +102,8 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, for (Entity otherEntity : world.getOtherEntities(entity, box, EntityPredicates.VALID_LIVING_ENTITY)) { //Ice shatter if (otherEntity instanceof LivingEntity le) { - if (le.hasStatusEffect(EffectRegistry.FREEZE)) { - le.removeStatusEffect(EffectRegistry.FREEZE); + if (le.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FREEZE))) { + le.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.FREEZE)); le.removeStatusEffect(StatusEffects.RESISTANCE); world.playSoundFromEntity(null, le, SoundRegistry.ELEMENTAL_BOW_ICE_SHOOT_IMPACT_02.get(), le.getSoundCategory(), 0.2f, 3f); StoredChargeComponent shatterBonus = stack.getOrDefault(ComponentTypeRegistry.STORED_BONUS.get(), StoredChargeComponent.DEFAULT); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java index e730e1fc..947efb23 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagiscytheSwordItem.java @@ -42,7 +42,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack HelperMethods.playHitSounds(attacker, target); ServerWorld world = (ServerWorld) attacker.getWorld(); - if (attacker.hasStatusEffect(EffectRegistry.MAGISTORM)) { + if (attacker.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.MAGISTORM))) { world.playSound(null, attacker.getBlockPos(), SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_03.get(), attacker.getSoundCategory(), 0.1f, 1.9f); @@ -69,7 +69,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_22.get(), user.getSoundCategory(), 0.2f, 1.1f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISTORM, baseEffectDuration, 1)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.MAGISTORM), baseEffectDuration, 1)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java index 076cf870..8c174bc3 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MagispearSwordItem.java @@ -59,8 +59,8 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.MAGIC_SHAMANIC_NORDIC_27.get(), user.getSoundCategory(), 0.2f, 1.1f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.MAGISLAM, 62, 1)); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE, 64, 3)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.MAGISLAM), 62, 1)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.RESILIENCE), 64, 3)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java index 30b7543a..bd617315 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/MoltenEdgeSwordItem.java @@ -84,7 +84,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSoundFromEntity(null, user, SoundRegistry.DARK_SWORD_ENCHANT.get(), user.getSoundCategory(), 0.7f, 1.5f); int duration = Config.uniqueEffects.moltenRoar.duration * amp / 2; - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, duration, 0), user); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.ONSLAUGHT), duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, duration, 3), user); user.getItemCooldownManager().set(this, abilityCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java index fa02cab6..5dd6b9f9 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RibboncleaverSwordItem.java @@ -60,9 +60,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.setVelocity(user.getRotationVector().multiply(+1.7)); user.setVelocity(user.getVelocity().x, 0, user.getVelocity().z); // Prevent user flying to the heavens user.velocityModified = true; - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONCLEAVE, + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.RIBBONCLEAVE), 60, 0, false, false, true)); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.RESILIENCE, + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.RESILIENCE), 15, resilienceAmplifier, false, false, true)); user.getItemCooldownManager().set(this, skillCooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java index 67d6c6f4..8151c942 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/RighteousRelicSwordItem.java @@ -18,6 +18,7 @@ import net.sweenus.simplyswords.item.UniqueSwordItem; import net.sweenus.simplyswords.registry.SoundRegistry; import net.sweenus.simplyswords.util.HelperMethods; +import net.sweenus.simplyswords.util.Styles; import java.util.List; @@ -52,14 +53,11 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, TooltipContext tooltipContext, List tooltip, TooltipType type) { - Style ABILITY = HelperMethods.getStyle("ability"); - Style TEXT = HelperMethods.getStyle("text"); - tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip1").setStyle(ABILITY)); - tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip1").setStyle(Styles.ABILITY)); + tooltip.add(Text.translatable("item.simplyswords.sunfiresworditem.tooltip2").setStyle(Styles.TEXT)); tooltip.add(Text.literal("")); - tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(TEXT)); + tooltip.add(Text.translatable("item.simplyswords.poweredrelicsworditem.tooltip2").setStyle(Styles.TEXT)); super.appendTooltip(itemStack, tooltipContext, tooltip, type); } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java index 8bb35e5a..8fff3e4f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/SoulPyreSwordItem.java @@ -68,7 +68,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han user.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.FIRE_RESISTANCE, resistance_duration, 0), user); user.addStatusEffect(new StatusEffectInstance(StatusEffects.HASTE, relocationDuration, 3), user); - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, relocationDuration - 10, 0), user); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FREEZE), relocationDuration - 10, 0), user); stack.set(ComponentTypeRegistry.RELOCATION.get(), new RelocationComponent(user.getX(), user.getY(), user.getZ(), target.getUuid(), relocationDuration, true)); //AOE ignite & pull Box box = new Box(rememberX + radius, rememberY + radius, rememberZ + radius, diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java index 59c61577..ce839ca5 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/StormSwordItem.java @@ -40,7 +40,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack int hitChance = Config.uniqueEffects.storm.chance; if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.STORM, 2, 1), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.STORM), 2, 1), attacker); } } return super.postHit(stack, target, attacker); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java index b9e61932..326d2f6b 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/TempestSwordItem.java @@ -15,6 +15,7 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; import net.minecraft.predicate.entity.EntityPredicates; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.text.Text; @@ -50,7 +51,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack HelperMethods.playHitSounds(attacker, target); SoundEvent soundSelect; ParticleEffect particleSelect; - RegistrySupplier statusSelect; + RegistryEntry statusSelect; List sounds = new ArrayList<>(); sounds.add(SoundRegistry.SPELL_FIRE.get()); @@ -64,11 +65,11 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack particles.add(ParticleTypes.SMOKE); particles.add(ParticleTypes.CLOUD); - List> status = new ArrayList<>(); - status.add(EffectRegistry.FIRE_VORTEX); - status.add(EffectRegistry.FROST_VORTEX); - status.add(EffectRegistry.FIRE_VORTEX); - status.add(EffectRegistry.FROST_VORTEX); + List> status = new ArrayList<>(); + status.add(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)); + status.add(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX)); + status.add(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)); + status.add(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX)); int random = attacker.getRandom().nextInt(3); soundSelect = sounds.get(random); @@ -104,9 +105,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han for (Entity entity : serverWorld.getOtherEntities(user, box, EntityPredicates.VALID_LIVING_ENTITY)) { if ((entity instanceof LivingEntity le) && HelperMethods.checkFriendlyFire(le, user)) { - if (le.hasStatusEffect(EffectRegistry.FIRE_VORTEX) && le.hasStatusEffect(EffectRegistry.FROST_VORTEX)) { - StatusEffectInstance frostVortex = le.getStatusEffect(EffectRegistry.FROST_VORTEX); - StatusEffectInstance fireVortex = le.getStatusEffect(EffectRegistry.FIRE_VORTEX); + if (le.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)) && le.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX))) { + StatusEffectInstance frostVortex = le.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX)); + StatusEffectInstance fireVortex = le.getStatusEffect(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)); int totalAmplifier = 0; if (fireVortex != null && frostVortex != null) totalAmplifier = fireVortex.getAmplifier() + frostVortex.getAmplifier(); @@ -119,11 +120,11 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han soundHasPlayed = true; } - SimplySwordsStatusEffectInstance status = HelperMethods.incrementSimplySwordsStatusEffect(user, EffectRegistry.ELEMENTAL_VORTEX, vortexDuration, totalAmplifier, vortexMaxSize); + SimplySwordsStatusEffectInstance status = HelperMethods.incrementSimplySwordsStatusEffect(user, EffectRegistry.getReference(EffectRegistry.ELEMENTAL_VORTEX), vortexDuration, totalAmplifier, vortexMaxSize); status.setAdditionalData(Math.max(1, totalAmplifier)); status.setSourceEntity(user); - le.removeStatusEffect(EffectRegistry.FIRE_VORTEX); - le.removeStatusEffect(EffectRegistry.FROST_VORTEX); + le.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.FIRE_VORTEX)); + le.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.FROST_VORTEX)); user.getItemCooldownManager().set(this, skillCooldown); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java index 0e06e481..3907ae8f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WhisperwindSwordItem.java @@ -51,7 +51,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack public TypedActionResult use(World world, PlayerEntity user, Hand hand) { world.playSoundFromEntity(null, user, SoundRegistry.ELEMENTAL_BOW_SCIFI_SHOOT_IMPACT_01.get(), user.getSoundCategory(), 0.6f, 1.0f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FATAL_FLICKER, 12)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FATAL_FLICKER), 12)); user.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 100)); user.getItemCooldownManager().set(this.getDefaultStack().getItem(), Config.uniqueEffects.fatalFlicker.cooldown); diff --git a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java index c726be14..4baeec6f 100644 --- a/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java +++ b/common/src/main/java/net/sweenus/simplyswords/item/custom/WickpiercerSwordItem.java @@ -44,7 +44,7 @@ public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attack if (attacker instanceof PlayerEntity player) damageSource = attacker.getDamageSources().playerAttack(player); - if (attacker.hasStatusEffect(EffectRegistry.FRENZY)) { + if (attacker.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.FRENZY))) { target.timeUntilRegen = 0; target.damage(damageSource, (float) (HelperMethods.getEntityAttackDamage(attacker) * damageModifier)); world.playSound(null, attacker.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), @@ -68,7 +68,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han world.playSound(null, user.getBlockPos(), SoundRegistry.SPELL_FIRE.get(), user.getSoundCategory(), 0.5f, 1.0f); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.FRENZY, effectDuration, 0)); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FRENZY), effectDuration, 0)); user.getItemCooldownManager().set(this, skillCooldown); return super.use(world, user, hand); diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java index 4bc5a61c..045ce1ab 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/LivingEntityMixin.java @@ -59,13 +59,13 @@ public abstract class LivingEntityMixin { private float simplyswords$modifyDamageAmount(float amount, DamageSource source) { LivingEntity livingEntity = (LivingEntity) (Object) this; if (!livingEntity.getWorld().isClient()) { - StatusEffectInstance voidcloakEffect = livingEntity.getStatusEffect(EffectRegistry.VOIDCLOAK); - StatusEffectInstance ribbonwrathEffect = livingEntity.getStatusEffect(EffectRegistry.RIBBONWRATH); + StatusEffectInstance voidcloakEffect = livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.VOIDCLOAK)); + StatusEffectInstance ribbonwrathEffect = livingEntity.getStatusEffect(EffectRegistry.getReference(EffectRegistry.RIBBONWRATH)); if (voidcloakEffect != null) { int amplifier = voidcloakEffect.getAmplifier(); float reductionFactor = 1 - (amplifier + 1) * 0.10f; // +1 because amplifier starts at 0 amount *= reductionFactor; - HelperMethods.decrementStatusEffect(livingEntity, EffectRegistry.VOIDCLOAK); + HelperMethods.decrementStatusEffect(livingEntity, EffectRegistry.getReference(EffectRegistry.VOIDCLOAK)); } if (ribbonwrathEffect != null) { float reductionFactor = 0.85f; diff --git a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java index 21dc0281..28ae1c7c 100644 --- a/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java +++ b/common/src/main/java/net/sweenus/simplyswords/mixin/ServerPlayerEntityMixin.java @@ -49,21 +49,21 @@ public abstract class ServerPlayerEntityMixin { if (player instanceof ServerPlayerEntity serverPlayer) { //Effect Resilience - if (serverPlayer.hasStatusEffect(EffectRegistry.RESILIENCE)) { - HelperMethods.decrementStatusEffect(serverPlayer, EffectRegistry.RESILIENCE); + if (serverPlayer.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.RESILIENCE))) { + HelperMethods.decrementStatusEffect(serverPlayer, EffectRegistry.getReference(EffectRegistry.RESILIENCE)); cir.setReturnValue(false); - if (!player.hasStatusEffect(EffectRegistry.MAGISLAM)) + if (!player.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.MAGISLAM))) serverPlayer.getWorld().playSoundFromEntity(null, serverPlayer, SoundRegistry.MAGIC_SWORD_PARRY_03.get(), SoundCategory.PLAYERS, 0.7f, 0.5f + (serverPlayer.getRandom().nextBetween(1, 5) * 0.1f)); } - if (serverPlayer.hasStatusEffect(EffectRegistry.ASTRAL_SHIFT)) { - StatusEffectInstance astralShiftInstance = player.getStatusEffect(EffectRegistry.ASTRAL_SHIFT); + if (serverPlayer.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT))) { + StatusEffectInstance astralShiftInstance = player.getStatusEffect(EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT)); if (astralShiftInstance != null) { int duration = astralShiftInstance.getDuration(); if (duration > 10) { - HelperMethods.incrementStatusEffect(serverPlayer, EffectRegistry.ASTRAL_SHIFT, duration, (int) Math.max(1, (amount / 10)), 99); + HelperMethods.incrementStatusEffect(serverPlayer, EffectRegistry.getReference(EffectRegistry.ASTRAL_SHIFT), duration, (int) Math.max(1, (amount / 10)), 99); AbilityMethods.astralShiftSounds(serverPlayer); cir.setReturnValue(false); } @@ -105,7 +105,7 @@ public abstract class ServerPlayerEntityMixin { if (serverPlayer.getMainHandStack().isOf(ItemsRegistry.RIBBONCLEAVER.get()) || serverPlayer.getMainHandStack().isOf(ItemsRegistry.ENIGMA.get())) { int frequency = 6; if (serverPlayer.age % 20 == 0 && serverPlayer.getMainHandStack().isOf(ItemsRegistry.RIBBONCLEAVER.get())) - serverPlayer.addStatusEffect(new StatusEffectInstance(EffectRegistry.RIBBONWRATH, + serverPlayer.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.RIBBONWRATH), 30, 0, true, false, false)); if (player.age % frequency == 0 && player.isSprinting() && player.isOnGround()) { @@ -250,8 +250,8 @@ else if (serverPlayer.getInventory().getStack(i).isOf(ItemsRegistry.TAMPERED_REM if (!target.handleAttack(player)) { ServerWorld serverWorld = (ServerWorld) player.getWorld(); //Ribboncleaver Cleave buff - if (serverPlayer.hasStatusEffect(EffectRegistry.RIBBONCLEAVE)) { - serverPlayer.removeStatusEffect(EffectRegistry.RIBBONCLEAVE); + if (serverPlayer.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.RIBBONCLEAVE))) { + serverPlayer.removeStatusEffect(EffectRegistry.getReference(EffectRegistry.RIBBONCLEAVE)); HelperMethods.spawnOrbitParticles(serverWorld, target.getPos().add(0, 0.3, 0), ParticleTypes.POOF, 0.5, 6); HelperMethods.spawnOrbitParticles(serverWorld, target.getPos().add(0, 0.5, 0), diff --git a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java index d425a342..8a736eb8 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/GemPower.java @@ -16,6 +16,14 @@ import java.util.List; import java.util.function.Consumer; +/** + * A Runic, Nether, or other type of gem power + *

+ * For the pre-existing gem types, it's best to use the subclasses made for that purpose + * @see RunicGemPower + * @see RunefusedGemPower + * @see NetherGemPower + */ public class GemPower implements TooltipAppender { public GemPower(boolean isGreater, PowerType... applicableTypes) { diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java index 3670f20f..d2e7d414 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/EchoPower.java @@ -22,7 +22,7 @@ public EchoPower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { int amp = HelperMethods.isUniqueTwohanded(stack) ? 2 : 0; - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.ECHO, 20, amp), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.ECHO), 20, amp), attacker); } @Override diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java index 4a63e492..b718ac30 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/FreezePower.java @@ -32,7 +32,7 @@ public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, duration, 1), attacker); if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, freezeDuration, 1), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FREEZE), freezeDuration, 1), attacker); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.1f, 1.8f); } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java index f39ce4ba..325c923d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/ImmolationPower.java @@ -25,7 +25,7 @@ public ImmolationPower() { @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { user.setCurrentHand(hand); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 36000, 0), user); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.IMMOLATION), 36000, 0), user); user.getItemCooldownManager().set(itemStack.getItem(), 40); world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), user.getSoundCategory(), 0.3f, 0.6f); diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java index e070ff83..6a55f652 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/NullificationPower.java @@ -27,7 +27,7 @@ public NullificationPower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (!attacker.hasStatusEffect(EffectRegistry.BATTLE_FATIGUE)) { + if (!attacker.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.BATTLE_FATIGUE))) { if (!attacker.getWorld().isClient()) { ServerWorld serverWorld = (ServerWorld) attacker.getWorld(); BlockState currentState = serverWorld.getBlockState(attacker.getBlockPos().up(4).offset(attacker.getMovementDirection(), 3)); @@ -46,7 +46,7 @@ public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) banner.standardType = "nullification"; banner.setCustomName(Text.translatable("entity.simplyswords.battlestandard.name", attacker.getName())); } - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.BATTLE_FATIGUE, 800, 0), attacker); + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.BATTLE_FATIGUE), 800, 0), attacker); } } } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java index ae1b3b6f..180b05ce 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/OnslaughtPower.java @@ -22,7 +22,7 @@ public OnslaughtPower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (target.hasStatusEffect(StatusEffects.SLOWNESS) && !attacker.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.ONSLAUGHT, 80, 0), attacker); + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.ONSLAUGHT), 80, 0), attacker); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java index ea61f3f6..d7bf4d38 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/RadiancePower.java @@ -22,7 +22,7 @@ public RadiancePower() { @Override public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { if (target.hasStatusEffect(StatusEffects.WEAKNESS)) { - attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.IMMOLATION, 200, 4), attacker); + attacker.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.IMMOLATION), 200, 4), attacker); } } diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java index 81e3042f..69e51ba0 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WardPower.java @@ -25,7 +25,7 @@ public WardPower() { @Override public TypedActionResult use(World world, PlayerEntity user, Hand hand, ItemStack itemStack) { user.setCurrentHand(hand); - user.addStatusEffect(new StatusEffectInstance(EffectRegistry.WARD, 120, 0), user); + user.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.WARD), 120, 0), user); user.getItemCooldownManager().set(itemStack.getItem(), 120); user.setHealth(user.getHealth() / 2); world.playSoundFromEntity(null, user, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), diff --git a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java index 1a1e94fc..44613bea 100644 --- a/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java +++ b/common/src/main/java/net/sweenus/simplyswords/power/powers/WildfirePower.java @@ -28,7 +28,7 @@ public void postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) int duration = Config.gemPowers.wildfire.duration; if (attacker.getRandom().nextInt(100) <= hitChance) { - target.addStatusEffect(new StatusEffectInstance(EffectRegistry.WILDFIRE, duration, 3), attacker); + target.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.WILDFIRE), duration, 3), attacker); attacker.getWorld().playSoundFromEntity(null, attacker, SoundRegistry.MAGIC_SWORD_SPELL_02.get(), attacker.getSoundCategory(), 0.1f, 1.8f); } diff --git a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java index 07f250b6..58d16151 100644 --- a/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java +++ b/common/src/main/java/net/sweenus/simplyswords/registry/EffectRegistry.java @@ -7,6 +7,7 @@ import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.util.Identifier; import net.sweenus.simplyswords.SimplySwords; import net.sweenus.simplyswords.config.Config; @@ -40,6 +41,12 @@ public class EffectRegistry { public static final DeferredRegister EFFECT = DeferredRegister.create(SimplySwords.MOD_ID, RegistryKeys.STATUS_EFFECT); + //This is currently REQUIRED as a wrapper around a call to one of the effects below, since Architectury has a bug involving RegistrySuppliers not being able to save properly. + //Once they fix that bug, this could be removed (but also works fine as is) + public static RegistryEntry getReference(RegistrySupplier input) { + return EFFECT.getRegistrar().getHolder(input.getId()); + } + public static final RegistrySupplier WILDFIRE = EFFECT.register("wildfire", () -> new WildfireEffect(StatusEffectCategory.HARMFUL, 1124687)); public static final RegistrySupplier STORM = EFFECT.register("storm", () -> diff --git a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java index a1661e7e..430a05fc 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/AbilityMethods.java @@ -94,7 +94,7 @@ public static void tickAbilityStorm(ItemStack stack, World world, LivingEntity u if ((entity instanceof LivingEntity ee)) { if (HelperMethods.checkFriendlyFire(ee, user) && choose > 0.7) { var stormtarget = ee.getBlockPos(); - ee.addStatusEffect(new StatusEffectInstance(EffectRegistry.FREEZE, frequency+5, 0), user); + ee.addStatusEffect(new StatusEffectInstance(EffectRegistry.getReference(EffectRegistry.FREEZE), frequency+5, 0), user); LightningEntity storm = EntityType.LIGHTNING_BOLT.spawn(sworld, stormtarget, SpawnReason.TRIGGERED); if (storm != null) { storm.setCosmetic(true); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java index e51d4144..0b4d685d 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/HelperMethods.java @@ -52,8 +52,6 @@ public static Random random() { return random; } - - /* * getTargetedEntity taken heavily from ZsoltMolnarrr's CombatSpells * https://github.com/ZsoltMolnarrr/SpellEngine/blob/1.19.2/common/src/main/java/net/spell_engine/utils/TargetHelper.java#L136 @@ -75,45 +73,6 @@ public static boolean isWalking(Entity entity) { return entity instanceof PlayerEntity player && (!player.isDead() && (player.isSwimming() || player.getVelocity().horizontalLength() > 0.1)); } - private static final int rgbCommon = 0xFFFFFF; - private static final int rgbRunic = 0x9D62CA; - private static final int rgbUnique = 0xE2A834; - private static final int rgbLegendary = 0xE26234; - private static final int rgbAbility = 0xE2A834; - private static final int rgbRightClick = 0x20BD69; - private static final int rgbCorrupted = 0x544988; - private static final int rgbCorruptedLight = 0x7140A3; - private static final int rgbCorruptedAbility = 0xA987C2; - private static final int rgbCorruptedText = 0x7E7883; - private static final int rgbText = 0xE0E0E0; - private static final Style COMMON = Style.EMPTY.withColor(TextColor.fromRgb(rgbCommon)); - private static final Style UNIQUE = Style.EMPTY.withColor(TextColor.fromRgb(rgbUnique)); - private static final Style LEGENDARY = Style.EMPTY.withColor(TextColor.fromRgb(rgbLegendary)); - private static final Style ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbAbility)); - private static final Style RIGHTCLICK = Style.EMPTY.withColor(TextColor.fromRgb(rgbRightClick)); - private static final Style RUNIC = Style.EMPTY.withColor(TextColor.fromRgb(rgbRunic)); - private static final Style CORRUPTED = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorrupted)); - private static final Style CORRUPTED_LIGHT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedLight)); - private static final Style CORRUPTED_ABILITY = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedAbility)); - private static final Style CORRUPTED_TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbCorruptedText)); - private static final Style TEXT = Style.EMPTY.withColor(TextColor.fromRgb(rgbText)); - - public static Style getStyle(String styleType) { - - return switch (styleType) { - case "unique" -> UNIQUE; - case "legendary" -> LEGENDARY; - case "ability" -> ABILITY; - case "rightclick" -> RIGHTCLICK; - case "runic" -> RUNIC; - case "corrupted" -> CORRUPTED; - case "corrupted_light" -> CORRUPTED_LIGHT; - case "corrupted_ability" -> CORRUPTED_ABILITY; - case "corrupted_text" -> CORRUPTED_TEXT; - case "text" -> TEXT; - default -> COMMON; - }; - } //Check if we should be able to hit the target public static boolean checkFriendlyFire(LivingEntity target, LivingEntity attacker) { diff --git a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java index e40eedab..6cda21ba 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/ModLootTableModifiers.java @@ -21,6 +21,7 @@ public class ModLootTableModifiers { + //supplies a list of every unique sword item currently registered private static final Supplier> swords = Suppliers.memoize(() -> Registries.ITEM.stream().filter(it -> it instanceof UniqueSwordItem).toList()); diff --git a/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java b/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java index a7429660..25179bba 100644 --- a/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java +++ b/common/src/main/java/net/sweenus/simplyswords/util/SoundHelper.java @@ -33,7 +33,7 @@ public static void loopSound(LivingEntity entity, Identifier soundId, int soundD // Schedule the sound to play repeatedly scheduler.scheduleAtFixedRate(() -> { - if (entity.isAlive() && entity.hasStatusEffect(EffectRegistry.ELEMENTAL_VORTEX)) { + if (entity.isAlive() && entity.hasStatusEffect(EffectRegistry.getReference(EffectRegistry.ELEMENTAL_VORTEX))) { playSound(serverWorld, entity, soundEvent); } else { stopLoopingSound(entity, soundId); // Stop the scheduler if the entity is no longer valid diff --git a/gradle.properties b/gradle.properties index 1dde51ba..05dda00d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ archives_name=simplyswords mod_version=1.57.0-1.21.1 maven_group=net.sweenus -architectury_api_version=13.0.2 +architectury_api_version=13.0.8 fabric_loader_version=0.16.5 fabric_api_version=0.102.0+1.21.1 From 40c9714f196b2a79a8f2163286d387b9768f6d2f Mon Sep 17 00:00:00 2001 From: fzzyhmstrs Date: Sat, 16 Nov 2024 21:55:30 -0500 Subject: [PATCH 33/37] fully remove cloth from build scripts --- common/build.gradle | 3 --- fabric/build.gradle | 3 --- forge/build.gradle | 2 -- gradle.properties | 1 - 4 files changed, 9 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index 76938f8d..34caae4e 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -40,9 +40,6 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" // Remove the next line if you don't want to depend on the API modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" - modApi("me.shedaniel.cloth:cloth-config:${rootProject.cloth_config_version}") { - exclude(group: "net.fabricmc.fabric-api") - } modImplementation "curse.maven:necronomicon-586157:${rootProject.necronomicon_version}" modImplementation "me.fzzyhmstrs:fzzy_config:${project.fzz_config_version}" diff --git a/fabric/build.gradle b/fabric/build.gradle index 19f76e1c..3424a9f5 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -64,9 +64,6 @@ modImplementation "curse.maven:mythicmetals-410127:5660718" modImplementation "maven.modrinth:spell-power:${rootProject.spellpower_version}-fabric" //modImplementation "curse.maven:lambdynamiclights-393442:${rootProject.lambdynlights_version}" 1.21 //include modImplementation("dev.lambdaurora:spruceui:${rootProject.spruceui_version}") 1.21 - modApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}") { - exclude(group: "net.fabricmc.fabric-api") - } //modImplementation "curse.maven:eldritch-end-877553:${rootProject.eldritch_end_version}" 1.21 // Amethyst Imbuement diff --git a/forge/build.gradle b/forge/build.gradle index 39f8e7ce..392e6297 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -47,8 +47,6 @@ configurations { } dependencies { - modApi("me.shedaniel.cloth:cloth-config-forge:${rootProject.cloth_config_version}") - //Patchouli modImplementation ("vazkii.patchouli:Patchouli:1.21-87-NEOFORGE") diff --git a/gradle.properties b/gradle.properties index 05dda00d..f28b5433 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,7 +22,6 @@ mixin_extras_version=0.5.0-beta.3 spellpower_version=1.0.2+1.21.1 lambdynlights_version=4597897 spruceui_version=5.0.0+1.20 -cloth_config_version=15.0.130 fzz_config_version=0.5.6+1.21 mod_menu_version=11.0.2 eldritch_end_version=5035580 From b7f65f25b469e13d8e1a06ea0f653ccaa5c092c8 Mon Sep 17 00:00:00 2001 From: Heimdallr-1 Date: Sat, 14 Dec 2024 18:12:29 +0500 Subject: [PATCH 34/37] Update ru_ru.json --- .../assets/simplyswords/lang/ru_ru.json | 2383 +++++++++++------ 1 file changed, 1592 insertions(+), 791 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json index 0d25f181..e75e8d11 100644 --- a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json +++ b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json @@ -1,793 +1,1594 @@ { - "item.simplyswords.iron_cutlass": "Железная Сабля", - "item.simplyswords.gold_cutlass": "Золотая Сабля", - "item.simplyswords.diamond_cutlass": "Алмазная Сабля", - "item.simplyswords.netherite_cutlass": "Незеритовая Сабля", - "item.simplyswords.runic_rapier": "Руническая Рапира", - "item.simplyswords.netherite_rapier": "Незеритовая Рапира", - "item.simplyswords.diamond_rapier": "Алмазная Рапира", - "item.simplyswords.gold_rapier": "Золотая Рапира", - "item.simplyswords.iron_rapier": "Железная Рапира", - "item.simplyswords.iron_glaive": "Железная Глефа", - "item.simplyswords.gold_glaive": "Золотая Глефа", - "item.simplyswords.diamond_glaive": "Алмазная Глефа", - "item.simplyswords.netherite_glaive": "Незеритовая Глефа", - "item.simplyswords.iron_warglaive": "Железная Боевая Глефа", - "item.simplyswords.gold_warglaive": "Золотая Боевая Глефа", - "item.simplyswords.diamond_warglaive": "Алмазная Боевая Глефа", - "item.simplyswords.netherite_warglaive": "Незеритовая Боевая Глефа", - "item.simplyswords.iron_spear": "Железное Копьё", - "item.simplyswords.gold_spear": "Золотое Копьё", - "item.simplyswords.diamond_spear": "Алмазное Копьё", - "item.simplyswords.netherite_spear": "Незеритовое Копьё", - "item.simplyswords.iron_sai": "Железная Сая", - "item.simplyswords.diamond_sai": "Алмазная Сая", - "item.simplyswords.gold_sai": "Золотая Сая", - "item.simplyswords.netherite_sai": "Незеритовая Сая", - "item.simplyswords.iron_halberd": "Железная Алебарда", - "item.simplyswords.gold_halberd": "Золотая Алебарда", - "item.simplyswords.diamond_halberd": "Алмазная Алебарда", - "item.simplyswords.netherite_halberd": "Незеритовая Алебарда", - "item.simplyswords.runic_halberd": "Руническая Алебарда", - "item.simplyswords.iron_katana": "Железная Катана", - "item.simplyswords.gold_katana": "Золотая Катана", - "item.simplyswords.diamond_katana": "Алмазная Катана", - "item.simplyswords.netherite_katana": "Незеритовая Катана", - "item.simplyswords.runic_cutlass": "Руническая Сабля", - "item.simplyswords.runic_katana": "Руническая Катана", - "item.simplyswords.runic_sai": "Руническая Сая", - "item.simplyswords.diamond_claymore": "Алмазный Клеймор", - "item.simplyswords.netherite_claymore": "Незеритовый Клеймор", - "item.simplyswords.runic_claymore": "Рунический Клеймор", - "item.simplyswords.watcher_claymore": "Смотритель", - "item.simplyswords.brimstone_claymore": "Пламенный Клеймор", - "item.simplyswords.gold_claymore": "Золотой Клеймор", - "item.simplyswords.iron_claymore": "Железный Клеймор", - "item.simplyswords.runic_longsword": "Рунический Длинный меч", - "item.simplyswords.watching_warglaive": "Смотрящая Боевая Глефа", - "item.simplyswords.iron_longsword": "Железный Длинный меч", - "item.simplyswords.gold_longsword": "Золотой Длинный меч", - "item.simplyswords.diamond_longsword": "Алмазный Длинный меч", - "item.simplyswords.netherite_longsword": "Незеритовый Длинный меч", - "item.simplyswords.toxic_longsword": "Чумной Длинный Меч", - "item.simplyswords.runic_twinblade": "Рунический Двойной клинок", - "item.simplyswords.runic_glaive": "Руническая Глефа", - "item.simplyswords.runic_spear": "Руническое Копьё", - "item.simplyswords.runic_warglaive": "Руническая Боевая Глефа", - "item.simplyswords.runic_greathammer": "Рунический Большой Молот", - "item.simplyswords.runic_greataxe": "Рунический Большой Топор", - "item.simplyswords.iron_twinblade": "Железный Двойной Клинок", - "item.simplyswords.gold_twinblade": "Золотой Двойной Клинок", - "item.simplyswords.diamond_twinblade": "Алмазный Двойной Клинок", - "item.simplyswords.netherite_twinblade": "Незеритовый Двойной Клинок", - "item.simplyswords.iron_greathammer": "Железный Большой Молот", - "item.simplyswords.gold_greathammer": "Золотой Большой Молот", - "item.simplyswords.diamond_greathammer": "Алмазный Большой Молот", - "item.simplyswords.netherite_greathammer": "Незеритовый Большой Молот", - "item.simplyswords.iron_greataxe": "Железный Большой Топор", - "item.simplyswords.gold_greataxe": "Золотой Большой Топор", - "item.simplyswords.diamond_greataxe": "Алмазный Большой Топор", - "item.simplyswords.netherite_greataxe": "Незеритовый Большой Топор", - "item.simplyswords.iron_chakram": "Железный Чакрам", - "item.simplyswords.gold_chakram": "Золотой Чакрам", - "item.simplyswords.diamond_chakram": "Алмазный Чакрам", - "item.simplyswords.netherite_chakram": "Незеритовый Чакрам", - "item.simplyswords.iron_scythe": "Железная Коса", - "item.simplyswords.gold_scythe": "Золотая Коса", - "item.simplyswords.diamond_scythe": "Алмазная Коса", - "item.simplyswords.netherite_scythe": "Незеритовая Коса", - "item.simplyswords.runic_chakram": "Рунический Чакрам", - "item.simplyswords.runic_scythe": "Руническая Коса", - "item.simplyswords.storms_edge": "Клинок шторма", - "item.simplyswords.stormbringer": "Вестник шторма", - "item.simplyswords.sword_on_a_stick": "Меч на палке", - "item.simplyswords.bramblethorn": "Терновник", - "item.simplyswords.magic_estoc": "Зачарованная шпага", - "item.simplyswords.mjolnir": "Мьёльнир", - "item.simplyswords.emberblade": "Огненное Лезвие", - "item.simplyswords.hearthflame": "Сердце Пламени", - "item.simplyswords.twisted_blade": "Фламберг", - "item.simplyswords.twilight": "Сумеречный", - "item.simplyswords.soulkeeper": "Хранитель Душ", - "item.simplyswords.soulstealer": "Вор Душ", - "item.simplyswords.soulrender": "Душераздиратель", - "item.simplyswords.soulpyre": "Выжигатель Душ", - "item.simplyswords.frostfall": "Морозный Упадок", - "item.simplyswords.molten_edge": "Расплавленный Топор", - "item.simplyswords.livyatan": "Левиафан", - "item.simplyswords.icewhisper": "Ледяной Шепот", - "item.simplyswords.arcanethyst": "Чародей", - "item.simplyswords.thunderbrand": "Громовержец", - "item.simplyswords.sunfire": "Солнечный огонь", - "item.simplyswords.slumbering_lichblade": "Дремлющий Клинок-Лича", - "item.simplyswords.waking_lichblade": "Пробуждающийся Клинок-Лича", - "item.simplyswords.awakened_lichblade": "Пробудившийся Клинок-Лича", - "item.simplyswords.shadowsting": "Теневой укус", - "item.simplyswords.dormant_relic": "Спящая реликвия", - "item.simplyswords.righteous_relic": "Праведная реликвия", - "item.simplyswords.tainted_relic": "Порченая реликвия", - "item.simplyswords.harbinger": "Предвестник", - - "item.simplyswords.runic_tablet": "Руническая Скрижаль", - "item.simplyswords.runefused_gem": "Руноплавленная Руна", - "item.simplyswords.netherfused_gem": "Незеритоплавленная Руна", - "item.simplyswords.empowered_remnant": "Усиливающий остаток", - - - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_claymore": "Адамантитовый Клеймор", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_cutlass": "Адамантитовая Сабля", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_glaive": "Адамантитовая Глефа", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_katana": "Адамантитовая Катана", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_longsword": "Адамантитовый Длинный меч", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_rapier": "Адамантитовая Рапира", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_sai": "Адамантитовая Сая", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_spear": "Адамантитовое Копьё", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_twinblade": "Адамантитовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_warglaive": "Адамантитовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_greathammer": "Адамантитовый Большой молот", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_greataxe": "Адамантитовый Большой топор", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_chakram": "Адамантитовый Чакрам", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_scythe": "Адамантитовая Коса", - "item.simplyswords.mythicmetals_compat.adamantite.adamantite_halberd": "Адамантитовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_claymore": "Акваривый Клеймор", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_cutlass": "Акваривая Сабля", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_glaive": "Акваривая Глефа", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_katana": "Акваривая Катана", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_longsword": "Акваривый Длинный меч", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_rapier": "Акваривая Рапира", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_sai": "Акваривая Сая", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_spear": "Акваривое Копьё", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_twinblade": "Акваривый Двойной клинок", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_warglaive": "Акваривая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_greathammer": "Акваривый Большой молот", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_greataxe": "Акваривый Большой топор", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_chakram": "Акваривый Чакрам", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_scythe": "Акваривая Коса", - "item.simplyswords.mythicmetals_compat.aquarium.aquarium_halberd": "Акваривая Алебарда", - - - - "item.simplyswords.mythicmetals_compat.banglum.banglum_claymore": "Банглиевый Клеймор", - "item.simplyswords.mythicmetals_compat.banglum.banglum_cutlass": "Банглиевая Сабля", - "item.simplyswords.mythicmetals_compat.banglum.banglum_glaive": "Банглиевая Глефа", - "item.simplyswords.mythicmetals_compat.banglum.banglum_katana": "Банглиевая Катана", - "item.simplyswords.mythicmetals_compat.banglum.banglum_longsword": "Банглиевый Длинный меч", - "item.simplyswords.mythicmetals_compat.banglum.banglum_rapier": "Банглиевая Рапира", - "item.simplyswords.mythicmetals_compat.banglum.banglum_sai": "Банглиевая Сая", - "item.simplyswords.mythicmetals_compat.banglum.banglum_spear": "Банглиевое Копьё", - "item.simplyswords.mythicmetals_compat.banglum.banglum_twinblade": "Банглиевый Двойной клинок", - "item.simplyswords.mythicmetals_compat.banglum.banglum_warglaive": "Банглиевая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.banglum.banglum_greathammer": "Банглиевый Большой молот", - "item.simplyswords.mythicmetals_compat.banglum.banglum_greataxe": "Банглиевый Большой топор", - "item.simplyswords.mythicmetals_compat.banglum.banglum_chakram": "Банглиевый Чакрам", - "item.simplyswords.mythicmetals_compat.banglum.banglum_scythe": "Банглиевая Коса", - "item.simplyswords.mythicmetals_compat.banglum.banglum_halberd": "Банглиевая Алебарда", - - - "item.simplyswords.mythicmetals_compat.carmot.carmot_claymore": "Кармотовый Клеймор", - "item.simplyswords.mythicmetals_compat.carmot.carmot_cutlass": "Кармотовая Сабля", - "item.simplyswords.mythicmetals_compat.carmot.carmot_glaive": "Кармотовая Глефа", - "item.simplyswords.mythicmetals_compat.carmot.carmot_katana": "Кармотовая Катана", - "item.simplyswords.mythicmetals_compat.carmot.carmot_longsword": "Кармотовый Длинный меч", - "item.simplyswords.mythicmetals_compat.carmot.carmot_rapier": "Кармотовая Рапира", - "item.simplyswords.mythicmetals_compat.carmot.carmot_sai": "Кармотовая Сая", - "item.simplyswords.mythicmetals_compat.carmot.carmot_spear": "Кармотовое Копьё", - "item.simplyswords.mythicmetals_compat.carmot.carmot_twinblade": "Кармотовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.carmot.carmot_warglaive": "Кармотовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.carmot.carmot_greathammer": "Кармотовый Большой молот", - "item.simplyswords.mythicmetals_compat.carmot.carmot_greataxe": "Кармотовый Большой топор", - "item.simplyswords.mythicmetals_compat.carmot.carmot_chakram": "Кармотовый Чакрам", - "item.simplyswords.mythicmetals_compat.carmot.carmot_scythe": "Кармотовая Коса", - "item.simplyswords.mythicmetals_compat.carmot.carmot_halberd": "Кармотовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.kyber.kyber_claymore": "Кьюберевый Клеймор", - "item.simplyswords.mythicmetals_compat.kyber.kyber_cutlass": "Кьюберевая Сабля", - "item.simplyswords.mythicmetals_compat.kyber.kyber_glaive": "Кьюберевая Глефа", - "item.simplyswords.mythicmetals_compat.kyber.kyber_katana": "Кьюберевая Катана", - "item.simplyswords.mythicmetals_compat.kyber.kyber_longsword": "Кьюберевый Длинный меч", - "item.simplyswords.mythicmetals_compat.kyber.kyber_rapier": "Кьюберевая Рапира", - "item.simplyswords.mythicmetals_compat.kyber.kyber_Сая": "Кьюберевая Сая", - "item.simplyswords.mythicmetals_compat.kyber.kyber_spear": "Кьюберевое Копьё", - "item.simplyswords.mythicmetals_compat.kyber.kyber_twinblade": "Кьюберевый Двойной клинок", - "item.simplyswords.mythicmetals_compat.kyber.kyber_warglaive": "Кьюберевая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.kyber.kyber_greathammer": "Кьюберевый Большой молот", - "item.simplyswords.mythicmetals_compat.kyber.kyber_greataxe": "Кьюберевый Большой топор", - "item.simplyswords.mythicmetals_compat.kyber.kyber_chakram": "Кьюберевый Чакрам", - "item.simplyswords.mythicmetals_compat.kyber.kyber_scythe": "Кьюберевая Коса", - "item.simplyswords.mythicmetals_compat.kyber.kyber_halberd": "Кьюберевая Алебарда", - - - "item.simplyswords.mythicmetals_compat.mythril.mythril_claymore": "Мифриловый Клеймор", - "item.simplyswords.mythicmetals_compat.mythril.mythril_cutlass": "Мифриловая Сабля", - "item.simplyswords.mythicmetals_compat.mythril.mythril_glaive": "Мифриловая Глефа", - "item.simplyswords.mythicmetals_compat.mythril.mythril_katana": "Мифриловая Катана", - "item.simplyswords.mythicmetals_compat.mythril.mythril_longsword": "Мифриловый Длинный меч", - "item.simplyswords.mythicmetals_compat.mythril.mythril_rapier": "Мифриловая Рапира", - "item.simplyswords.mythicmetals_compat.mythril.mythril_sai": "Мифриловая Сая", - "item.simplyswords.mythicmetals_compat.mythril.mythril_spear": "Мифриловое Копьё", - "item.simplyswords.mythicmetals_compat.mythril.mythril_twinblade": "Мифриловый Двойной клинок", - "item.simplyswords.mythicmetals_compat.mythril.mythril_warglaive": "Мифриловая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.mythril.mythril_greathammer": "Мифриловый Большой молот", - "item.simplyswords.mythicmetals_compat.mythril.mythril_greataxe": "Мифриловый Большой топор", - "item.simplyswords.mythicmetals_compat.mythril.mythril_chakram": "Мифриловый Чакрам", - "item.simplyswords.mythicmetals_compat.mythril.mythril_scythe": "Мифриловая Коса", - "item.simplyswords.mythicmetals_compat.mythril.mythril_halberd": "Мифриловая Алебарда", - - - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_claymore": "Орихалковый Клеймор", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_cutlass": "Орихалковая Сабля", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_glaive": "Орихалковая Глефа", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_katana": "Орихалковая Катана", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_longsword": "Орихалковый Длинный меч", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_rapier": "Орихалковая Рапира", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_sai": "Орихалковая Сая", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_spear": "Орихалковое Копьё", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_twinblade": "Орихалковый Двойной клинок", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_warglaive": "Орихалковая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_greathammer": "Орихалковый Большой молот", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_greataxe": "Орихалковый Большой топор", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_chakram": "Орихалковый Чакрам", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_scythe": "Орихалковая Коса", - "item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_halberd": "Орихалковая Алебарда", - - - "item.simplyswords.mythicmetals_compat.osmium.osmium_claymore": "Осмиевый Клеймор", - "item.simplyswords.mythicmetals_compat.osmium.osmium_cutlass": "Осмиевая Сабля", - "item.simplyswords.mythicmetals_compat.osmium.osmium_glaive": "Осмиевая Глефа", - "item.simplyswords.mythicmetals_compat.osmium.osmium_katana": "Осмиевая Катана", - "item.simplyswords.mythicmetals_compat.osmium.osmium_longsword": "Осмиевый Длинный меч", - "item.simplyswords.mythicmetals_compat.osmium.osmium_rapier": "Осмиевая Рапира", - "item.simplyswords.mythicmetals_compat.osmium.osmium_sai": "Осмиевая Сая", - "item.simplyswords.mythicmetals_compat.osmium.osmium_spear": "Осмиевое Копьё", - "item.simplyswords.mythicmetals_compat.osmium.osmium_twinblade": "Осмиевый Двойной клинок", - "item.simplyswords.mythicmetals_compat.osmium.osmium_warglaive": "Осмиевая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.osmium.osmium_greathammer": "Осмиевый Большой молот", - "item.simplyswords.mythicmetals_compat.osmium.osmium_greataxe": "Осмиевый Большой топор", - "item.simplyswords.mythicmetals_compat.osmium.osmium_chakram": "Осмиевый Чакрам", - "item.simplyswords.mythicmetals_compat.osmium.osmium_scythe": "Осмиевая Коса", - "item.simplyswords.mythicmetals_compat.osmium.osmium_halberd": "Осмиевая Алебарда", - - - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_claymore": "Прометиумовый Клеймор", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_cutlass": "Прометиумовая Сабля", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_glaive": "Прометиумовая Глефа", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_katana": "Прометиумовая Катана", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_longsword": "Прометиумовый Длинный меч", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_rapier": "Прометиумовая Рапира", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_sai": "Прометиумовая Сая", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_spear": "Прометиумовое Копьё", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_twinblade": "Прометиумовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_warglaive": "Прометиумовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_greathammer": "Прометиумовый Большой молот", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_greataxe": "Прометиумовый Большой топор", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_chakram": "Прометиумовый Чакрам", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_scythe": "Прометиумовая Коса", - "item.simplyswords.mythicmetals_compat.prometheum.prometheum_halberd": "Прометиумовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_claymore": "Квадриливый Клеймор", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_cutlass": "Квадриливая Сабля", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_glaive": "Квадриливая Глефа", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_katana": "Квадриливая Катана", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_longsword": "Квадриливый Длинный меч", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_rapier": "Квадриливая Рапира", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_sai": "Квадриливая Сая", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_spear": "Квадриливое Копьё", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_twinblade": "Квадриливый Двойной клинок", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_warglaive": "Квадриливая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_greathammer": "Квадриливый Большой молот", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_greataxe": "Квадриливый Большой топор", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_chakram": "Квадриливый Чакрам", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_scythe": "Квадриливая Коса", - "item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_halberd": "Квадриливая Алебарда", - - - "item.simplyswords.mythicmetals_compat.runite.runite_claymore": "Рунитовый Клеймор", - "item.simplyswords.mythicmetals_compat.runite.runite_cutlass": "Рунитовая Сабля", - "item.simplyswords.mythicmetals_compat.runite.runite_glaive": "Рунитовая Глефа", - "item.simplyswords.mythicmetals_compat.runite.runite_katana": "Рунитовая Катана", - "item.simplyswords.mythicmetals_compat.runite.runite_longsword": "Рунитовый Длинный меч", - "item.simplyswords.mythicmetals_compat.runite.runite_rapier": "Рунитовая Рапира", - "item.simplyswords.mythicmetals_compat.runite.runite_sai": "Рунитовая Сая", - "item.simplyswords.mythicmetals_compat.runite.runite_spear": "Рунитовое Копьё", - "item.simplyswords.mythicmetals_compat.runite.runite_twinblade": "Рунитовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.runite.runite_warglaive": "Рунитовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.runite.runite_greathammer": "Рунитовый Большой молот", - "item.simplyswords.mythicmetals_compat.runite.runite_greataxe": "Рунитовый Большой топор", - "item.simplyswords.mythicmetals_compat.runite.runite_chakram": "Рунитовый Чакрам", - "item.simplyswords.mythicmetals_compat.runite.runite_scythe": "Рунитовая Коса", - "item.simplyswords.mythicmetals_compat.runite.runite_halberd": "Рунитовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_claymore": "Звёздный Клеймор", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_cutlass": "Звёздная Сабля", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_glaive": "Звёздная Глефа", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_katana": "Звёздная Катана", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_longsword": "Звёздный Длинный меч", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_rapier": "Звёздная Рапира", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_sai": "Звёздная Сая", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_spear": "Звёздное Копьё", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_twinblade": "Звёздный Двойной клинок", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_warglaive": "Звёздная Боевая Глефа", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_greathammer": "Звёздный Большой молот", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_greataxe": "Звёздный Большой топор", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_chakram": "Звёздный Чакрам", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_scythe": "Звёздная Коса", - "item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_halberd": "Звёздная Алебарда", - - - "item.simplyswords.mythicmetals_compat.bronze.bronze_claymore": "Бронзовый Клеймор", - "item.simplyswords.mythicmetals_compat.bronze.bronze_cutlass": "Бронзовая Сабля", - "item.simplyswords.mythicmetals_compat.bronze.bronze_glaive": "Бронзовая Глефа", - "item.simplyswords.mythicmetals_compat.bronze.bronze_katana": "Бронзовая Катана", - "item.simplyswords.mythicmetals_compat.bronze.bronze_longsword": "Бронзовый Длинный меч", - "item.simplyswords.mythicmetals_compat.bronze.bronze_rapier": "Бронзовая Рапира", - "item.simplyswords.mythicmetals_compat.bronze.bronze_sai": "Бронзовая Сая", - "item.simplyswords.mythicmetals_compat.bronze.bronze_spear": "Бронзовое Копьё", - "item.simplyswords.mythicmetals_compat.bronze.bronze_twinblade": "Бронзовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.bronze.bronze_warglaive": "Бронзовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.bronze.bronze_greathammer": "Бронзовый Большой молот", - "item.simplyswords.mythicmetals_compat.bronze.bronze_greataxe": "Бронзовыый Большой топор", - "item.simplyswords.mythicmetals_compat.bronze.bronze_chakram": "Бронзовый Чакрам", - "item.simplyswords.mythicmetals_compat.bronze.bronze_scythe": "Бронзовая Коса", - "item.simplyswords.mythicmetals_compat.bronze.bronze_halberd": "Бронзовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.palladium.palladium_claymore": "Палладиевый Клеймор", - "item.simplyswords.mythicmetals_compat.palladium.palladium_cutlass": "Палладиевая Сабля", - "item.simplyswords.mythicmetals_compat.palladium.palladium_glaive": "Палладиевая Глефа", - "item.simplyswords.mythicmetals_compat.palladium.palladium_katana": "Палладиевая Катана", - "item.simplyswords.mythicmetals_compat.palladium.palladium_longsword": "Палладиевый Длинный меч", - "item.simplyswords.mythicmetals_compat.palladium.palladium_rapier": "Палладиевая Рапира", - "item.simplyswords.mythicmetals_compat.palladium.palladium_sai": "Палладиевая Сая", - "item.simplyswords.mythicmetals_compat.palladium.palladium_spear": "Палладиевое Копьё", - "item.simplyswords.mythicmetals_compat.palladium.palladium_twinblade": "Палладиевый Двойной клинок", - "item.simplyswords.mythicmetals_compat.palladium.palladium_warglaive": "Палладиевая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.palladium.palladium_greathammer": "Палладиевый Большой молот", - "item.simplyswords.mythicmetals_compat.palladium.palladium_greataxe": "Палладиевый Большой топор", - "item.simplyswords.mythicmetals_compat.palladium.palladium_chakram": "Палладиевый Чакрам", - "item.simplyswords.mythicmetals_compat.palladium.palladium_scythe": "Палладиевая Коса", - "item.simplyswords.mythicmetals_compat.palladium.palladium_halberd": "Палладиевая Алебарда", - - - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_claymore": "Штормиксовый Клеймор", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_cutlass": "Штормиксовая Сабля", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_glaive": "Штормиксовая Глефа", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_katana": "Штормиксовая Катана", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_longsword": "Штормиксовый Длинный меч", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_rapier": "Штормиксовая Рапира", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_sai": "Штормиксовая Сая", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_spear": "Штормиксовое Копьё", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_twinblade": "Штормиксовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_warglaive": "Штормиксовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_greathammer": "Штормиксовый Большой молот", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_greataxe": "Штормиксовый Большой топор", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_chakram": "Штормиксовый Чакрам", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_scythe": "Штормиксовая Коса", - "item.simplyswords.mythicmetals_compat.stormyx.stormyx_halberd": "Штормиксовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.steel.steel_claymore": "Стальной Клеймор", - "item.simplyswords.mythicmetals_compat.steel.steel_cutlass": "Стальная Сабля", - "item.simplyswords.mythicmetals_compat.steel.steel_glaive": "Стальная Глефа", - "item.simplyswords.mythicmetals_compat.steel.steel_katana": "Стальная Катана", - "item.simplyswords.mythicmetals_compat.steel.steel_longsword": "Стальной Длинный меч", - "item.simplyswords.mythicmetals_compat.steel.steel_rapier": "Стальная Рапира", - "item.simplyswords.mythicmetals_compat.steel.steel_sai": "Стальная Сая", - "item.simplyswords.mythicmetals_compat.steel.steel_spear": "Стальное Копьё", - "item.simplyswords.mythicmetals_compat.steel.steel_twinblade": "Стальной Двойной клинок", - "item.simplyswords.mythicmetals_compat.steel.steel_warglaive": "Стальная Боевая Глефа", - "item.simplyswords.mythicmetals_compat.steel.steel_greathammer": "Стальной Большой молот", - "item.simplyswords.mythicmetals_compat.steel.steel_greataxe": "Стальной Большой топор", - "item.simplyswords.mythicmetals_compat.steel.steel_chakram": "Стальной Чакрам", - "item.simplyswords.mythicmetals_compat.steel.steel_scythe": "Стальная Коса", - "item.simplyswords.mythicmetals_compat.steel.steel_halberd": "Стальная Алебарда", - - - "item.simplyswords.mythicmetals_compat.celestium.celestium_claymore": "Селестиумовый Клеймор", - "item.simplyswords.mythicmetals_compat.celestium.celestium_cutlass": "Селестиумовая Сабля", - "item.simplyswords.mythicmetals_compat.celestium.celestium_glaive": "Селестиумовая Глефа", - "item.simplyswords.mythicmetals_compat.celestium.celestium_katana": "Селестиумовая Катана", - "item.simplyswords.mythicmetals_compat.celestium.celestium_longsword": "Селестиумовый Длинный меч", - "item.simplyswords.mythicmetals_compat.celestium.celestium_rapier": "Селестиумовая Рапира", - "item.simplyswords.mythicmetals_compat.celestium.celestium_sai": "Селестиумовая Сая", - "item.simplyswords.mythicmetals_compat.celestium.celestium_spear": "Селестиумовоё Копьё", - "item.simplyswords.mythicmetals_compat.celestium.celestium_twinblade": "Селестиумовый Двойной клинок", - "item.simplyswords.mythicmetals_compat.celestium.celestium_warglaive": "Селестиумовая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.celestium.celestium_greathammer": "Селестиумовый Большой молот", - "item.simplyswords.mythicmetals_compat.celestium.celestium_greataxe": "Селестиумовый Большой топор", - "item.simplyswords.mythicmetals_compat.celestium.celestium_chakram": "Селестиумовый Чакрам", - "item.simplyswords.mythicmetals_compat.celestium.celestium_scythe": "Селестиумовая Коса", - "item.simplyswords.mythicmetals_compat.celestium.celestium_halberd": "Селестиумовая Алебарда", - - - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_claymore": "Металлургиевый Клеймор", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_cutlass": "Металлургиевая Сабля", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_glaive": "Металлургиевая Глефа", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_katana": "Металлургиевая Катана", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_longsword": "Металлургиевый Длинный меч", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_rapier": "Металлургиевая Рапира", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_sai": "Металлургиевая Сая", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_spear": "Металлургиевое Копьё", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_twinblade": "Металлургиевый Двойной клинок", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_warglaive": "Металлургиевая Боевая Глефа", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_greathammer": "Металлургиевый Большой молот", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_greataxe": "Металлургиевый Большой топор", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_chakram": "Металлургиевый Чакрам", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_scythe": "Металлургиевая Коса", - "item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_halberd": "Металлургиевая Алебарда", - - - "item.simplyswords.mythicmetals_compat.copper.copper_longsword": "Медный Длинный меч", - "item.simplyswords.mythicmetals_compat.durasteel.durasteel_greathammer": "Дюрасталевой Большой молот", - - - "item.simplyswords.gobber_compat.gobber.gobber_claymore": "Gobber Клеймор", - "item.simplyswords.gobber_compat.gobber.gobber_cutlass": "Gobber Сабля", - "item.simplyswords.gobber_compat.gobber.gobber_glaive": "Gobber Глефа", - "item.simplyswords.gobber_compat.gobber.gobber_katana": "Gobber Катана", - "item.simplyswords.gobber_compat.gobber.gobber_longsword": "Gobber Длинный меч", - "item.simplyswords.gobber_compat.gobber.gobber_rapier": "Gobber Рапира", - "item.simplyswords.gobber_compat.gobber.gobber_sai": "Gobber Сая", - "item.simplyswords.gobber_compat.gobber.gobber_spear": "Gobber Копьё", - "item.simplyswords.gobber_compat.gobber.gobber_twinblade": "Gobber Двойной клинок", - "item.simplyswords.gobber_compat.gobber.gobber_warglaive": "Gobber Боевая Глефа", - "item.simplyswords.gobber_compat.gobber.gobber_greathammer": "Gobber Большой молот", - "item.simplyswords.gobber_compat.gobber.gobber_greataxe": "Gobber Большой топор", - "item.simplyswords.gobber_compat.gobber.gobber_chakram": "Gobber Чакрам", - "item.simplyswords.gobber_compat.gobber.gobber_scythe": "Gobber Коса", - - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_claymore": "Nether Клеймор", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_cutlass": "Nether Сабля", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_glaive": "Nether Глефа", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_katana": "Nether Катана", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_longsword": "Nether Длинный меч", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_rapier": "Nether Рапира", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_sai": "Nether Сая", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_spear": "Nether Копьё", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_twinblade": "Nether Двойной клинок", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_warglaive": "Nether Боевая Глефа", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_greathammer": "Nether Большой молот", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_greataxe": "Nether Большой топор", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_chakram": "Nether Чакрам", - "item.simplyswords.gobber_compat.gobber_nether.gobber_nether_scythe": "Nether Коса", - - "item.simplyswords.gobber_compat.gobber_end.gobber_end_claymore": "End Gobber Клеймор", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_cutlass": "End Gobber Сабля", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_glaive": "End Gobber Глефа", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_katana": "End Gobber Катана", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_longsword": "End Gobber Длинный меч", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_rapier": "End Gobber Рапира", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_sai": "End Gobber Сая", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_spear": "End Gobber Копьё", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_twinblade": "End Gobber Двойной клинок", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_warglaive": "End Gobber Боевая Глефа", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_greathammer": "End Gobber Большой молот", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_greataxe": "End Gobber Большой топор", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_chakram": "End Gobber Чакрам", - "item.simplyswords.gobber_compat.gobber_end.gobber_end_scythe": "End Gobber Коса", - - - "itemGroup.simplyswords.simplyswords": "Simply Swords", - "item.simplyswords.awakening": "Awakening LV: %d ", - "item.simplyswords.awakening.exp": "Awakening XP: %d%% ", - "item.simplyswords.awakening.powers": "Awakened Powers:", - "item.simplyswords.greater_runic_power": "Крупная", - "item.simplyswords.runefused_power": "Рунная Сила:", - "item.simplyswords.gem_description": "Может быть вставлен в слот для рун", - "item.simplyswords.gem_description2": "Руна вставляется в Уникальное оружие.", - "item.simplyswords.remnant_description": "Скуйте вместе с Рунической Скрижалью или", - "item.simplyswords.remnant_description2": "Слитком Незерита, чтобы создать руну", - "item.simplyswords.remnant_description3": "Которую можно вставить в уникальное", - "item.simplyswords.remnant_description4": "оружие.", - "item.simplyswords.empty_runic_slot": "[ пустое гнездо для руны ]", - "item.simplyswords.empty_nether_slot": "[ пустое гнездо для адских рун ]", - "item.simplyswords.filled_runic_slot": "[ runefused gem ]", - - "effect.simplyswords.burn": "Пламенный Шар", - "effect.simplyswords.electric": "Зарница", - "effect.simplyswords.freeze": "Заморозка", - "effect.simplyswords.omen": "Знамение", - "effect.simplyswords.watcher": "Смотрящий", - "effect.simplyswords.storm": "Шторм", - "effect.simplyswords.wildfire": "Дикий огонь", - "effect.simplyswords.echo": "Эхо", - "effect.simplyswords.ward": "Вард", - "effect.simplyswords.immolation": "Жертвоприношение", - "effect.simplyswords.onslaught": "Натиск", - - "item.simplyswords.onrightclick": "По Щелчку ПКМ:", - "item.simplyswords.firesworditem.tooltip1": "Уникальный эффект: Пламенный Шар", - "item.simplyswords.firesworditem.tooltip2": "Шанс при попадании извергнуть пламенный шар.", - - "item.simplyswords.bramblesworditem.tooltip1": "Уникальный эффект: Еживика", - "item.simplyswords.bramblesworditem.tooltip2": "Шанс при попадании выпустить облако токсичных", - "item.simplyswords.bramblesworditem.tooltip3": "спор, замедляющих и отравляющих все, что находится поблизости.", - - "item.simplyswords.stormsworditem.tooltip1": "Уникальный эффект: Гроза", - "item.simplyswords.stormsworditem.tooltip2": "Когда идет дождь / мокро: шанс при попадании", - "item.simplyswords.stormsworditem.tooltip3": "обрушить молнию с неба на ваших врагов.", - "item.simplyswords.stormsworditem.tooltip4": "Во время действия заклинания вы получаете сопротивление", - "item.simplyswords.stormsworditem.tooltip5": "и создаете локальную бурю, которая обрушивает молнии", - "item.simplyswords.stormsworditem.tooltip6": "на ближайших врагов.", - - "item.simplyswords.watchersworditem.tooltip1": "Уникальный эффект: Примета", - "item.simplyswords.watchersworditem.tooltip2": "Шанс при попадании заберает жизнь из", - "item.simplyswords.watchersworditem.tooltip3": "цели у которой ниже %d%% HP и дает", - "item.simplyswords.watchersworditem.tooltip4": "поглощение владельцу.", - "item.simplyswords.watchersworditem.tooltip5": "Уникальный эффект: Страж", - "item.simplyswords.watchersworditem.tooltip6": "Шанс при попадании выкачать здоровье", - "item.simplyswords.watchersworditem.tooltip7": "ближайших врагов, исцеляя владельца.", - - "item.simplyswords.plaguesworditem.tooltip1": "Уникальный эффект: Чума", - "item.simplyswords.plaguesworditem.tooltip2": "Шанс при попадании преобразовать положительные эффекты", - "item.simplyswords.plaguesworditem.tooltip3": "в их отрицательный аналог.", - - "item.simplyswords.emberiresworditem.tooltip1": "Уникальный эффект: Гнев Эмбера", - "item.simplyswords.emberiresworditem.tooltip2": "Шанс при попадании окутать владельца", - "item.simplyswords.emberiresworditem.tooltip3": "пламенем, нанося ему урон и придавая силу.", - "item.simplyswords.emberiresworditem.tooltip4": "Поглощайте пламя, теряя силу и", - "item.simplyswords.emberiresworditem.tooltip5": "вызывая огненный шар.", - - "item.simplyswords.volcanicfurysworditem.tooltip1": "Уникальный эффект: Вулканическая Ярость", - "item.simplyswords.volcanicfurysworditem.tooltip2": "Шанс при попадании воспламенить вашу цель", - "item.simplyswords.volcanicfurysworditem.tooltip3": "и отправить ее в полет.", - "item.simplyswords.volcanicfurysworditem.tooltip4": "Направляйте свою ярость, обмениваясь здоровьем, чтобы", - "item.simplyswords.volcanicfurysworditem.tooltip5": "получить сопротивление, вызывая при этом толчки", - "item.simplyswords.volcanicfurysworditem.tooltip6": "которые притягивают врагов к вам.", - "item.simplyswords.volcanicfurysworditem.tooltip7": "Активируйтесь снова, чтобы высвободить свою ярость,", - "item.simplyswords.volcanicfurysworditem.tooltip8": "запуская, воспламеняя и нанося тем больше", - "item.simplyswords.volcanicfurysworditem.tooltip9": "урона, чем длиннее канал.", - - "item.simplyswords.ferocitysworditem.tooltip1": "Уникальный эффект: Свирепость", - "item.simplyswords.ferocitysworditem.tooltip2": "Шанс при попадании увеличить", - "item.simplyswords.ferocitysworditem.tooltip3": "скорость вашей атаки до 15 раз.", - "item.simplyswords.ferocitysworditem.tooltip4": "Потребляйте все складывания, набирая силу,", - "item.simplyswords.ferocitysworditem.tooltip5": "в течение времени, равного количеству", - "item.simplyswords.ferocitysworditem.tooltip6": "потребленных сложений.", - - "item.simplyswords.rendsworditem.tooltip1": "Уникальный эффект: Разрыв Души", - "item.simplyswords.rendsworditem.tooltip2": "Шанс при попадании нанести несколько ослабляющих", - "item.simplyswords.rendsworditem.tooltip3": "эффектов.", - "item.simplyswords.rendsworditem.tooltip4": "Потребляйте все сложения у окружающих врагов,", - "item.simplyswords.rendsworditem.tooltip5": "нанося им урон и исцеляя вас относительно", - "item.simplyswords.rendsworditem.tooltip6": "израсходованных сложений.", - - "item.simplyswords.soulsworditem.tooltip1": "Уникальный эффект: Слияние душ", - "item.simplyswords.soulsworditem.tooltip2": "Шанс при попадании поглотить близлежащие души, усиливая", - "item.simplyswords.soulsworditem.tooltip3": "и замедляя скорость атаки владельца.", - "item.simplyswords.soulsworditem.tooltip4": "Высвобождайте душами, перенося дебафф", - "item.simplyswords.soulsworditem.tooltip5": "скорости атаки на ближайших врагов и", - "item.simplyswords.soulsworditem.tooltip6": "регенерируя владельца.", - - "item.simplyswords.stealsworditem.tooltip1": "Уникальный эффект: Кража Души", - "item.simplyswords.stealsworditem.tooltip2": "Шанс при попадании поглотить душу вашего противника,", - "item.simplyswords.stealsworditem.tooltip3": "ускоряя вас, одновременно замедляя и помечая вашу", - "item.simplyswords.stealsworditem.tooltip4": "цель для смерти.", - "item.simplyswords.stealsworditem.tooltip5": "Если в пределах 3 блоков от бездушной цели, ", - "item.simplyswords.stealsworditem.tooltip6": "верните ее душу и получите невидимость.", - "item.simplyswords.stealsworditem.tooltip7": "Если бездушная цель находится более чем в 3 блоках", - "item.simplyswords.stealsworditem.tooltip8": "от вас, вы притянитесь к цели силой,", - "item.simplyswords.stealsworditem.tooltip9": "ослепляя и нанося ей урон.", - "item.simplyswords.stealsworditem.tooltip10": " ", - - "item.simplyswords.soulpyresworditem.tooltip1": "Уникальный эффект: Нет", - "item.simplyswords.soulpyresworditem.tooltip2": "Спровоцируйте привязывание душ, меняясь местами", - "item.simplyswords.soulpyresworditem.tooltip3": "со своей целью и замораживая ее, одновременно вызывая", - "item.simplyswords.soulpyresworditem.tooltip4": "спешку и сопротивление.", - "item.simplyswords.soulpyresworditem.tooltip5": "Добравшись до места назначения, поджигайте", - "item.simplyswords.soulpyresworditem.tooltip6": "ближайших врагов и подтягивайте их поближе к себе.", - "item.simplyswords.soulpyresworditem.tooltip7": "После %d сек. ваша привязь души разрывается", - "item.simplyswords.soulpyresworditem.tooltip8": "в результате чего вы меняетесь местами со своей целью", - "item.simplyswords.soulpyresworditem.tooltip9": "во второй раз.", - - "item.simplyswords.frostfallsworditem.tooltip1": "Уникальный эффект: Ледяная Ярость", - "item.simplyswords.frostfallsworditem.tooltip2": "Шанс при попадании заковать ближайших врагов в", - "item.simplyswords.frostfallsworditem.tooltip3": "лед, не нанося им никакого урона.", - "item.simplyswords.frostfallsworditem.tooltip4": "После %d сек. лед разбивается вдребезги, нанося %d урона.", - "item.simplyswords.frostfallsworditem.tooltip5": "Заключите себя в лед на %d сек., что сделает вас", - "item.simplyswords.frostfallsworditem.tooltip6": "невосприимчивым к урону и даст вам регенерацию.", - - "item.simplyswords.moltenedgesworditem.tooltip1": "Уникальный эффект: Расплавленный Рёв", - "item.simplyswords.moltenedgesworditem.tooltip2": "Шанс при попадании воспламенить вашего врага или вас самих.", - "item.simplyswords.moltenedgesworditem.tooltip3": "Если мало HP, вместо этого получите регенерацию.", - "item.simplyswords.moltenedgesworditem.tooltip4": "Набирайте силу и скорость относительно недостающих HP.", - "item.simplyswords.moltenedgesworditem.tooltip5": "Издайте мощный рев, отбрасывая назад и", - "item.simplyswords.moltenedgesworditem.tooltip6": "воспламеняя ближайших врагов. Получайте накопление поглощения", - "item.simplyswords.moltenedgesworditem.tooltip7": "и скорости за каждый вражеский удар на %d сек.", - - "item.simplyswords.livyatansworditem.tooltip1": "Уникальный эффект: Ледяной Осколок", - "item.simplyswords.livyatansworditem.tooltip2": "Шанс при попадании заковать ближайших врагов в", - "item.simplyswords.livyatansworditem.tooltip3": "лед, не нанося им никакого урона.", - "item.simplyswords.livyatansworditem.tooltip4": "После %d сек. лед разбивается вдребезги, нанося %d урон.", - "item.simplyswords.livyatansworditem.tooltip5": "Упреждающе разбейте лед, окружающий ваших", - "item.simplyswords.livyatansworditem.tooltip6": "врагов, нанося тем больше урона, чем раньше вы разобьете лед.", - - "item.simplyswords.icewhispersworditem.tooltip1": "Уникальный эффект: Вечная Мерзлота", - "item.simplyswords.icewhispersworditem.tooltip2": "Во время владения получите ледяную ауру, которая наносит", - "item.simplyswords.icewhispersworditem.tooltip3": "урон и замедляет врагов в пределах %d блоков.", - "item.simplyswords.icewhispersworditem.tooltip4": "Откажитесь от своей ледяной ауры и вместо этого вызовите", - "item.simplyswords.icewhispersworditem.tooltip5": "снежную бурю в вашем местоположении, замедляя и нанося", - "item.simplyswords.icewhispersworditem.tooltip6": "увеличенный урон врагам в пределах %d блоков.", - - "item.simplyswords.arcanethystsworditem.tooltip1": "Уникальный эффект: Тайное Нападение", - "item.simplyswords.arcanethystsworditem.tooltip2": "Шанс при попадании получить тайный заряд.", - "item.simplyswords.arcanethystsworditem.tooltip3": "Расходуйте свои тайные заряды, чтобы атаковать", - "item.simplyswords.arcanethystsworditem.tooltip4": "ближайших врагов, усиливаясь с каждым зарядом.", - "item.simplyswords.arcanethystsworditem.tooltip5": "1 Заряд: Поднимает врагов в воздух.", - "item.simplyswords.arcanethystsworditem.tooltip6": "2 Заряд: Наносит урон с течением времени.", - "item.simplyswords.arcanethystsworditem.tooltip7": "3 Заряд: Телепортирует врагов на землю.", - - "item.simplyswords.thunderbrandsworditem.tooltip1": "Уникальный эффект: Громовой Удар", - "item.simplyswords.thunderbrandsworditem.tooltip2": "Шанс при попадании обновить время восстановления способности.", - "item.simplyswords.thunderbrandsworditem.tooltip3": "На мгновение замедлите себя и зарядите свое", - "item.simplyswords.thunderbrandsworditem.tooltip4": "оружие, нанося урон по площади ближайшим врагам.", - "item.simplyswords.thunderbrandsworditem.tooltip5": "После атаки бросайтесь вперед, набирая скорость", - "item.simplyswords.thunderbrandsworditem.tooltip6": "и нанося огромный урон врагам на", - "item.simplyswords.thunderbrandsworditem.tooltip7": "своем пути.", - - "item.simplyswords.stormsedgesworditem.tooltip1": "Уникальный эффект: Штормовой Толчок", - "item.simplyswords.stormsedgesworditem.tooltip2": "Шанс при попадании обновить время восстановления способности.", - "item.simplyswords.stormsedgesworditem.tooltip3": "Бросайтесь вперед, как молния, обретая", - "item.simplyswords.stormsedgesworditem.tooltip4": "мгновенную неуязвимость, а", - "item.simplyswords.stormsedgesworditem.tooltip5": "также сохраняющуюся скорость и спешку.", - - "item.simplyswords.levitationsworditem.tooltip1": "Руническая Сила: Левитация", - "item.simplyswords.uniquesworditem.runefused_power.float": "[ Руна: Левитация ]", - "item.simplyswords.levitationsworditem.tooltip2": "Шанс при попадании нанести эффект", - "item.simplyswords.levitationsworditem.tooltip3": "левитации на цель.", - "item.simplyswords.uniquesworditem.runefused_power.swiftness": "[ Руна: Стремительность ]", - "item.simplyswords.speedsworditem.tooltip1": "Руническая Сила: Стремительность", - "item.simplyswords.speedsworditem.tooltip2": "Шанс при попадании увеличить свою", - "item.simplyswords.speedsworditem.tooltip3": "скорость передвижения на время.", - "item.simplyswords.uniquesworditem.runefused_power.slow": "[ Руна: Медлительность ]", - "item.simplyswords.slownesssworditem.tooltip1": "Руническая Сила: Медлительность", - "item.simplyswords.slownesssworditem.tooltip2": "Шанс замедлителить цель", - "item.simplyswords.slownesssworditem.tooltip3": "на время.", - "item.simplyswords.freezesworditem.tooltip1": "Руническая Сила: Заморозка", - "item.simplyswords.uniquesworditem.runefused_power.freeze": "[ Руна: Заморозка ]", - "item.simplyswords.freezesworditem.tooltip2": "Шанс при попадании охладить или заморозить цель.", - "item.simplyswords.uniquesworditem.runefused_power.wildfire": "[ Руна: Воспламенение ]", - "item.simplyswords.wildfiresworditem.tooltip1": "Руническая Сила: Воспламенение", - "item.simplyswords.wildfiresworditem.tooltip2": "Шанс при попадании воспламенить ближайшие", - "item.simplyswords.wildfiresworditem.tooltip3": "сущности того же типа, что и ваша цель.", - "item.simplyswords.uniquesworditem.runefused_power.zephyr": "[ Руна: Мобильность ]", - "item.simplyswords.zephyrsworditem.tooltip1": "Руническая Сила: Мобильность", - "item.simplyswords.zephyrsworditem.tooltip2": "Шанс получить спешку и скорость", - "item.simplyswords.zephyrsworditem.tooltip3": "при атаке.", - "item.simplyswords.uniquesworditem.runefused_power.shielding": "[ Руна: Экранирование ]", - "item.simplyswords.shieldingsworditem.tooltip1": "Руническая Сила: Экранирование", - "item.simplyswords.shieldingsworditem.tooltip2": "Шанс получить эффект поглощения", - "item.simplyswords.shieldingsworditem.tooltip3": "при ударе.", - "item.simplyswords.uniquesworditem.runefused_power.stoneskin": "[ Руна: Каменная кожа ]", - "item.simplyswords.stoneskinsworditem.tooltip1": "Руническая Сила: Каменная кожа", - "item.simplyswords.stoneskinsworditem.tooltip2": "Шанс получить эффект защиты при ударе", - "item.simplyswords.stoneskinsworditem.tooltip3": "ценой скорости передвижения.", - "item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Руна: Первопроходец ] ", - "item.simplyswords.trailblazesworditem.tooltip1": "Руническая Сила: Первопроходец", - "item.simplyswords.trailblazesworditem.tooltip2": "Шанс при попадании получить огнестойкость ", - "item.simplyswords.trailblazesworditem.tooltip3": "и скорость, поджигая себя.", - "item.simplyswords.weakensworditem.tooltip1": "Руническая Сила: Ослабление", - "item.simplyswords.uniquesworditem.runefused_power.weaken": "[ Руна: Ослабление ]", - "item.simplyswords.weakensworditem.tooltip2": "Шанс при ударе наложить слабость", - "item.simplyswords.weakensworditem.tooltip3": "и медлительность на цель.", - "item.simplyswords.unstablesworditem.tooltip1": "Руническая Сила: Нестабильность", - "item.simplyswords.unstablesworditem.tooltip2": "Регулярно дает случайный эффект", - "item.simplyswords.unstablesworditem.tooltip3": "на владельца.", - "item.simplyswords.activedefencesworditem.tooltip1": "Руническая Сила: Активная защита", - "item.simplyswords.activedefencesworditem.tooltip2": "Регулярно выпускает стрелы в ближайших", - "item.simplyswords.activedefencesworditem.tooltip3": "врагов (Требуются стрелы).", - "item.simplyswords.frostwardsworditem.tooltip1": "Руническая Сила: Олединение", - "item.simplyswords.frostwardsworditem.tooltip2": "Регулярно запускает снежки, ухудшающие", - "item.simplyswords.frostwardsworditem.tooltip3": "скорость предвижения противника.", - - "item.simplyswords.momentumsworditem.tooltip1": "Руническая Сила: Мгновение", - "item.simplyswords.uniquesworditem.runefused_power.momentum": "[ Руна: Мгновение ]", - "item.simplyswords.momentumsworditem.tooltip2": "Получите краткий момент сильного", - "item.simplyswords.momentumsworditem.tooltip3": "импульса вперед. ", - "item.simplyswords.imbuedsworditem.tooltip1": "Руническая Сила: Вдохновение", - "item.simplyswords.uniquesworditem.runefused_power.imbued": "[ Руна: Вдохновение ]", - "item.simplyswords.imbuedsworditem.tooltip2": "Шанс при попадании нанести дополнительный", - "item.simplyswords.imbuedsworditem.tooltip3": "магический урон, зависящий от прочности.", - "item.simplyswords.pincushionsworditem.tooltip1": "Руническая Сила: Шипы", - "item.simplyswords.uniquesworditem.runefused_power.pincushion": "[ Руна: Шипы ]", - "item.simplyswords.pincushionsworditem.tooltip2": "Нанесите дополнительный урон за каждую", - "item.simplyswords.pincushionsworditem.tooltip3": "стрелу, застрявшую в вашем теле.", - "item.simplyswords.wardsworditem.tooltip1": "Руническая Сила: Вард", - "item.simplyswords.uniquesworditem.runefused_power.ward": "[ Руна: Вард ]", - "item.simplyswords.wardsworditem.tooltip2": "Принесите в жертву половину вашего текущего HP, чтобы получить", - "item.simplyswords.wardsworditem.tooltip3": "пульсирующее поглощение относительно", - "item.simplyswords.wardsworditem.tooltip4": "оставшегося HP на 6 секунд.", - "item.simplyswords.immolationsworditem.tooltip1": "Руническая Сила: Жертвоприношение", - "item.simplyswords.uniquesworditem.runefused_power.immolation": "[ Руна: Жертвоприношение ]", - "item.simplyswords.immolationsworditem.tooltip2": "Получите ауру Жертвоприношения, которая периодически", - "item.simplyswords.immolationsworditem.tooltip3": "наносит урон вам и ближайшим врагам. Исходящий ", - "item.simplyswords.immolationsworditem.tooltip4": "урон зависит от вашего текущего HP.", - - "item.simplyswords.unidentifiedsworditem.tooltip1": "Руническая Сила: ????", - "item.simplyswords.unidentifiedsworditem.tooltip2": "Нажмите, чтобы узнать силу.", - - "item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Незер-руна: Эхо ]", - "item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Ваше оружие эхом раскачивается, нанося", - "item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "дополнительный урон ", - "item.simplyswords.uniquesworditem.netherfused_power.echo.description3": "после небольшой задержки.", - - "item.simplyswords.uniquesworditem.netherfused_power.berserk": "[ Незер-руна: Берсерк ]", - "item.simplyswords.uniquesworditem.netherfused_power.berserk.description": "Когда у вас значение брони меньше", - "item.simplyswords.uniquesworditem.netherfused_power.berserk.description2": "10, ваши взмахи оружием высасывают ", - "item.simplyswords.uniquesworditem.netherfused_power.berserk.description3": "здоровье из цели.", - - "item.simplyswords.uniquesworditem.netherfused_power.radiance": "[ Незер-руна: Сияние ]", - "item.simplyswords.uniquesworditem.netherfused_power.radiance.description": "При ударе по цели, страдающей", - "item.simplyswords.uniquesworditem.netherfused_power.radiance.description2": "от слабости, на короткое", - "item.simplyswords.uniquesworditem.netherfused_power.radiance.description3": "время получаете эффект жертвоприношение.", - - "item.simplyswords.uniquesworditem.netherfused_power.onslaught": "[ Незер-руна: Натиск ]", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description": "При ударе по цели, страдающей", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2": "от замедления, на короткое", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3": "время получаете эффект Натиска.", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4": "(Натиск даёт вам пульсирующий", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5": "эффект спешки, но вызывает", - "item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6": "слабость когда срок действия истекает).", - - "item.simplyswords.uniquesworditem.netherfused_power.nullification": "[ Незер-руна: Нуллификация ]", - "item.simplyswords.uniquesworditem.netherfused_power.nullification.description": "Вызывает Боевой символ при попадании", - "item.simplyswords.uniquesworditem.netherfused_power.nullification.description2": "который периодически очищает", - "item.simplyswords.uniquesworditem.netherfused_power.nullification.description3": "дебаффы с союзных игроков,", - "item.simplyswords.uniquesworditem.netherfused_power.nullification.description4": "так же снимает баффы с", - "item.simplyswords.uniquesworditem.netherfused_power.nullification.description5": "врагов в непосредственной близости от него.", - - "item.simplyswords.common.blacklisteffect": "СПОСОБНОСТЬ ОТКЛЮЧЕНА", - - "entity.simplyswords.battlestandard.name": "%d's Боевой Символ", - - "item.simplyswords.stormbringersworditem.tooltip1": "Уникальный эффект: Отражение удара", - "item.simplyswords.stormbringersworditem.tooltip2": "Сосредоточьте энергию в одной точке вашего", - "item.simplyswords.stormbringersworditem.tooltip3": "клинка, что позволит вам на мгновение блокировать", - "item.simplyswords.stormbringersworditem.tooltip4": "входящие атаки.", - "item.simplyswords.stormbringersworditem.tooltip5": "При удачном тайминге этой способности", - "item.simplyswords.stormbringersworditem.tooltip6": "с вражеским ударом в ближнем бою", - "item.simplyswords.stormbringersworditem.tooltip7": "вы совершите парирование, нанося урон", - "item.simplyswords.stormbringersworditem.tooltip8": "и отбрасывая противника, а также", - "item.simplyswords.stormbringersworditem.tooltip9": "сокращая время действия способности.", - "item.simplyswords.stormbringersworditem.tooltip10": "Последовательное выполнение парирования", - "item.simplyswords.stormbringersworditem.tooltip11": "увеличивает урон способности и ее кулдаун.", - - "item.simplyswords.lichbladesworditem.tooltip1": "Уникальный эффект: Душевная Боль I", - "item.simplyswords.lichbladesworditem.tooltip1.2": "Уникальный эффект: Душевная Боль II", - "item.simplyswords.lichbladesworditem.tooltip1.3": "Уникальный эффект: Душевная Боль III", - "item.simplyswords.lichbladesworditem.tooltip2": "От вас исходят мучительные души,", - "item.simplyswords.lichbladesworditem.tooltip3": "нанося урон всем ближайшим врагам.", - "item.simplyswords.lichbladesworditem.tooltip4": "Прикажите своим душам атаковать,", - "item.simplyswords.lichbladesworditem.tooltip5": "нанося стремительный урон.", - "item.simplyswords.lichbladesworditem.tooltip6": "Шанс вытянуть здоровье.", - "item.simplyswords.lichbladesworditem.tooltip7": "После того как атака стихнет, ваши души", - "item.simplyswords.lichbladesworditem.tooltip8": "вернутся к вам и, достигнув вас,", - "item.simplyswords.lichbladesworditem.tooltip9": "дадут вам Поглощение.", - - "item.simplyswords.shadowmistsworditem.tooltip1": "Уникальный Эффект: Туман теней", - "item.simplyswords.shadowmistsworditem.tooltip2": "Шанс при попадании нанести магический урон,", - "item.simplyswords.shadowmistsworditem.tooltip3": "зависящий от величины брони цели.", - "item.simplyswords.shadowmistsworditem.tooltip4": "Создайте ослепительный теневой туман у своих ног", - "item.simplyswords.shadowmistsworditem.tooltip5": "и сделайте теневой шаг вперед на небольшое расстояние.", - - "item.simplyswords.dormantrelicsworditem.tooltip2": "Кажется, что из него исходит слабая сила.", - "item.simplyswords.poweredrelicsworditem.tooltip2": "Нарастающая сила, кажется, вырывается изнутри.", - - "item.simplyswords.sunfiresworditem.tooltip1": "Уникальный Эффект: Праведный Символ", - "item.simplyswords.sunfiresworditem.tooltip2": "Шанс восстановить здоровье при попадании.", - "item.simplyswords.sunfiresworditem.tooltip3": "Вызывает Праведный боевой символ, который", - "item.simplyswords.sunfiresworditem.tooltip4": "поджигает, наносит урон и замедляет врагов,", - "item.simplyswords.sunfiresworditem.tooltip5": "а также периодически дарит силу и здоровье", - "item.simplyswords.sunfiresworditem.tooltip6": "дружественным игрокам, находящимся рядом.", - - "item.simplyswords.harbingersworditem.tooltip1": "Уникальный Эффект: Символ Бездны", - "item.simplyswords.harbingersworditem.tooltip2": "Шанс при попадании наложить слабость.", - "item.simplyswords.harbingersworditem.tooltip3": "Призывает боевой символ Бездны, который", - "item.simplyswords.harbingersworditem.tooltip4": "притягивает, наносит урон и замедляет врагов,", - "item.simplyswords.harbingersworditem.tooltip5": "а также периодически наделяет спешкой", - "item.simplyswords.harbingersworditem.tooltip6": "дружественных игроков, находящихся поблизости" +"_comment": "Updated by: Heimdallr-1", +"item.simplyswords.iron_cutlass": "Железная абордажная сабля", +"item.simplyswords.gold_cutlass": "Золотая абордажная сабля", +"item.simplyswords.diamond_cutlass": "Алмазная абордажная сабля", +"item.simplyswords.netherite_cutlass": "Незеритовая абордажная сабля", +"item.simplyswords.runic_rapier": "Руническая рапира", +"item.simplyswords.netherite_rapier": "Незеритовая рапира", +"item.simplyswords.diamond_rapier": "Алмазная рапира", +"item.simplyswords.gold_rapier": "Золотая рапира", +"item.simplyswords.iron_rapier": "Железная рапира", +"item.simplyswords.iron_glaive": "Железная глефа", +"item.simplyswords.gold_glaive": "Золотая глефа", +"item.simplyswords.diamond_glaive": "Алмазная глефа", +"item.simplyswords.netherite_glaive": "Незеритовая глефа", +"item.simplyswords.iron_warglaive": "Железная боевой клинок", +"item.simplyswords.gold_warglaive": "Золотой боевой клинок", +"item.simplyswords.diamond_warglaive": "Алмазный боевой клинок", +"item.simplyswords.netherite_warglaive": "Незеритовый боевой клинок", +"item.simplyswords.iron_spear": "Железное копьё", +"item.simplyswords.gold_spear": "Золотое копьё", +"item.simplyswords.diamond_spear": "Алмазное копьё", +"item.simplyswords.netherite_spear": "Незеритовое копьё", +"item.simplyswords.iron_sai": "Железная сай", +"item.simplyswords.diamond_sai": "Алмазная сай", +"item.simplyswords.gold_sai": "Золотая сай", +"item.simplyswords.netherite_sai": "Незеритовая сай", +"item.simplyswords.iron_katana": "Железная катана", +"item.simplyswords.gold_katana": "Золотая катана", +"item.simplyswords.diamond_katana": "Алмазная катана", +"item.simplyswords.netherite_katana": "Незеритовая катана", +"item.simplyswords.runic_cutlass": "Руническая абордажная сабля", +"item.simplyswords.runic_katana": "Руническая катана", +"item.simplyswords.runic_sai": "Руническая сай", +"item.simplyswords.diamond_claymore": "Алмазный клеймор", +"item.simplyswords.netherite_claymore": "Незеритовый клеймор", +"item.simplyswords.runic_claymore": "Рунический клеймор", +"item.simplyswords.watcher_claymore": "Смотритель", +"item.simplyswords.brimstone_claymore": "Серный клеймор", +"item.simplyswords.gold_claymore": "Золотой клеймор", +"item.simplyswords.iron_claymore": "Железный клеймор", +"item.simplyswords.runic_longsword": "Рунический полуторный меч", +"item.simplyswords.watching_warglaive": "Боевой клинок смотрителя", +"item.simplyswords.iron_longsword": "Железный полуторный меч", +"item.simplyswords.gold_longsword": "Золотой полуторный меч", +"item.simplyswords.diamond_longsword": "Алмазный полуторный меч", +"item.simplyswords.netherite_longsword": "Незеритовый полуторный меч", +"item.simplyswords.toxic_longsword": "Полуторный меч чумы", +"item.simplyswords.runic_twinblade": "Рунический парный клинок", +"item.simplyswords.runic_glaive": "Руническая глефа", +"item.simplyswords.runic_spear": "Руническое копьё", +"item.simplyswords.runic_warglaive": "Рунический боевой клинок", +"item.simplyswords.runic_greathammer": "Рунический большой молот", +"item.simplyswords.runic_greataxe": "Рунический большой топор", +"item.simplyswords.iron_twinblade": "Железная парный клинок", +"item.simplyswords.gold_twinblade": "Золотая парный клинок", +"item.simplyswords.diamond_twinblade": "Алмазная парный клинок", +"item.simplyswords.netherite_twinblade": "Незеритовая парный клинок", +"item.simplyswords.iron_greathammer": "Железная большой молот", +"item.simplyswords.gold_greathammer": "Золотая большой молот", +"item.simplyswords.diamond_greathammer": "Алмазная большой молот", +"item.simplyswords.netherite_greathammer": "Незеритовая большой молот", +"item.simplyswords.iron_greataxe": "Железный большой топор", +"item.simplyswords.gold_greataxe": "Золотой большой топор", +"item.simplyswords.diamond_greataxe": "Алмазный большой топор", +"item.simplyswords.netherite_greataxe": "Незеритовый большой топор", +"item.simplyswords.iron_chakram": "Железная чакра", +"item.simplyswords.gold_chakram": "Золотая чакра", +"item.simplyswords.diamond_chakram": "Алмазная чакра", +"item.simplyswords.netherite_chakram": "Незеритовая чакра", +"item.simplyswords.iron_scythe": "Железная коса", +"item.simplyswords.gold_scythe": "Золотая коса", +"item.simplyswords.diamond_scythe": "Алмазная коса", +"item.simplyswords.netherite_scythe": "Незеритовая коса", +"item.simplyswords.runic_chakram": "Руническая чакра", +"item.simplyswords.runic_scythe": "Руническая коса", +"item.simplyswords.iron_halberd": "Железная алебарда", +"item.simplyswords.gold_halberd": "Золотая алебарда", +"item.simplyswords.diamond_halberd": "Алмазная алебарда", +"item.simplyswords.netherite_halberd": "Незеритовая алебарда", +"item.simplyswords.runic_halberd": "Руническая алебарда", +"item.simplyswords.storms_edge": "Клинок Бури", +"item.simplyswords.stormbringer": "Буревестник", +"item.simplyswords.sword_on_a_stick": "Меч на палке", +"item.simplyswords.bramblethorn": "Терновый шип", +"item.simplyswords.magic_estoc": "Зачарованная короткая шпага", +"item.simplyswords.mjolnir": "Мьёльнир", +"item.simplyswords.emberblade": "Янтарный клинок", +"item.simplyswords.hearthflame": "Пламенное сердце", +"item.simplyswords.twisted_blade": "Спиральный клинок", +"item.simplyswords.twilight": "Полумрак", +"item.simplyswords.soulkeeper": "Хранитель душ", +"item.simplyswords.soulstealer": "Душекрад", +"item.simplyswords.soulrender": "Воздаятель душ", +"item.simplyswords.soulpyre": "Костёр душ", +"item.simplyswords.frostfall": "Морозная гибель", +"item.simplyswords.molten_edge": "Расплавленный клинок", +"item.simplyswords.livyatan": "Левиафан", +"item.simplyswords.icewhisper": "Шепчущий лёд", +"item.simplyswords.arcanethyst": "Миститист", +"item.simplyswords.thunderbrand": "Громовой меч", +"item.simplyswords.slumbering_lichblade": "Дремлющий пьющий клинок", +"item.simplyswords.waking_lichblade": "Бодрствующий пьющий клинок", +"item.simplyswords.awakened_lichblade": "Пробуждённый пьющий клинок", +"item.simplyswords.shadowsting": "Теневое жало", +"item.simplyswords.harbinger": "Предвестник", +"item.simplyswords.sunfire": "Солнечный огонь", +"item.simplyswords.dormant_relic": "Дремлющая реликвия", +"item.simplyswords.tainted_relic": "Омрачённая реликвия", +"item.simplyswords.decaying_relic": "Разлагающаяся реликвия", +"item.simplyswords.righteous_relic": "Благочестивая реликвия", +"item.simplyswords.whisperwind": "Шепчущий ветер", +"item.simplyswords.emberlash": "Янтарная плеть", +"item.simplyswords.waxweaver": "Воскоплёт", +"item.simplyswords.hiveheart": "Сердце улья", +"item.simplyswords.stars_edge": "Клинок звезды", +"item.simplyswords.wickpiercer": "Фитильный пронзатель", +"item.simplyswords.dreadtide": "Прилив ужаса", +"item.simplyswords.tempest": "Вихрь", +"item.simplyswords.flamewind": "Огненный ветер", +"item.simplyswords.ribboncleaver": "Ленточный тесак", +"item.simplyswords.magiscythe": "Магическая коса", +"item.simplyswords.enigma": "Загадка", +"item.simplyswords.magispear": "Магическое копьё", +"item.simplyswords.magiblade": "Магический клинок", +"item.simplyswords.caelestis": "Небесный", + +"item.simplyswords.runic_tablet": "Руническая скрижаль", +"item.simplyswords.runefused_gem": "Насыщенные руной самоцвет", +"item.simplyswords.netherfused_gem": "Сплавленный незером самоцвет", +"item.simplyswords.empowered_remnant": "Empowered Remnant", +"item.simplyswords.contained_remnant": "Contained Remnant", +"item.simplyswords.tampered_remnant": "Tampered Remnant", + +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_claymore": "Адамантитовый клеймор", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_cutlass": "Адамантитовая абордажная сабля", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_glaive": "Адамантитовая глефа", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_katana": "Адамантитовая катана", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_longsword": "Адамантитовый полуторный меч", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_rapier": "Адамантитовая рапира", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_sai": "Адамантитовый сай", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_spear": "Адамантитовое копьё", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_twinblade": "Адамантитовый парный клинок", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_warglaive": "Адамантитовый боевой клинок", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_greathammer": "Адамантитовый большой молот", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_greataxe": "Адамантитовый большой топор", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_chakram": "Адамантитовый чакра", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_scythe": "Адамантитовая коса", +"item.simplyswords.mythicmetals_compat.adamantite.adamantite_halberd": "Адамантитовый алебарда", + +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_claymore": "Аквариевый клеймор", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_cutlass": "Аквариевая абордажная сабля", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_glaive": "Аквариевая глефа", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_katana": "Аквариевая катана", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_longsword": "Аквариевый полуторный меч", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_rapier": "Аквариевая рапира", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_sai": "Аквариевый сай", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_spear": "Аквариевое копьё", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_twinblade": "Аквариевый парный клинок", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_warglaive": "Аквариевый боевой клинок", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_greathammer": "Аквариевый большой молот", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_greataxe": "Аквариевый большой топор", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_chakram": "Аквариевая чакра", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_scythe": "Аквариевая коса", +"item.simplyswords.mythicmetals_compat.aquarium.aquarium_halberd": "Аквариевая алебарда", + +"item.simplyswords.mythicmetals_compat.banglum.banglum_claymore": "Банглумный клеймор", +"item.simplyswords.mythicmetals_compat.banglum.banglum_cutlass": "Банглумная абордажная сабля", +"item.simplyswords.mythicmetals_compat.banglum.banglum_glaive": "Банглумная глефа", +"item.simplyswords.mythicmetals_compat.banglum.banglum_katana": "Банглумная катана", +"item.simplyswords.mythicmetals_compat.banglum.banglum_longsword": "Банглумный полуторный меч", +"item.simplyswords.mythicmetals_compat.banglum.banglum_rapier": "Банглумная рапира", +"item.simplyswords.mythicmetals_compat.banglum.banglum_sai": "Банглумный сай", +"item.simplyswords.mythicmetals_compat.banglum.banglum_spear": "Банглумное копьё", +"item.simplyswords.mythicmetals_compat.banglum.banglum_twinblade": "Банглумный парный клинок", +"item.simplyswords.mythicmetals_compat.banglum.banglum_warglaive": "Банглумный боевой клинок", +"item.simplyswords.mythicmetals_compat.banglum.banglum_greathammer": "Банглумный большой молот", +"item.simplyswords.mythicmetals_compat.banglum.banglum_greataxe": "Банглумный большой топор", +"item.simplyswords.mythicmetals_compat.banglum.banglum_chakram": "Банглумная чакра", +"item.simplyswords.mythicmetals_compat.banglum.banglum_scythe": "Банглумная коса", +"item.simplyswords.mythicmetals_compat.banglum.banglum_halberd": "Банглумная алебарда", + +"item.simplyswords.mythicmetals_compat.carmot.carmot_claymore": "Кармотовый клеймор", +"item.simplyswords.mythicmetals_compat.carmot.carmot_cutlass": "Кармотовый абордажная сабля", +"item.simplyswords.mythicmetals_compat.carmot.carmot_glaive": "Кармотовый глефа", +"item.simplyswords.mythicmetals_compat.carmot.carmot_katana": "Кармотовый катана", +"item.simplyswords.mythicmetals_compat.carmot.carmot_longsword": "Кармотовый полуторный меч", +"item.simplyswords.mythicmetals_compat.carmot.carmot_rapier": "Кармотовый рапира", +"item.simplyswords.mythicmetals_compat.carmot.carmot_sai": "Кармотовый сай", +"item.simplyswords.mythicmetals_compat.carmot.carmot_spear": "Кармотовый копьё", +"item.simplyswords.mythicmetals_compat.carmot.carmot_twinblade": "Кармотовый парный клинок", +"item.simplyswords.mythicmetals_compat.carmot.carmot_warglaive": "Кармотовый боевой клинок", +"item.simplyswords.mythicmetals_compat.carmot.carmot_greathammer": "Кармотовый большой молот", +"item.simplyswords.mythicmetals_compat.carmot.carmot_greataxe": "Кармотовый большой топор", +"item.simplyswords.mythicmetals_compat.carmot.carmot_chakram": "Кармотовый чакра", +"item.simplyswords.mythicmetals_compat.carmot.carmot_scythe": "Кармотовый коса", +"item.simplyswords.mythicmetals_compat.carmot.carmot_halberd": "Кармотовый алебарда", + +"item.simplyswords.mythicmetals_compat.kyber.kyber_claymore": "Кайберовый клеймор", +"item.simplyswords.mythicmetals_compat.kyber.kyber_cutlass": "Кайберовая абордажная сабля", +"item.simplyswords.mythicmetals_compat.kyber.kyber_glaive": "Кайберовая глефа", +"item.simplyswords.mythicmetals_compat.kyber.kyber_katana": "Кайберовая катана", +"item.simplyswords.mythicmetals_compat.kyber.kyber_longsword": "Кайберовая полуторный меч", +"item.simplyswords.mythicmetals_compat.kyber.kyber_rapier": "Кайберовая рапира", +"item.simplyswords.mythicmetals_compat.kyber.kyber_sai": "Кайберовый сай", +"item.simplyswords.mythicmetals_compat.kyber.kyber_spear": "Кайберовое копьё", +"item.simplyswords.mythicmetals_compat.kyber.kyber_twinblade": "Кайберовый парный клинок", +"item.simplyswords.mythicmetals_compat.kyber.kyber_warglaive": "Кайберовый боевой клинок", +"item.simplyswords.mythicmetals_compat.kyber.kyber_greathammer": "Кайберовый большой молот", +"item.simplyswords.mythicmetals_compat.kyber.kyber_greataxe": "Кайберовый большой топор", +"item.simplyswords.mythicmetals_compat.kyber.kyber_chakram": "Кайберовая чакра", +"item.simplyswords.mythicmetals_compat.kyber.kyber_scythe": "Кайберовая коса", +"item.simplyswords.mythicmetals_compat.kyber.kyber_halberd": "Кайберовая алебарда", + +"item.simplyswords.mythicmetals_compat.mythril.mythril_claymore": "Мифрильный клеймор", +"item.simplyswords.mythicmetals_compat.mythril.mythril_cutlass": "Мифрильная абордажная сабля", +"item.simplyswords.mythicmetals_compat.mythril.mythril_glaive": "Мифрильная глефа", +"item.simplyswords.mythicmetals_compat.mythril.mythril_katana": "Мифрильная катана", +"item.simplyswords.mythicmetals_compat.mythril.mythril_longsword": "Мифрильный полуторный меч", +"item.simplyswords.mythicmetals_compat.mythril.mythril_rapier": "Мифрильная рапира", +"item.simplyswords.mythicmetals_compat.mythril.mythril_sai": "Мифрильная сай", +"item.simplyswords.mythicmetals_compat.mythril.mythril_spear": "Мифрильное копьё", +"item.simplyswords.mythicmetals_compat.mythril.mythril_twinblade": "Мифрильный парный клинок", +"item.simplyswords.mythicmetals_compat.mythril.mythril_warglaive": "Мифрильный боевой клинок", +"item.simplyswords.mythicmetals_compat.mythril.mythril_greathammer": "Мифрильный большой молот", +"item.simplyswords.mythicmetals_compat.mythril.mythril_greataxe": "Мифрильный большой топор", +"item.simplyswords.mythicmetals_compat.mythril.mythril_chakram": "Мифрильная чакра", +"item.simplyswords.mythicmetals_compat.mythril.mythril_scythe": "Мифрильная коса", +"item.simplyswords.mythicmetals_compat.mythril.mythril_halberd": "Мифрильная алебарда", + +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_claymore": "Орихалковый клеймор", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_cutlass": "Орихалковая абордажная сабля", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_glaive": "Орихалковая глефа", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_katana": "Орихалковая катана", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_longsword": "Орихалковый полуторный меч", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_rapier": "Орихалковая рапира", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_sai": "Орихалковый сай", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_spear": "Орихалковое копьё", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_twinblade": "Орихалковый парный клинок", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_warglaive": "Орихалковый боевой клинок", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_greathammer": "Орихалковый большой молот", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_greataxe": "Орихалковый большой топор", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_chakram": "Орихалковая чакра", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_scythe": "Орихалковая коса", +"item.simplyswords.mythicmetals_compat.orichalcum.orichalcum_halberd": "Орихалковая алебарда", + +"item.simplyswords.mythicmetals_compat.osmium.osmium_claymore": "Осмиевый клеймор", +"item.simplyswords.mythicmetals_compat.osmium.osmium_cutlass": "Осмиевая абордажная сабля", +"item.simplyswords.mythicmetals_compat.osmium.osmium_glaive": "Осмиевая глефа", +"item.simplyswords.mythicmetals_compat.osmium.osmium_katana": "Осмиевая катана", +"item.simplyswords.mythicmetals_compat.osmium.osmium_longsword": "Осмиевый полуторный меч", +"item.simplyswords.mythicmetals_compat.osmium.osmium_rapier": "Осмиевая рапира", +"item.simplyswords.mythicmetals_compat.osmium.osmium_sai": "Осмиевый сай", +"item.simplyswords.mythicmetals_compat.osmium.osmium_spear": "Осмиевое копьё", +"item.simplyswords.mythicmetals_compat.osmium.osmium_twinblade": "Осмиевый парный клинок", +"item.simplyswords.mythicmetals_compat.osmium.osmium_warglaive": "Осмиевый боевой клинок", +"item.simplyswords.mythicmetals_compat.osmium.osmium_greathammer": "Осмиевый большой молот", +"item.simplyswords.mythicmetals_compat.osmium.osmium_greataxe": "Осмиевый большой топор", +"item.simplyswords.mythicmetals_compat.osmium.osmium_chakram": "Осмиевая чакра", +"item.simplyswords.mythicmetals_compat.osmium.osmium_scythe": "Осмиевая коса", +"item.simplyswords.mythicmetals_compat.osmium.osmium_halberd": "Осмиевая алебарда", + +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_claymore": "Прометиевый клеймор", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_cutlass": "Прометиевая абордажная сабля", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_glaive": "Прометиевая глефа", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_katana": "Прометиевая катана", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_longsword": "Прометиевый полуторный меч", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_rapier": "Прометиевая рапира", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_sai": "Прометиевый сай", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_spear": "Прометиевое копьё", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_twinblade": "Прометиевый парный клинок", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_warglaive": "Прометиевый боевой клинок", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_greathammer": "Прометиевый большой молот", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_greataxe": "Прометиевый большой топор", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_chakram": "Прометиевая чакра", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_scythe": "Прометиевая коса", +"item.simplyswords.mythicmetals_compat.prometheum.prometheum_halberd": "Прометиевая алебарда", + +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_claymore": "Квадрилловый клеймор", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_cutlass": "Квадрилловая абордажная сабля", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_glaive": "Квадрилловая глефа", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_katana": "Квадрилловая катана", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_longsword": "Квадрилловый полуторный меч", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_rapier": "Квадрилловая рапира", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_sai": "Квадрилловый сай", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_spear": "Квадрилловое копьё", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_twinblade": "Квадрилловый парный клинок", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_warglaive": "Квадрилловый боевой клинок", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_greathammer": "Квадрилловый большой молот", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_greataxe": "Квадрилловый большой топор", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_chakram": "Квадрилловая чакра", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_scythe": "Квадрилловая коса", +"item.simplyswords.mythicmetals_compat.quadrillum.quadrillum_halberd": "Квадрилловая алебарда", + +"item.simplyswords.mythicmetals_compat.runite.runite_claymore": "Рунитовый клеймор", +"item.simplyswords.mythicmetals_compat.runite.runite_cutlass": "Рунитовая абордажная сабля", +"item.simplyswords.mythicmetals_compat.runite.runite_glaive": "Рунитовая глефа", +"item.simplyswords.mythicmetals_compat.runite.runite_katana": "Рунитовая катана", +"item.simplyswords.mythicmetals_compat.runite.runite_longsword": "Рунитовый полуторный меч", +"item.simplyswords.mythicmetals_compat.runite.runite_rapier": "Рунитовая рапира", +"item.simplyswords.mythicmetals_compat.runite.runite_sai": "Рунитовый сай", +"item.simplyswords.mythicmetals_compat.runite.runite_spear": "Рунитовое копьё", +"item.simplyswords.mythicmetals_compat.runite.runite_twinblade": "Рунитовый парный клинок", +"item.simplyswords.mythicmetals_compat.runite.runite_warglaive": "Рунитовый боевой клинок", +"item.simplyswords.mythicmetals_compat.runite.runite_greathammer": "Рунитовый большой молот", +"item.simplyswords.mythicmetals_compat.runite.runite_greataxe": "Рунитовый большой топор", +"item.simplyswords.mythicmetals_compat.runite.runite_chakram": "Рунитовая чакра", +"item.simplyswords.mythicmetals_compat.runite.runite_scythe": "Рунитовая коса", +"item.simplyswords.mythicmetals_compat.runite.runite_halberd": "Рунитовая алебарда", + +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_claymore": "Клеймор из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_cutlass": "Абордажная сабля из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_glaive": "Глефа из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_katana": "Катана из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_longsword": "Полуторный меч из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_rapier": "Рапира из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_sai": "Сай из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_spear": "Копьё из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_twinblade": "Парный клинок из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_warglaive": "Боевой клинок из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_greathammer": "Большой молот из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_greataxe": "Большой топор из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_chakram": "Чакра из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_scythe": "Коса из звёздной платины", +"item.simplyswords.mythicmetals_compat.star_platinum.star_platinum_halberd": "Алебарда из звёздной платины", + +"item.simplyswords.mythicmetals_compat.bronze.bronze_claymore": "Бронзовый клеймор", +"item.simplyswords.mythicmetals_compat.bronze.bronze_cutlass": "Бронзовая абордажная сабля", +"item.simplyswords.mythicmetals_compat.bronze.bronze_glaive": "Бронзовая глефа", +"item.simplyswords.mythicmetals_compat.bronze.bronze_katana": "Бронзовая катана", +"item.simplyswords.mythicmetals_compat.bronze.bronze_longsword": "Бронзовый полуторный меч", +"item.simplyswords.mythicmetals_compat.bronze.bronze_rapier": "Бронзовая рапира", +"item.simplyswords.mythicmetals_compat.bronze.bronze_sai": "Бронзовый сай", +"item.simplyswords.mythicmetals_compat.bronze.bronze_spear": "Бронзовое копьё", +"item.simplyswords.mythicmetals_compat.bronze.bronze_twinblade": "Бронзовый парный клинок", +"item.simplyswords.mythicmetals_compat.bronze.bronze_warglaive": "Бронзовый боевой клинок", +"item.simplyswords.mythicmetals_compat.bronze.bronze_greathammer": "Бронзовый большой молот", +"item.simplyswords.mythicmetals_compat.bronze.bronze_greataxe": "Бронзовый большой топор", +"item.simplyswords.mythicmetals_compat.bronze.bronze_chakram": "Бронзовая чакра", +"item.simplyswords.mythicmetals_compat.bronze.bronze_scythe": "Бронзовая коса", +"item.simplyswords.mythicmetals_compat.bronze.bronze_halberd": "Бронзовая алебарда", + +"item.simplyswords.mythicmetals_compat.palladium.palladium_claymore": "Палладиевый клеймор", +"item.simplyswords.mythicmetals_compat.palladium.palladium_cutlass": "Палладиевый абордажная сабля", +"item.simplyswords.mythicmetals_compat.palladium.palladium_glaive": "Палладиевый глефа", +"item.simplyswords.mythicmetals_compat.palladium.palladium_katana": "Палладиевый катана", +"item.simplyswords.mythicmetals_compat.palladium.palladium_longsword": "Палладиевый полуторный меч", +"item.simplyswords.mythicmetals_compat.palladium.palladium_rapier": "Палладиевый рапира", +"item.simplyswords.mythicmetals_compat.palladium.palladium_sai": "Палладиевый сай", +"item.simplyswords.mythicmetals_compat.palladium.palladium_spear": "Палладиевый копьё", +"item.simplyswords.mythicmetals_compat.palladium.palladium_twinblade": "Палладиевый парный клинок", +"item.simplyswords.mythicmetals_compat.palladium.palladium_warglaive": "Палладиевый боевой клинок", +"item.simplyswords.mythicmetals_compat.palladium.palladium_greathammer": "Палладиевый большой молот", +"item.simplyswords.mythicmetals_compat.palladium.palladium_greataxe": "Палладиевый большой топор", +"item.simplyswords.mythicmetals_compat.palladium.palladium_chakram": "Палладиевый чакра", +"item.simplyswords.mythicmetals_compat.palladium.palladium_scythe": "Палладиевый коса", +"item.simplyswords.mythicmetals_compat.palladium.palladium_halberd": "Палладиевый алебарда", + +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_claymore": "Штормикс-клеймор", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_cutlass": "Штормикс-абордажная сабля", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_glaive": "Штормикс-глефа", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_katana": "Штормикс-катана", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_longsword": "Штормикс-полуторный меч", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_rapier": "Штормикс-рапира", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_sai": "Штормикс-сай", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_spear": "Штормикс-копьё", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_twinblade": "Штормикс-парный клинок", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_warglaive": "Штормикс-боевой клинок", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_greathammer": "Штормикс-большой молот", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_greataxe": "Штормикс-большой топор", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_chakram": "Штормикс-чакра", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_scythe": "Штормикс-коса", +"item.simplyswords.mythicmetals_compat.stormyx.stormyx_halberd": "Штормикс-алебарда", + +"item.simplyswords.mythicmetals_compat.steel.steel_claymore": "Стальной клеймор", +"item.simplyswords.mythicmetals_compat.steel.steel_cutlass": "Стальная абордажная сабля", +"item.simplyswords.mythicmetals_compat.steel.steel_glaive": "Стальная глефа", +"item.simplyswords.mythicmetals_compat.steel.steel_katana": "Стальная катана", +"item.simplyswords.mythicmetals_compat.steel.steel_longsword": "Стальной полуторный меч", +"item.simplyswords.mythicmetals_compat.steel.steel_rapier": "Стальная рапира", +"item.simplyswords.mythicmetals_compat.steel.steel_sai": "Стальной сай", +"item.simplyswords.mythicmetals_compat.steel.steel_spear": "Стальное копьё", +"item.simplyswords.mythicmetals_compat.steel.steel_twinblade": "Стальной парный клинок", +"item.simplyswords.mythicmetals_compat.steel.steel_warglaive": "Стальной боевой клинок", +"item.simplyswords.mythicmetals_compat.steel.steel_greathammer": "Стальной большой молот", +"item.simplyswords.mythicmetals_compat.steel.steel_greataxe": "Стальной большой топор", +"item.simplyswords.mythicmetals_compat.steel.steel_chakram": "Стальная чакра", +"item.simplyswords.mythicmetals_compat.steel.steel_scythe": "Стальная коса", +"item.simplyswords.mythicmetals_compat.steel.steel_halberd": "Стальная алебарда", + +"item.simplyswords.mythicmetals_compat.celestium.celestium_claymore": "Целестиевый клеймор", +"item.simplyswords.mythicmetals_compat.celestium.celestium_cutlass": "Целестиевая абордажная сабля", +"item.simplyswords.mythicmetals_compat.celestium.celestium_glaive": "Целестиевая глефа", +"item.simplyswords.mythicmetals_compat.celestium.celestium_katana": "Целестиевая катана", +"item.simplyswords.mythicmetals_compat.celestium.celestium_longsword": "Целестиевый полуторный меч", +"item.simplyswords.mythicmetals_compat.celestium.celestium_rapier": "Целестиевая рапира", +"item.simplyswords.mythicmetals_compat.celestium.celestium_sai": "Целестиевый сай", +"item.simplyswords.mythicmetals_compat.celestium.celestium_spear": "Целестиевое копьё", +"item.simplyswords.mythicmetals_compat.celestium.celestium_twinblade": "Целестиевый парный клинок", +"item.simplyswords.mythicmetals_compat.celestium.celestium_warglaive": "Целестиевый боевой клинок", +"item.simplyswords.mythicmetals_compat.celestium.celestium_greathammer": "Целестиевый большой молот", +"item.simplyswords.mythicmetals_compat.celestium.celestium_greataxe": "Целестиевый большой топор", +"item.simplyswords.mythicmetals_compat.celestium.celestium_chakram": "Целестиевая чакра", +"item.simplyswords.mythicmetals_compat.celestium.celestium_scythe": "Целестиевая коса", +"item.simplyswords.mythicmetals_compat.celestium.celestium_halberd": "Целестиевая алебарда", + +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_claymore": "Металлургиевый клеймор", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_cutlass": "Металлургиевая абордажная сабля", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_glaive": "Металлургиевая глефа", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_katana": "Металлургиевая катана", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_longsword": "Металлургиевый полуторный меч", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_rapier": "Металлургиевая рапира", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_sai": "Металлургиевый сай", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_spear": "Металлургиевое копьё", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_twinblade": "Металлургиевый парный клинок", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_warglaive": "Металлургиевый боевой клинок", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_greathammer": "Металлургиевый большой молот", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_greataxe": "Металлургиевый большой топор", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_chakram": "Металлургиевая чакра", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_scythe": "Металлургиевая коса", +"item.simplyswords.mythicmetals_compat.metallurgium.metallurgium_halberd": "Металлургиевая алебарда", + +"item.simplyswords.mythicmetals_compat.copper.copper_longsword": "Медный полуторный меч", +"item.simplyswords.mythicmetals_compat.durasteel.durasteel_greathammer": "Дюрастальной большой молот", + +"item.simplyswords.gobber_compat.gobber.gobber_claymore": "Клеймор Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_cutlass": "Сабля Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_glaive": "Глефа Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_katana": "Катана Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_longsword": "Меч Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_rapier": "Рапира Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_sai": "Сай Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_spear": "Копьё Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_twinblade": "Парный клинок Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_warglaive": "Боевой клинок Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_greathammer": "Большой молот", +"item.simplyswords.gobber_compat.gobber.gobber_greataxe": "Большой топор Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_chakram": "Чакра Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_scythe": "Коса Гоббера", +"item.simplyswords.gobber_compat.gobber.gobber_halberd": "Алебарда Гоббера", + +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_claymore": "Незерский клеймор", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_cutlass": "Незерский абордажная сабля", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_glaive": "Незерский глефа", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_katana": "Незерский катана", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_longsword": "Незерский полуторный меч", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_rapier": "Незерский рапира", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_sai": "Незерский сай", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_spear": "Незерский копьё", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_twinblade": "Незерский парный клинок", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_warglaive": "Незерский боевой клинок", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_greathammer": "Незерский большой молот", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_greataxe": "Незерский большой топор", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_chakram": "Незерский чакра", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_scythe": "Незерский коса", +"item.simplyswords.gobber_compat.gobber_nether.gobber_nether_halberd": "Незерский алебарда", + +"item.simplyswords.gobber_compat.gobber_end.gobber_end_claymore": "Клеймор Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_cutlass": "Абордажная сабля", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_glaive": "Глефа Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_katana": "Катана Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_longsword": "Полуторный меч Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_rapier": "Рапира Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_sai": "Сай Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_spear": "Копьё Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_twinblade": "Парный клинок Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_warglaive": "Боевой клинок Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_greathammer": "Большой молот Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_greataxe": "Большой топор Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_chakram": "Чакра Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_scythe": "Коса Гоббера Энда", +"item.simplyswords.gobber_compat.gobber_end.gobber_end_halberd": "Алебарда Гоббера Энда", + +"itemGroup.simplyswords.simplyswords": "Simply Swords", +"item.simplyswords.awakening": "Уровень пробуждения: %d", +"item.simplyswords.awakening.exp": "Опыт пробуждения: %d%%", +"item.simplyswords.awakening.powers": "Пробуждённые силы:", +"item.simplyswords.greater_runic_power": "Greater", +"item.simplyswords.runefused_power": "Наполненная рунами сила:", +"item.simplyswords.gem_description": "Может быть вставлен в соответствующий", +"item.simplyswords.gem_description2": "слот для самоцвета на уникальном оружии.", +"item.simplyswords.remnant_description": "Скуйте при помощи Рунической скрижали", +"item.simplyswords.remnant_description2": "или Незеритового слитка для", +"item.simplyswords.remnant_description3": "создания самоцвета, помещаемого", +"item.simplyswords.remnant_description4": "в уникальные оружия.", +"item.simplyswords.empty_runic_slot": "[ пустое гнездо для руны ]", +"item.simplyswords.empty_nether_slot": "[ пустое незерское гнездо ]", +"item.simplyswords.filled_runic_slot": "[ наполненный рунами самоцвет ]", +"item.simplyswords.contained_remnant_description": "Стабилизирует и сдерживает энергию,", +"item.simplyswords.contained_remnant_description2": "исходящую из остатков.", +"item.simplyswords.contained_remnant_description3": "Похоже, находясь рядом с Вами", +"item.simplyswords.contained_remnant_description4": "его форма меняется.", +"item.simplyswords.contained_remnant_description5": "Держа этот предмет в своём инвентаре,", +"item.simplyswords.contained_remnant_description6": "можете получить дополнительные неочевидные знания.", +"item.simplyswords.contained_remnant_description7": "Будучи исследуя Энд, сохраните это", +"item.simplyswords.contained_remnant_description8": "в своём инвентаре подле", +"item.simplyswords.contained_remnant_description9": "Рунической скрижали.", +"item.simplyswords.contained_remnant.event": "Похоже, остаток в Вашем инвентаре деформировался.", +"item.simplyswords.contained_remnant.event2": "Как это ни странно, остаток в Вашем инвентаре проявляет себя.", +"item.simplyswords.tampered_remnant_description3": "Кажется, он был кем-то", +"item.simplyswords.tampered_remnant_description4": "испорчен...", +"item.simplyswords.decayingrelicsworditem.tooltip1": "Будучи исследуя глубочайшее место,", +"item.simplyswords.decayingrelicsworditem.tooltip2": "тёмные глубины Наземного мира,", +"item.simplyswords.decayingrelicsworditem.tooltip3": "сохраните это в своём инвентаре.", +"item.simplyswords.magicythe.event": "Ваша Разлагающаяся реликвия начинает издавать звуки.", +"item.simplyswords.magicythe.event2": "Ваша Разлагающаяся реликвия, по всей видимости, реагирует на эту область.", +"item.simplyswords.magiblade.event": "Ваша Разлагающаяся реликвия, кажется, вибрирует.", +"item.simplyswords.magiblade.event2": "Ваша Разлагающаяся реликвия, похоже, тянется к блоку, что находится позади Вас.", +"item.simplyswords.magispear.event": "Похоже, что-то воздействует на Вашу Разлагающуюся реликвию.", +"item.simplyswords.magispear.event2": "Ваша Разлагающаяся реликвия, кажется, реагирует на темноту.", + +"effect.simplyswords.freeze": "Freeze", +"effect.simplyswords.omen": "Omen", +"effect.simplyswords.watcher": "Watcher", +"effect.simplyswords.storm": "Storm", +"effect.simplyswords.wildfire": "Wildfire", +"effect.simplyswords.echo": "Echo", +"effect.simplyswords.ward": "Ward", +"effect.simplyswords.immolation": "Immolation", +"effect.simplyswords.onslaught": "Onslaught", +"effect.simplyswords.smouldering": "Smouldering", +"effect.simplyswords.frenzy": "Frenzy", +"effect.simplyswords.voidcloak": "Voidcloak", +"effect.simplyswords.void_assault": "Void Assault", +"effect.simplyswords.voidhunger": "Voidhunger", +"effect.simplyswords.fire_vortex": "Fire Vortex", +"effect.simplyswords.frost_vortex": "Frost Vortex", +"effect.simplyswords.elemental_vortex": "Elemental Vortex", +"effect.simplyswords.flameseed": "Flameseed", +"effect.simplyswords.ribbonwrath": "Ribbonwrath", +"effect.simplyswords.ribboncleave": "Ribboncleave", +"effect.simplyswords.resilience": "Resilience", +"effect.simplyswords.battle_fatigue": "Battle Fatigue", +"effect.simplyswords.pain": "Pain", +"effect.simplyswords.spore_swarm": "Spore Swarm", +"effect.simplyswords.magistorm": "Magistorm", +"effect.simplyswords.magislam": "Magislam", +"effect.simplyswords.astral_shift": "Astral Shift", +"effect.simplyswords.fatal_flicker": "Fatal Flicker", + +"item.simplyswords.onrightclick": "По нажатию ПКМ:", +"item.simplyswords.onrightclickheld": "Удерживание ПКМ:", +"item.simplyswords.firesworditem.tooltip1": "Уникальные эффект: Сера", +"item.simplyswords.firesworditem.tooltip2": "Chance on hit to spew forth explosive brimstone.", + +"item.simplyswords.bramblesworditem.tooltip1": "Уникальные эффект: Терновый шип", +"item.simplyswords.bramblesworditem.tooltip2": "Chance on hit to release a swarm of toxic", +"item.simplyswords.bramblesworditem.tooltip3": "spores that orbit you and inflict increasingly", +"item.simplyswords.bramblesworditem.tooltip4": "devastating effects on nearby enemies.", +"item.simplyswords.bramblesworditem.tooltip5": "The spores will remain active as long as they", +"item.simplyswords.bramblesworditem.tooltip6": "have a target within range, and can remain", +"item.simplyswords.bramblesworditem.tooltip7": "active at reduced effectiveness even", +"item.simplyswords.bramblesworditem.tooltip8": "when swapping weapons.", + +"item.simplyswords.stormsworditem.tooltip1": "Уникальные эффект: Storm", +"item.simplyswords.stormsworditem.tooltip2": "When raining/wet: Chance on hit to bring", +"item.simplyswords.stormsworditem.tooltip3": "lightning down from the sky upon your foes.", +"item.simplyswords.stormsworditem.tooltip4": "While channelled, gain resistance and create", +"item.simplyswords.stormsworditem.tooltip5": "a localised storm that rains lightning down", +"item.simplyswords.stormsworditem.tooltip6": "on nearby enemies.", + +"item.simplyswords.watchersworditem.tooltip1": "Уникальные эффект: Предвестие", +"item.simplyswords.watchersworditem.tooltip2": "Chance on hit to rip the life from a", +"item.simplyswords.watchersworditem.tooltip3": "target below %d%% HP and grant some", +"item.simplyswords.watchersworditem.tooltip4": "of it as absorption to the wielder.", +"item.simplyswords.watchersworditem.tooltip5": "Уникальные эффект: Watcher", +"item.simplyswords.watchersworditem.tooltip6": "Chance on hit to siphon the health", +"item.simplyswords.watchersworditem.tooltip7": "of nearby enemies, healing the wielder.", + +"item.simplyswords.plaguesworditem.tooltip1": "Уникальные эффект: Plague", +"item.simplyswords.plaguesworditem.tooltip2": "Chance on hit to convert positive effects", +"item.simplyswords.plaguesworditem.tooltip3": "into their negative counterpart.", + +"item.simplyswords.emberiresworditem.tooltip1": "Уникальные эффект: Ember Ire", +"item.simplyswords.emberiresworditem.tooltip2": "Channel energy into the blade.", +"item.simplyswords.emberiresworditem.tooltip3": "Upon release, send forth fiery hot shrapnel", +"item.simplyswords.emberiresworditem.tooltip4": "at the nearest target in front of you, dealing", +"item.simplyswords.emberiresworditem.tooltip5": "increased damage the longer the channel.", +"item.simplyswords.emberiresworditem.tooltip6": "Releasing the channel within the last second", +"item.simplyswords.emberiresworditem.tooltip7": "allows you to fire an additional piece of", +"item.simplyswords.emberiresworditem.tooltip8": "shrapnel.", +"item.simplyswords.emberiresworditem.tooltip9": "When releasing shrapnel, you have a", +"item.simplyswords.emberiresworditem.tooltip10": "chance relative to your channel time", +"item.simplyswords.emberiresworditem.tooltip11": "to gain Speed, Haste, and Strength.", + +"item.simplyswords.volcanicfurysworditem.tooltip1": "Уникальные эффект: Volcanic Fury", +"item.simplyswords.volcanicfurysworditem.tooltip2": "Chance on hit to ignite your target", +"item.simplyswords.volcanicfurysworditem.tooltip3": "and send them flying.", +"item.simplyswords.volcanicfurysworditem.tooltip4": "Channel your fury, exchanging health to", +"item.simplyswords.volcanicfurysworditem.tooltip5": "gain resistance, whilst causing tremors", +"item.simplyswords.volcanicfurysworditem.tooltip6": "that pull enemies towards you.", +"item.simplyswords.volcanicfurysworditem.tooltip7": "Stop channelling to unleash your fury,", +"item.simplyswords.volcanicfurysworditem.tooltip8": "launching, igniting, and dealing more", +"item.simplyswords.volcanicfurysworditem.tooltip9": "damage the longer the channel.", + +"item.simplyswords.ferocitysworditem.tooltip1": "Уникальные эффект: Ferocity", +"item.simplyswords.ferocitysworditem.tooltip2": "Chance on hit to increase your attack", +"item.simplyswords.ferocitysworditem.tooltip3": "speed, stacking up to 15 times.", +"item.simplyswords.ferocitysworditem.tooltip4": "Consume all stacks, gaining strength,", +"item.simplyswords.ferocitysworditem.tooltip5": "for a duration equal to the amount of", +"item.simplyswords.ferocitysworditem.tooltip6": "stacks consumed.", + +"item.simplyswords.rendsworditem.tooltip1": "Уникальные эффект: Soul Rend", +"item.simplyswords.rendsworditem.tooltip2": "Chance on hit to inflict stacking weakening", +"item.simplyswords.rendsworditem.tooltip3": "effects.", +"item.simplyswords.rendsworditem.tooltip4": "Consume all stacks from surrounding foes,", +"item.simplyswords.rendsworditem.tooltip5": "damaging them and healing you relative to", +"item.simplyswords.rendsworditem.tooltip6": "the stacks consumed.", + +"item.simplyswords.soulsworditem.tooltip1": "Уникальные эффект: Soul Meld", +"item.simplyswords.soulsworditem.tooltip2": "Chance on hit to absorb nearby souls, toughening ", +"item.simplyswords.soulsworditem.tooltip3": "and slowing the attack speed of the wielder.", +"item.simplyswords.soulsworditem.tooltip4": "Release the souls, transferring the attack", +"item.simplyswords.soulsworditem.tooltip5": "speed debuff to nearby foes and regenerating", +"item.simplyswords.soulsworditem.tooltip6": "the wielder.", + +"item.simplyswords.stealsworditem.tooltip1": "Уникальные эффект: Soul Steal", +"item.simplyswords.stealsworditem.tooltip2": "Chance on hit to absorb your opponents soul,", +"item.simplyswords.stealsworditem.tooltip3": "hastening you while slowing and marking your", +"item.simplyswords.stealsworditem.tooltip4": "target for death.", +"item.simplyswords.stealsworditem.tooltip5": "If within 5 blocks of a soulless target, ", +"item.simplyswords.stealsworditem.tooltip6": "return their soul, leap forward, and gain", +"item.simplyswords.stealsworditem.tooltip7": "invisibility.", +"item.simplyswords.stealsworditem.tooltip8": "If more than 5 blocks from a soulless target,", +"item.simplyswords.stealsworditem.tooltip9": "blink to their location, returning their soul", +"item.simplyswords.stealsworditem.tooltip10": "with force, blinding and damaging them.", + +"item.simplyswords.soulpyresworditem.tooltip1": "Уникальные эффект: Soul Tether", +"item.simplyswords.soulpyresworditem.tooltip2": "Instigate a tethering of souls, trading places", +"item.simplyswords.soulpyresworditem.tooltip3": "with and freezing your target while gaining", +"item.simplyswords.soulpyresworditem.tooltip4": "haste and resistances.", +"item.simplyswords.soulpyresworditem.tooltip5": "Upon reaching your destination, ignite nearby", +"item.simplyswords.soulpyresworditem.tooltip6": "enemies and pull them closer to you.", +"item.simplyswords.soulpyresworditem.tooltip7": "After %ds your soul tether is severed", +"item.simplyswords.soulpyresworditem.tooltip8": "causing you to trade places with your target", +"item.simplyswords.soulpyresworditem.tooltip9": "a second time.", + +"item.simplyswords.frostfallsworditem.tooltip1": "Уникальные эффект: Frost Fury", +"item.simplyswords.frostfallsworditem.tooltip2": "Chance on hit to encase nearby enemies in", +"item.simplyswords.frostfallsworditem.tooltip3": "ice, causing them to take no damage.", +"item.simplyswords.frostfallsworditem.tooltip4": "After %ds the ice shatters causing %d damage.", +"item.simplyswords.frostfallsworditem.tooltip5": "Encase yourself in ice for %ds, rendering you", +"item.simplyswords.frostfallsworditem.tooltip6": "immune and granting you regeneration.", + +"item.simplyswords.moltenedgesworditem.tooltip1": "Уникальные эффект: Molten Roar", +"item.simplyswords.moltenedgesworditem.tooltip2": "Chance on hit to ignite your enemy or yourself.", +"item.simplyswords.moltenedgesworditem.tooltip3": "If low HP, gain regeneration instead.", +"item.simplyswords.moltenedgesworditem.tooltip4": "Gain strength and speed relative to missing HP.", +"item.simplyswords.moltenedgesworditem.tooltip5": "Release a powerful roar, knocking back and", +"item.simplyswords.moltenedgesworditem.tooltip6": "igniting nearby enemies. Gain resistance and", +"item.simplyswords.moltenedgesworditem.tooltip7": "onslaught with a duration relative to enemies hit.", + +"item.simplyswords.livyatansworditem.tooltip1": "Уникальные эффект: Frost Shatter", +"item.simplyswords.livyatansworditem.tooltip2": "Chance on hit to encase nearby enemies in", +"item.simplyswords.livyatansworditem.tooltip3": "ice, causing them to take no damage.", +"item.simplyswords.livyatansworditem.tooltip4": "After %ds the ice shatters causing %d damage.", +"item.simplyswords.livyatansworditem.tooltip5": "Preemptively shatter the ice encasing your", +"item.simplyswords.livyatansworditem.tooltip6": "enemies, dealing more damage the earlier you shatter.", + +"item.simplyswords.icewhispersworditem.tooltip1": "Уникальные эффект: Permafrost", +"item.simplyswords.icewhispersworditem.tooltip2": "While wielded, gain a frost aura that deals", +"item.simplyswords.icewhispersworditem.tooltip3": "damage and slows enemies в пределах %d-ти блоков.", +"item.simplyswords.icewhispersworditem.tooltip4": "Drain your hunger in order to summon a", +"item.simplyswords.icewhispersworditem.tooltip5": "blizzard at your location, slowing and dealing", +"item.simplyswords.icewhispersworditem.tooltip6": "increased damage to enemies within %d blocks.", + +"item.simplyswords.arcanethystsworditem.tooltip1": "Уникальные эффект: Arcane Assault", +"item.simplyswords.arcanethystsworditem.tooltip2": "Chance on hit to levitate your target.", +"item.simplyswords.arcanethystsworditem.tooltip3": "Channel your arcane energy to assault", +"item.simplyswords.arcanethystsworditem.tooltip4": "nearby enemies, lifting them into the", +"item.simplyswords.arcanethystsworditem.tooltip5": "air while dealing damage over time,", +"item.simplyswords.arcanethystsworditem.tooltip6": "then slamming them into the ground.", + +"item.simplyswords.thunderbrandsworditem.tooltip1": "Уникальные эффект: Thunder Blitz", +"item.simplyswords.thunderbrandsworditem.tooltip2": "Chance on hit to refresh ability cooldown.", +"item.simplyswords.thunderbrandsworditem.tooltip3": "Momentarily slow yourself and charge your", +"item.simplyswords.thunderbrandsworditem.tooltip4": "weapon, dealing area damage to nearby foes.", +"item.simplyswords.thunderbrandsworditem.tooltip5": "Once charged, dash forward, gaining haste", +"item.simplyswords.thunderbrandsworditem.tooltip6": "and dealing enormous damage to enemies in", +"item.simplyswords.thunderbrandsworditem.tooltip7": "your path.", + +"item.simplyswords.stormsedgesworditem.tooltip1": "Уникальные эффект: Storm Jolt", +"item.simplyswords.stormsedgesworditem.tooltip2": "Chance on hit to refresh ability cooldown.", +"item.simplyswords.stormsedgesworditem.tooltip3": "Jolt forward like lightning, gaining", +"item.simplyswords.stormsedgesworditem.tooltip4": "momentary invulnerability as well", +"item.simplyswords.stormsedgesworditem.tooltip5": "as lingering speed and haste.", + +"item.simplyswords.lichbladesworditem.tooltip1": "Уникальные эффект: Soul Anguish I", +"item.simplyswords.lichbladesworditem.tooltip1.2": "Уникальные эффект: Soul Anguish II", +"item.simplyswords.lichbladesworditem.tooltip1.3": "Уникальные эффект: Soul Anguish III", +"item.simplyswords.lichbladesworditem.tooltip2": "Tortured souls radiate from you,", +"item.simplyswords.lichbladesworditem.tooltip3": "damaging any nearby enemies.", +"item.simplyswords.lichbladesworditem.tooltip4": "Command your souls to attack", +"item.simplyswords.lichbladesworditem.tooltip5": "a distant target, dealing rapid", +"item.simplyswords.lichbladesworditem.tooltip6": "damage. Chance to siphon health.", +"item.simplyswords.lichbladesworditem.tooltip7": "After the attack subsides, your souls", +"item.simplyswords.lichbladesworditem.tooltip8": "return to you and, when reaching you,", +"item.simplyswords.lichbladesworditem.tooltip9": "grant you absorption.", + +"item.simplyswords.stormbringersworditem.tooltip1": "Уникальные эффект: Shock Deflect", +"item.simplyswords.stormbringersworditem.tooltip2": "Focus energy to a single point of your", +"item.simplyswords.stormbringersworditem.tooltip3": "blade, allowing you to momentarily block", +"item.simplyswords.stormbringersworditem.tooltip4": "incoming attacks.", +"item.simplyswords.stormbringersworditem.tooltip5": "When successfully timing this ability", +"item.simplyswords.stormbringersworditem.tooltip6": "with an enemy melee swing you will", +"item.simplyswords.stormbringersworditem.tooltip7": "perform a parry, dealing damage and", +"item.simplyswords.stormbringersworditem.tooltip8": "launching your opponent while also", +"item.simplyswords.stormbringersworditem.tooltip9": "reducing the ability cooldown.", +"item.simplyswords.stormbringersworditem.tooltip10": "Performing parries in succession will", +"item.simplyswords.stormbringersworditem.tooltip11": "increase the ability damage and cooldown.", + +"item.simplyswords.shadowmistsworditem.tooltip1": "Уникальные эффект: Shadowmist", +"item.simplyswords.shadowmistsworditem.tooltip2": "Chance on hit to deal magic damage that", +"item.simplyswords.shadowmistsworditem.tooltip3": "scales with your targets armor value.", +"item.simplyswords.shadowmistsworditem.tooltip4": "Create a blinding shadowy mist at your feet", +"item.simplyswords.shadowmistsworditem.tooltip5": "and shadowstep forward a short distance.", + +"item.simplyswords.harbingersworditem.tooltip1": "Уникальные эффект: Abyssal Standard", +"item.simplyswords.harbingersworditem.tooltip2": "Chance on hit to inflict weakness.", +"item.simplyswords.harbingersworditem.tooltip3": "Summons an Abyssal Battle Standard that", +"item.simplyswords.harbingersworditem.tooltip4": "pulls, damages, and slows enemies whilst", +"item.simplyswords.harbingersworditem.tooltip5": "periodically granting haste to friendly", +"item.simplyswords.harbingersworditem.tooltip6": "players within its vicinity.", + +"item.simplyswords.sunfiresworditem.tooltip1": "Уникальные эффект: Righteous Standard", +"item.simplyswords.sunfiresworditem.tooltip2": "Chance on hit to regenerate health.", +"item.simplyswords.sunfiresworditem.tooltip3": "Summons a Righteous Battle Standard that", +"item.simplyswords.sunfiresworditem.tooltip4": "ignites, damages, and slows enemies whilst", +"item.simplyswords.sunfiresworditem.tooltip5": "periodically granting strength and health", +"item.simplyswords.sunfiresworditem.tooltip6": "to friendly players within its vicinity.", + +"item.simplyswords.whisperwindsworditem.tooltip1": "Уникальные эффект: Fatal Flicker", +"item.simplyswords.whisperwindsworditem.tooltip2": "Chance on hit to refresh ability cooldown.", +"item.simplyswords.whisperwindsworditem.tooltip3": "Perform a swift forward dash, gaining", +"item.simplyswords.whisperwindsworditem.tooltip4": "resistance and absorption, and inflicting", +"item.simplyswords.whisperwindsworditem.tooltip5": "enemies in your path with Echo.", +"item.simplyswords.whisperwindsworditem.tooltip6": "For every target hit by the dash, the", +"item.simplyswords.whisperwindsworditem.tooltip7": "amount of Echo you inflict is increased.", + +"item.simplyswords.emberlashsworditem.tooltip1": "Уникальные эффект: Smoulder", +"item.simplyswords.emberlashsworditem.tooltip2": "Your attacks inflict Smouldering.", +"item.simplyswords.emberlashsworditem.tooltip3": "Attacking enemies inflicted with", +"item.simplyswords.emberlashsworditem.tooltip4": "Smouldering causes you to deal an", +"item.simplyswords.emberlashsworditem.tooltip5": "additional %d damage per stack.", +"item.simplyswords.emberlashsworditem.tooltip6": "Evade backwards while cauterising", +"item.simplyswords.emberlashsworditem.tooltip7": "your wounds, healing for %d%% of Max HP.", + +"item.simplyswords.waxweaversworditem.tooltip1": "Уникальные эффект: Waxweave", +"item.simplyswords.waxweaversworditem.tooltip2": "Attacking ignited enemies grants", +"item.simplyswords.waxweaversworditem.tooltip3": "you Strength and Haste.", +"item.simplyswords.waxweaversworditem.tooltip4": "When you would die, you are instead", +"item.simplyswords.waxweaversworditem.tooltip5": "imbued with regenerative wax,", +"item.simplyswords.waxweaversworditem.tooltip6": "healing you to full and granting", +"item.simplyswords.waxweaversworditem.tooltip7": "resistance for a short time.", +"item.simplyswords.waxweaversworditem.tooltip8": "This effect can only occur once", +"item.simplyswords.waxweaversworditem.tooltip9": "every %ds. Mainhand only.", + +"item.simplyswords.hiveheartsworditem.tooltip1": "Уникальные эффект: Hivemind", +"item.simplyswords.hiveheartsworditem.tooltip2": "Release an angry bee on hit", +"item.simplyswords.hiveheartsworditem.tooltip3": "that stings your target before", +"item.simplyswords.hiveheartsworditem.tooltip4": "disappearing.", +"item.simplyswords.hiveheartsworditem.tooltip5": "This effect can only occur once", +"item.simplyswords.hiveheartsworditem.tooltip6": "every %ds.", +"item.simplyswords.hiveheartsworditem.tooltip7": "Your bees focus on producing", +"item.simplyswords.hiveheartsworditem.tooltip8": "regenerative honey, healing you", +"item.simplyswords.hiveheartsworditem.tooltip9": "over time but placing the", +"item.simplyswords.hiveheartsworditem.tooltip10": "Hivemind ability on cooldown.", + +"item.simplyswords.starsedgesworditem.tooltip1": "Уникальные эффект: Star's Edge", +"item.simplyswords.starsedgesworditem.tooltip2": "During the day, your attacks inflict", +"item.simplyswords.starsedgesworditem.tooltip3": "%s additional damage.", +"item.simplyswords.starsedgesworditem.tooltip4": "At night, your attacks gain lifesteal.", +"item.simplyswords.starsedgesworditem.tooltip5": "Evade backwards while gaining Speed.", +"item.simplyswords.starsedgesworditem.tooltip6": "Activate a second time to dash", +"item.simplyswords.starsedgesworditem.tooltip7": "forward, gaining resistance and", +"item.simplyswords.starsedgesworditem.tooltip8": "haste.", + +"item.simplyswords.wickpiercersworditem.tooltip1": "Уникальные эффект: Flicker Fury", +"item.simplyswords.wickpiercersworditem.tooltip2": "Instill your mind with fury,", +"item.simplyswords.wickpiercersworditem.tooltip3": "gaining a significant bonus", +"item.simplyswords.wickpiercersworditem.tooltip4": "to attack speed and allowing", +"item.simplyswords.wickpiercersworditem.tooltip5": "each strike of Wickpiercer", +"item.simplyswords.wickpiercersworditem.tooltip6": "to hit twice for %ds.", + +"item.simplyswords.tempestsworditem.tooltip1": "Уникальные эффект: Vortex", +"item.simplyswords.tempestsworditem.tooltip2": "Your attacks attach elemental", +"item.simplyswords.tempestsworditem.tooltip3": "energy to the target, causing", +"item.simplyswords.tempestsworditem.tooltip4": "damage over time and element", +"item.simplyswords.tempestsworditem.tooltip5": "specific debuffs.", +"item.simplyswords.tempestsworditem.tooltip6": "This effect stacks.", +"item.simplyswords.tempestsworditem.tooltip7": "Return all nearby elements to", +"item.simplyswords.tempestsworditem.tooltip8": "yourself, forming a vortex of", +"item.simplyswords.tempestsworditem.tooltip9": "elemental energy around you,", +"item.simplyswords.tempestsworditem.tooltip10": "damaging nearby enemies and", +"item.simplyswords.tempestsworditem.tooltip11": "growing in size.", + +"item.simplyswords.dreadtidesworditem.tooltip1": "Уникальные эффект: Voidcaller", +"item.simplyswords.dreadtidesworditem.tooltip2": "Passively generate stacks of", +"item.simplyswords.dreadtidesworditem.tooltip3": "Voidcloak, increasing attack", +"item.simplyswords.dreadtidesworditem.tooltip4": "speed and reducing incoming", +"item.simplyswords.dreadtidesworditem.tooltip5": "damage by 10% per stack.", +"item.simplyswords.dreadtidesworditem.tooltip6": "Taking damage removes a stack.", +"item.simplyswords.dreadtidesworditem.tooltip7": "Max 1 stack per 20 corruption.", +"item.simplyswords.dreadtidesworditem.tooltip8": "Release your Voidcloak and", +"item.simplyswords.dreadtidesworditem.tooltip9": "send eldritch energy toward", +"item.simplyswords.dreadtidesworditem.tooltip10": "the nearest enemy, dealing", +"item.simplyswords.dreadtidesworditem.tooltip11": "rapid damage.", +"item.simplyswords.dreadtidesworditem.tooltip12": "Wielding this weapon inflicts", +"item.simplyswords.dreadtidesworditem.tooltip13": "you with corruption over time.", + +"item.simplyswords.flamewindsworditem.tooltip1": "Уникальные эффект: Emberstorm", +"item.simplyswords.flamewindsworditem.tooltip2": "When a flame seed detonates,", +"item.simplyswords.flamewindsworditem.tooltip3": "gain Haste.", +"item.simplyswords.flamewindsworditem.tooltip4": "Plant a seed of flame within", +"item.simplyswords.flamewindsworditem.tooltip5": "the nearest enemy, dealing", +"item.simplyswords.flamewindsworditem.tooltip6": "damage over time.", +"item.simplyswords.flamewindsworditem.tooltip7": "Upon expiring, the seed", +"item.simplyswords.flamewindsworditem.tooltip8": "detonates, dealing area", +"item.simplyswords.flamewindsworditem.tooltip9": "damage and spreading the", +"item.simplyswords.flamewindsworditem.tooltip10": "effect to nearby enemies.", +"item.simplyswords.flamewindsworditem.tooltip11": "Spreads up to %d times.", + +"item.simplyswords.ribboncleaversworditem.tooltip1": "Уникальные эффект: Ribbonwrath", +"item.simplyswords.ribboncleaversworditem.tooltip2": "Wielding Ribboncleaver causes", +"item.simplyswords.ribboncleaversworditem.tooltip3": "you to move 5% slower, but", +"item.simplyswords.ribboncleaversworditem.tooltip4": "take 15% less damage.", +"item.simplyswords.ribboncleaversworditem.tooltip5": "Dash forward, shrugging off", +"item.simplyswords.ribboncleaversworditem.tooltip6": "the next few incoming hits,", +"item.simplyswords.ribboncleaversworditem.tooltip7": "gaining knockback resistance,", +"item.simplyswords.ribboncleaversworditem.tooltip8": "and causing your next attack", +"item.simplyswords.ribboncleaversworditem.tooltip9": "to deal +95% damage to a", +"item.simplyswords.ribboncleaversworditem.tooltip10": "single target.", + +"item.simplyswords.magiscythesworditem.tooltip1": "Уникальные эффект: Magistorm", +"item.simplyswords.magiscythesworditem.tooltip2": "Attacking enemies while", +"item.simplyswords.magiscythesworditem.tooltip3": "Magistorm is active grants a", +"item.simplyswords.magiscythesworditem.tooltip4": "chance to repair an equipped", +"item.simplyswords.magiscythesworditem.tooltip5": "item.", +"item.simplyswords.magiscythesworditem.tooltip6": "A localised magical storm", +"item.simplyswords.magiscythesworditem.tooltip7": "manifests above you, dealing", +"item.simplyswords.magiscythesworditem.tooltip8": "damage to nearby enemies.", +"item.simplyswords.magiscythesworditem.tooltip9": "Each time the storm strikes,", +"item.simplyswords.magiscythesworditem.tooltip10": "it has a chance to refresh its", +"item.simplyswords.magiscythesworditem.tooltip11": "duration and increases its", +"item.simplyswords.magiscythesworditem.tooltip12": "severity.", + +"item.simplyswords.enigmasworditem.tooltip1": "Уникальные эффект: Galeforce", +"item.simplyswords.enigmasworditem.tooltip2": "While you are near to your", +"item.simplyswords.enigmasworditem.tooltip3": "twister, gain Haste.", +"item.simplyswords.enigmasworditem.tooltip4": "Summon a twister that chases", +"item.simplyswords.enigmasworditem.tooltip5": "down nearby enemies, dealing", +"item.simplyswords.enigmasworditem.tooltip6": "increased damage the longer", +"item.simplyswords.enigmasworditem.tooltip7": "an enemy remains trapped", +"item.simplyswords.enigmasworditem.tooltip8": "within.", + +"item.simplyswords.magibladesworditem.tooltip1": "Уникальные эффект: Magisonic", +"item.simplyswords.magibladesworditem.tooltip2": "The Magiblade occasionally", +"item.simplyswords.magibladesworditem.tooltip3": "detects and repels approaching", +"item.simplyswords.magibladesworditem.tooltip4": "enemies.", +"item.simplyswords.magibladesworditem.tooltip5": "After a short delay, your", +"item.simplyswords.magibladesworditem.tooltip6": "Magiblade releases a sonic", +"item.simplyswords.magibladesworditem.tooltip7": "boom in front of you, dealing", +"item.simplyswords.magibladesworditem.tooltip8": "damage to enemies caught in", +"item.simplyswords.magibladesworditem.tooltip9": "its path.", + +"item.simplyswords.magispearsworditem.tooltip1": "Уникальные эффект: Magislam", +"item.simplyswords.magispearsworditem.tooltip2": "When attacking enemies,", +"item.simplyswords.magispearsworditem.tooltip3": "you have a chance to deal", +"item.simplyswords.magispearsworditem.tooltip4": "additional magic damage.", +"item.simplyswords.magispearsworditem.tooltip5": "Powered by the Magispear,", +"item.simplyswords.magispearsworditem.tooltip6": "you perform a forward leap,", +"item.simplyswords.magispearsworditem.tooltip7": "followed by a slam attack,", +"item.simplyswords.magispearsworditem.tooltip8": "damaging nearby enemies.", +"item.simplyswords.magispearsworditem.tooltip9": "You are immune while leaping.", + +"item.simplyswords.caelestissworditem.tooltip1": "Уникальные эффект: Astral Shift", +"item.simplyswords.caelestissworditem.tooltip2": "While wielded, grants a chance", +"item.simplyswords.caelestissworditem.tooltip3": "to completely avoid incoming", +"item.simplyswords.caelestissworditem.tooltip4": "damage.", +"item.simplyswords.caelestissworditem.tooltip5": "Briefly step into the astral plane,", +"item.simplyswords.caelestissworditem.tooltip6": "becoming immune to damage for", +"item.simplyswords.caelestissworditem.tooltip7": "%ds", +"item.simplyswords.caelestissworditem.tooltip8": "Upon leaving the astral plane,", +"item.simplyswords.caelestissworditem.tooltip9": "release a violent explosion,", +"item.simplyswords.caelestissworditem.tooltip10": "dealing area damage relative", +"item.simplyswords.caelestissworditem.tooltip11": "to the damage negated while", +"item.simplyswords.caelestissworditem.tooltip12": "in the astral plane.", + +"item.simplyswords.dormantrelicsworditem.tooltip2": "A faint power seems to emanate from within.", +"item.simplyswords.poweredrelicsworditem.tooltip2": "A growing power seems to emanate from within.", + + +"item.simplyswords.levitationsworditem.tooltip1": "Рунический Power: Float", +"item.simplyswords.uniquesworditem.runefused_power.float": "[ Runefused: Float ]", +"item.simplyswords.levitationsworditem.tooltip2": "Chance on hit to reverse the effects", +"item.simplyswords.levitationsworditem.tooltip3": "of gravity on your target.", +"item.simplyswords.speedsworditem.tooltip1": "Рунический Power: Swiftness", +"item.simplyswords.uniquesworditem.runefused_power.swiftness": "[ Runefused: Swiftness ]", +"item.simplyswords.speedsworditem.tooltip2": "Chance on hit to increase the wielders", +"item.simplyswords.speedsworditem.tooltip3": "movespeed for a duration.", +"item.simplyswords.slownesssworditem.tooltip1": "Рунический Power: Slow", +"item.simplyswords.uniquesworditem.runefused_power.slow": "[ Runefused: Slow ]", +"item.simplyswords.slownesssworditem.tooltip2": "Chance on hit to slow the target", +"item.simplyswords.slownesssworditem.tooltip3": "for a duration.", +"item.simplyswords.freezesworditem.tooltip1": "Рунический Power: Freeze", +"item.simplyswords.uniquesworditem.runefused_power.freeze": "[ Runefused: Freeze ]", +"item.simplyswords.freezesworditem.tooltip2": "Chance on hit to chill or freeze your target.", +"item.simplyswords.wildfiresworditem.tooltip1": "Рунический Power: Wildfire", +"item.simplyswords.uniquesworditem.runefused_power.wildfire": "[ Runefused: Wildfire ]", +"item.simplyswords.wildfiresworditem.tooltip2": "Chance on hit to ignite all nearby ", +"item.simplyswords.wildfiresworditem.tooltip3": "entities of the same type as your target.", +"item.simplyswords.zephyrsworditem.tooltip1": "Рунический Power: Zephyr", +"item.simplyswords.uniquesworditem.runefused_power.zephyr": "[ Runefused: Zephyr ]", +"item.simplyswords.zephyrsworditem.tooltip2": "Chance on hit to gain attack and move", +"item.simplyswords.zephyrsworditem.tooltip3": "speed.", +"item.simplyswords.shieldingsworditem.tooltip1": "Рунический Power: Shielding", +"item.simplyswords.uniquesworditem.runefused_power.shielding": "[ Runefused: Shielding ]", +"item.simplyswords.shieldingsworditem.tooltip2": "Chance on hit to gain", +"item.simplyswords.shieldingsworditem.tooltip3": "absorption.", +"item.simplyswords.stoneskinsworditem.tooltip1": "Рунический Power: Stoneskin", +"item.simplyswords.uniquesworditem.runefused_power.stoneskin": "[ Runefused: Stoneskin ]", +"item.simplyswords.stoneskinsworditem.tooltip2": "Chance on hit to increase your", +"item.simplyswords.stoneskinsworditem.tooltip3": "resistance at the cost of speed.", +"item.simplyswords.trailblazesworditem.tooltip1": "Рунический Power: Trailblaze", +"item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Runefused: Trailblaze] ", +"item.simplyswords.trailblazesworditem.tooltip2": "Chance on hit to gain speed and ", +"item.simplyswords.trailblazesworditem.tooltip3": "ignite yourself.", +"item.simplyswords.weakensworditem.tooltip1": "Рунический Power: Weaken", +"item.simplyswords.uniquesworditem.runefused_power.weaken": "[ Runefused: Weaken ]", +"item.simplyswords.weakensworditem.tooltip2": "Chance on hit to slow and", +"item.simplyswords.weakensworditem.tooltip3": "weaken your target.", +"item.simplyswords.unstablesworditem.tooltip1": "Рунический Power: Unstable", +"item.simplyswords.uniquesworditem.runefused_power.unstable": "[ Runefused: Unstable ]", +"item.simplyswords.unstablesworditem.tooltip2": "Regularly apply random effects", +"item.simplyswords.unstablesworditem.tooltip3": "to the wielder.", +"item.simplyswords.activedefencesworditem.tooltip1": "Рунический Power: Active Defence", +"item.simplyswords.uniquesworditem.runefused_power.active_defence": "[ Runefused: Active defence ]", +"item.simplyswords.activedefencesworditem.tooltip2": "Regularly fires arrows at nearby", +"item.simplyswords.activedefencesworditem.tooltip3": "enemies (Requires Arrows).", +"item.simplyswords.frostwardsworditem.tooltip1": "Рунический Power: Frost Ward", +"item.simplyswords.uniquesworditem.runefused_power.frost_ward": "[ Runefused: Frost Ward ]", +"item.simplyswords.frostwardsworditem.tooltip2": "Regularly fires movement impairing", +"item.simplyswords.frostwardsworditem.tooltip3": "snowballs at all nearby enemies.", +"item.simplyswords.momentumsworditem.tooltip1": "Рунический Power: Momentum", +"item.simplyswords.momentumsworditem.tooltip2": "Gain a brief moment of strong", +"item.simplyswords.momentumsworditem.tooltip3": "forward momentum.", +"item.simplyswords.imbuedsworditem.tooltip1": "Рунический Power: Imbued", +"item.simplyswords.uniquesworditem.runefused_power.imbued": "[ Runefused: Imbued ]", +"item.simplyswords.imbuedsworditem.tooltip2": "Chance on hit to deal additional", +"item.simplyswords.imbuedsworditem.tooltip3": "magic damage, scaling with durability.", +"item.simplyswords.pincushionsworditem.tooltip1": "Рунический Power: Pincushion", +"item.simplyswords.uniquesworditem.runefused_power.pincushion": "[ Runefused: Pincushion ]", +"item.simplyswords.pincushionsworditem.tooltip2": "Deal additional damage for each", +"item.simplyswords.pincushionsworditem.tooltip3": "arrow stuck in your body.", +"item.simplyswords.wardsworditem.tooltip1": "Рунический Power: Ward", +"item.simplyswords.wardsworditem.tooltip2": "Sacrifice half your current HP to gain", +"item.simplyswords.wardsworditem.tooltip3": "pulsing absorption relative to your", +"item.simplyswords.wardsworditem.tooltip4": "remaining HP for 6 seconds.", +"item.simplyswords.immolationsworditem.tooltip1": "Рунический Power: Immolation", +"item.simplyswords.immolationsworditem.tooltip2": "Gain an aura of immolation, periodically", +"item.simplyswords.immolationsworditem.tooltip3": "damaging you and nearby foes. Outgoing ", +"item.simplyswords.immolationsworditem.tooltip4": "damage scales with your current HP.", +"item.simplyswords.unidentifiedsworditem.tooltip1": "Рунический Power: ????", +"item.simplyswords.netherfused_gem.tooltip1": "Незерский Power: ????", +"item.simplyswords.unidentifiedsworditem.tooltip2": "Click to identify.", +"item.simplyswords.runic_tablet.tooltip": "Can be used to craft and", +"item.simplyswords.runic_tablet.tooltip2": "re-roll Рунический weapons.", +"item.simplyswords.runic_tablet.tooltip3": "Can also be used to repair", +"item.simplyswords.runic_tablet.tooltip4": "Unique weapons.", + + +"item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Netherfused: Echo ]", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Your weapon swings echo, dealing", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "additional unmitigated damage ", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description3": "after a short delay.", + +"item.simplyswords.uniquesworditem.netherfused_power.berserk": "[ Netherfused: Berserk ]", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description": "When you have an armour value less", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description2": "than 10, your weapon swings siphon ", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description3": "health from the target.", + +"item.simplyswords.uniquesworditem.netherfused_power.radiance": "[ Netherfused: Radiance ]", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description": "When hitting a target afflicted", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description2": "with weakness, gain Immolation", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description3": "for a short duration.", + +"item.simplyswords.uniquesworditem.netherfused_power.onslaught": "[ Netherfused: Onslaught ]", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description": "When hitting a target afflicted", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2": "with slowness, gain Onslaught", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3": "for a short duration.", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4": "(Onslaught grants you pulsing", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5": "haste, but inflicts you with", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6": "weakness when it expires).", + +"item.simplyswords.uniquesworditem.netherfused_power.nullification": "[ Netherfused: Nullification ]", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description": "Summons a Battle Standard on hit", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description2": "that periodically cleanses", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description3": "debuffs from allied players,", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description4": "while stripping buffs from", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description5": "enemies within its vicinity.", + +"item.simplyswords.uniquesworditem.netherfused_power.precise": "[ Netherfused: Precise ]", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description": "Chance to gain several stacks", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description2": "of Precision when activating", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description3": "a signature ability.", + +"item.simplyswords.uniquesworditem.netherfused_power.mighty": "[ Netherfused: Mighty ]", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description": "Chance to gain several stacks", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description2": "of Might when activating", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description3": "a signature ability.", + +"item.simplyswords.uniquesworditem.netherfused_power.stealthy": "[ Netherfused: Stealthy ]", +"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description": "Chance to gain Stealth when", +"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description2": "activating a signature ability.", + +"item.simplyswords.uniquesworditem.netherfused_power.renewed": "[ Netherfused: Renewed ]", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description": "When activating a signature", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description2": "ability, you have a chance", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description3": "to significantly reduce its", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description4": "cooldown.", + +"item.simplyswords.uniquesworditem.netherfused_power.accelerant": "[ Netherfused: Accelerant ]", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description": "Berserkers Berserking signature", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description2": "ability no longer grants you", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description3": "berserking, but its cooldown", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description4": "is reduced significantly.", + +"item.simplyswords.uniquesworditem.netherfused_power.leaping": "[ Netherfused: Leaping ]", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description": "When landing a Leap Slam", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description2": "you have a chance to", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description3": "immediately leap again.", + +"item.simplyswords.uniquesworditem.netherfused_power.spellshield": "[ Netherfused: Spellshield ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description": "Chance on spell cast to gain", +"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description2": "Barrier.", + +"item.simplyswords.uniquesworditem.netherfused_power.spellforged": "[ Netherfused: Spellforged ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description": "While in your mainhand, this", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description2": "weapon grants you increased", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description3": "spell power.", + +"item.simplyswords.uniquesworditem.netherfused_power.soulshock": "[ Netherfused: Soulshock ]", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description": "While held, this weapon grants", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description2": "you increased Soul & Lightning", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description3": "spell power.", + +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard": "[ Netherfused: Spell Standard ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description": "Chance on spell hit to drop a ", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description2": "Spell Standard that grants", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description3": "Precision & Spellforged.", + +"item.simplyswords.uniquesworditem.netherfused_power.warstandard": "[ Netherfused: War Standard ]", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description": "When using a forward charge ability,", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description2": "drop a War Standard that grants", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description3": "Might, and Reveals nearby enemies.", + +"item.simplyswords.uniquesworditem.netherfused_power.deception": "[ Netherfused: Deception ]", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description": "When you evade an attack using", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description2": "Evasion Mastery, you have a", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description3": "chance to cleanse Revealed.", + +"item.simplyswords.common.blacklisteffect": "ABILITY DISABLED", +"item.simplyswords.common.showtooltip": "- Hold §2ALT§7 to view gem sockets -", +"item.simplyswords.common.showtooltip.info": "- Hold §2ALT§7 for more info -", +"item.simplyswords.compat.mythicmetals.regrowth": "Regrowth", +"item.simplyswords.compat.mythicmetals.looting": "Bonus Looting", + +"entity.simplyswords.battlestandard.name": "%d's Battle Standard", + +"item.simplyswords.compat.scaleFire": "§7Ability scales with §6Fire§7 spell power", +"item.simplyswords.compat.scaleFrost": "§7Ability scales with §bFrost§7 spell power", +"item.simplyswords.compat.scaleLightning": "§7Ability scales with §eLightning§7 spell power", +"item.simplyswords.compat.scaleArcane": "§7Ability scales with §dArcane§7 spell power", +"item.simplyswords.compat.scaleSoul": "§7Ability scales with §9Soul§7 spell power", +"item.simplyswords.compat.scaleHealing": "§7Ability scales with §aHealing§7 spell power", + +"simplyswords.general": "Основные", +"simplyswords.gem_powers": "Эффекты от самоцвета", +"simplyswords.loot": "Добыча", +"simplyswords.status_effects": "Статусные эффекты", +"simplyswords.unique_effects": "Уникальные эффекты", +"simplyswords.weapon_attributes": "Атрибуты оружия", + +"simplyswords.weapon_attributes.typeDamageModifier": "§a[Weapon Modifiers]§7", +"simplyswords.weapon_attributes.typeDamageModifier.desc": "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", +"simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Модификатор урона Полуторного меча", +"simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Модификатор урона Парного клинка", +"simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Модификатор урона рапиры", +"simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Модификатор урона Катаны", +"simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Модификатор урона Саи", +"simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Модификатор урона Копья", +"simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Модификатор урона Глефы", +"simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Модификатор урона Боевого клинка", +"simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Модификатор урона Абордажной сабли", +"simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Модификатор урона Клеймора", +"simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Модификатор урона Большого топора", +"simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Модификатор урона Большого молота", +"simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Модификатор урона Чакры", +"simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Модификатор урона Косы", +"simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Модификатор урона Алебарды", + +"simplyswords.weapon_attributes.materialDamageModifier": "§a[Material Modifiers]§7", +"simplyswords.weapon_attributes.materialDamageModifier.desc": "Damage modifiers scale off these base values.", +"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals": "Requires Mythic Metals", +"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals.failTitle": "Disabled", +"simplyswords.weapon_attributes.materialDamageModifier.gobber2": "Requires Gobber", +"simplyswords.weapon_attributes.materialDamageModifier.gobber2.failTitle": "Disabled", +"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end": "Requires Eldritch End", +"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end.failTitle": "Disabled", +"simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Netherite base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Runic base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Adamantite base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Aquarium base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Banglum base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Carmot base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Kyber base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Mythril base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Orichalcum base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Durasteel base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Osmium base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Prometheum base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Quadrillum base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Runite base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Platinum base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Bronze base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Copper base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Steel base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Palladium base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Stormyx base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Celestium base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Metallurgium base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Gobber base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Gobber Nether base damage modifier", +"simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Gobber End base damage modifier", + +"simplyswords.weapon_attributes.typeAttackSpeed": "§a[Attack Speed Modifiers]", +"simplyswords.weapon_attributes.typeAttackSpeed.desc": "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", +"simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Longsword attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Twinblade attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Rapier attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Katana attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Sai attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Spear attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Glaive attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Warglaive attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Cutlass attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Claymore attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Greataxe attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Greathammer damage modifier", +"simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Chakram attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", +"simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", + +"simplyswords.weapon_attributes.uniqueDamageModifier": "§6[Unique Modifiers]", +"simplyswords.weapon_attributes.uniqueDamageModifier.desc": "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", +"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end": "Requires Eldritch End", +"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle": "Disabled", +"simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "§6Sword on a Stick§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6Emberblade§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6Soulrender§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6Frostfall§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6Livyatan§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6Lichblade§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6Sunfire§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6Harbinger§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6Emberlash§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6Tempest§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6Flamewind§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6Enigma§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6Magispear§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", +"simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", + +"simplyswords.weapon_attributes.uniqueAttackSpeed": "§6[Unique Attack Speed Modifiers]", +"simplyswords.weapon_attributes.uniqueAttackSpeed.desc": "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", +"simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6Emberblade§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6Soulrender§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6Frostfall§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6Livyatan§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6Lichblade§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6Sunfire§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6Harbinger§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6Emberlash§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6Tempest§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6Flamewind§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6Enigma§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6Magispear§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6Magiblade§7 attack speed", +"simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6Caelestis§7 attack speed", + +"simplyswords.loot.enableLootDrops": "Enable loot drops", +"simplyswords.loot.enableLootDrops.desc": "Disabling this setting will prevent Simply Swords from generating loot in chests.", +"simplyswords.loot.enableLootInVillages": "Enable loot drops in villages", +"simplyswords.loot.enableLootInVillages.desc": "When enabled, Simply Swords loot can spawn in village chests.", +"simplyswords.loot.standardLootTableWeight": "Standard loot chance", +"simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", +"simplyswords.loot.rareLootTableWeight": "Rare loot chance", +"simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", +"simplyswords.loot.runicLootTableWeight": "Runic loot chance", +"simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", +"simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", +"simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", + +"simplyswords.loot.uniqueLootTableOptions": "Unique Weapon Loot Tables", +"simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that unique weapons will appear in, and the chance they appear in that table", + +"simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", +"simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nIncluding the id of any unique sword will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay.", + +"simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", +"simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", +"simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", +"simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", +"simplyswords.general": "General Settings", +"simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", +"simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", +"simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", +"simplyswords.general.enablePassiveParticles": "Enable passive particles", +"simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", +"simplyswords.general.enableUniqueGemSockets.desc": "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", +"simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", +"simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Requires Gobber", +"simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle": "Disabled", +"simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", + +"simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", +"simplyswords.general.compatEnableSpellPowerScaling.condition": "Requires Spell Power", +"simplyswords.general.compatEnableSpellPowerScaling.failTitle": "Disabled", + +"simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", +"simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", + +"simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", +"simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", +"simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", +"simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", +"simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", +"simplyswords.unique_effects.watcher.omenChance": "Omen chance", +"simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", + +"simplyswords.unique_effects.steal": "§6[Soulstealer]§7", +"simplyswords.unique_effects.steal.chance": "Steal chance", +"simplyswords.unique_effects.steal.duration": "Steal duration", +"simplyswords.unique_effects.steal.radius": "Steal radius", +"simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", +"simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", +"simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", + +"simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", +"simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", +"simplyswords.unique_effects.soulkeeper.duration": "Soulmeld duration", +"simplyswords.unique_effects.soulkeeper.radius": "Soulmeld radius", + +"simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", +"simplyswords.unique_effects.soulRend.chance": "Soulrend chance", +"simplyswords.unique_effects.soulRend.duration": "Soulrend duration", +"simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", +"simplyswords.unique_effects.soulRend.radius": "Soulrend radius", +"simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", +"simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", +"simplyswords.unique_effects.soulRend.spellScaling": "Soulrend Spell Power DMG multi", + +"simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", +"simplyswords.unique_effects.ferocity.chance": "Ferocity chance", +"simplyswords.unique_effects.ferocity.duration": "Ferocity duration", +"simplyswords.unique_effects.ferocity.maxStacks": "Ferocity max stacks", +"simplyswords.unique_effects.ferocity.strengthTier": "Ferocity strength amplifier", + +"simplyswords.unique_effects.emberIre": "§6[Emberblade]§7", +"simplyswords.unique_effects.emberIre.chance": "Ember Ire chance", +"simplyswords.unique_effects.emberIre.duration": "Ember Ire duration", + +"simplyswords.unique_effects.volcanicFury": "§6[Hearthflame]§7", +"simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", +"simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", +"simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", +"simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", +"simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", + +"simplyswords.unique_effects.storm": "§6[Mjolnir]§7", +"simplyswords.unique_effects.storm.chance": "Storm chance", +"simplyswords.unique_effects.storm.cooldown": "Storm cooldown", +"simplyswords.unique_effects.storm.duration": "Storm duration", +"simplyswords.unique_effects.storm.frequency": "Storm frequency", +"simplyswords.unique_effects.storm.radius": "Storm radius", + +"simplyswords.unique_effects.plague": "§6[Longsword of The Plague]§7", +"simplyswords.unique_effects.plague.chance": "Plague chance", + +"simplyswords.unique_effects.brimstone": "§6[Brimstone Claymore]§7", +"simplyswords.unique_effects.brimstone.chance": "Brimstone chance", + +"simplyswords.unique_effects.bramble": "§6[Bramblethorn]§7", +"simplyswords.unique_effects.bramble.Chance": "Bramble chance", + +"simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", +"simplyswords.unique_effects.soultether.duration": "Soultether duration", +"simplyswords.unique_effects.soultether.range": "Soultether range", +"simplyswords.unique_effects.soultether.radius": "Soultether radius", +"simplyswords.unique_effects.soultether.duration": "Soultether duration", +"simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", +"simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", +"simplyswords.unique_effects.frostFury": "§6[Frostfall]§7", +"simplyswords.unique_effects.frostFury.chance": "Frost Fury chance", +"simplyswords.unique_effects.frostFury.cooldown": "Frost Fury cooldown", +"simplyswords.unique_effects.frostFury.damage": "Frost Fury damage", +"simplyswords.unique_effects.frostFury.duration": "Frost Fury duration", +"simplyswords.unique_effects.frostFury.radius": "Frost Fury radius", +"simplyswords.unique_effects.frostFury.spellScaling": "Frost Fury Spell Power DMG multi", + +"simplyswords.unique_effects.moltenRoar": "§6[Molten Edge]§7", +"simplyswords.unique_effects.moltenRoar.chance": "Molten Roar chance", +"simplyswords.unique_effects.moltenRoar.cooldown": "Molten Roar cooldown", +"simplyswords.unique_effects.moltenRoar.duration": "Molten Roar duration", +"simplyswords.unique_effects.moltenRoar.knockbackStrength": "Molten Roar Knockback strength", +"simplyswords.unique_effects.moltenRoar.radius": "Molten Roar radius", + +"simplyswords.unique_effects.frostShatter": "§6[Livyatan]§7", +"simplyswords.unique_effects.frostShatter.chance": "Frost Shatter chance", +"simplyswords.unique_effects.frostShatter.damage": "Frost Shatter damage", +"simplyswords.unique_effects.frostShatter.duration": "Frost Shatter duration", +"simplyswords.unique_effects.frostShatter.radius": "Frost Shatter radius", +"simplyswords.unique_effects.frostShatter.spellScaling": "Frost Shatter Spell Power DMG multi", + +"simplyswords.unique_effects.permafrost": "§6[Icewhisper]§7", +"simplyswords.unique_effects.permafrost.cooldown": "Permafrost cooldown", +"simplyswords.unique_effects.permafrost.damage": "Permafrost damage", +"simplyswords.unique_effects.permafrost.duration": "Permafrost duration", +"simplyswords.unique_effects.permafrost.radius": "Permafrost radius", +"simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", + +"simplyswords.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", +"simplyswords.unique_effects.arcaneAssault.chance": "Arcane Assault chance", +"simplyswords.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", +"simplyswords.unique_effects.arcaneAssault.damage": "Arcane Assault damage", +"simplyswords.unique_effects.arcaneAssault.duration": "Arcane Assault duration", +"simplyswords.unique_effects.arcaneAssault.radius": "Arcane Assault radius", +"simplyswords.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", + +"simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", +"simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", +"simplyswords.unique_effects.thunderBlitz.cooldown": "Thunder Blitz cooldown", +"simplyswords.unique_effects.thunderBlitz.damage": "Thunder Blitz damage", +"simplyswords.unique_effects.thunderBlitz.radius": "Thunder Blitz radius", +"simplyswords.unique_effects.thunderBlitz.spellScaling": "Thunder Blitz Spell Power DMG multi", + +"simplyswords.unique_effects.stormJolt": "§6[Storm's Edge]§7", +"simplyswords.unique_effects.stormJolt.chance": "Storm Jolt chance", +"simplyswords.unique_effects.stormJolt.cooldown": "Storm Jolt cooldown", + +"simplyswords.unique_effects.soulAnguish": "§6[Lichblade]§7", +"simplyswords.unique_effects.soulAnguish.absorptionCap": "Soul Anguish absorption cap", +"simplyswords.unique_effects.soulAnguish.cooldown": "Soul Anguish cooldown", +"simplyswords.unique_effects.soulAnguish.damage": "Soul Anguish damage", +"simplyswords.unique_effects.soulAnguish.duration": "Soul Anguish duration", +"simplyswords.unique_effects.soulAnguish.heal": "Soul Anguish heal", +"simplyswords.unique_effects.soulAnguish.radius": "Soul Anguish radius", +"simplyswords.unique_effects.soulAnguish.range": "Soul Anguish range", +"simplyswords.unique_effects.soulAnguish.spellScaling": "Soul Anguish Spell Power DMG multi", + +"simplyswords.unique_effects.shockDeflect": "§6[Stormbringer]§7", +"simplyswords.unique_effects.shockDeflect.Cooldown": "Shock Deflect cooldown", +"simplyswords.unique_effects.shockDeflect.Damage": "Shock Deflect damage", +"simplyswords.unique_effects.shockDeflect.SpellScaling": "Shock Deflect Spell Power DMG multi", +"simplyswords.unique_effects.shockDeflect.BlockDuration": "Shock Deflect radius", +"simplyswords.unique_effects.shockDeflect.ParryDuration": "Shock Deflect chance", + +"simplyswords.unique_effects.shadowmist": "§6[Shadowsting]§7", +"simplyswords.unique_effects.shadowmist.chance": "Shadowmist chance", +"simplyswords.unique_effects.shadowmist.cooldown": "Shadowmist cooldown", +"simplyswords.unique_effects.shadowmist.damageMulti": "Shadowmist damage multiplier", +"simplyswords.unique_effects.shadowmist.radius": "Shadowmist radius", +"simplyswords.unique_effects.shadowmist.blindDuration": "Shadowmist Blind duration", + +"simplyswords.unique_effects.abyssalStandard": "§6[Abyssal Standard]§7", +"simplyswords.unique_effects.abyssalStandard.chance": "Abyssal Standard chance", +"simplyswords.unique_effects.abyssalStandard.cooldown": "Abyssal Standard cooldown", +"simplyswords.unique_effects.abyssalStandard.damage": "Abyssal Standard damage", +"simplyswords.unique_effects.abyssalStandard.spellScaling": "Abyssal Standard Spell Power DMG multi", + +"simplyswords.unique_effects.righteousStandard": "§6[Righteous Standard]§7", +"simplyswords.unique_effects.righteousStandard.chance": "Righteous Standard chance", +"simplyswords.unique_effects.righteousStandard.cooldown": "Righteous Standard cooldown", +"simplyswords.unique_effects.righteousStandard.damage": "Righteous Standard damage", +"simplyswords.unique_effects.righteousStandard.spellScaling": "Righteous Standard Spell Power DMG multi", +"simplyswords.unique_effects.righteousStandard.spellScalingHeal": "Righteous Standard Spell Power HEAL multi", + +"simplyswords.unique_effects.fatalFlicker": "§6[Whisperwind]§7", +"simplyswords.unique_effects.fatalFlicker.chance": "Fatal Flicker chance", +"simplyswords.unique_effects.fatalFlicker.cooldown": "Fatal Flicker cooldown", +"simplyswords.unique_effects.fatalFlicker.maxStacks": "Fatal Flicker max stacks", +"simplyswords.unique_effects.fatalFlicker.radius": "Fatal Flicker radius", +"simplyswords.unique_effects.fatalFlicker.dashVelocity": "Fatal Flicker dash velocity", + +"simplyswords.unique_effects.smoulder": "§6[Emberlash]§7", +"simplyswords.unique_effects.smoulder.cooldown": "Smoulder cooldown", +"simplyswords.unique_effects.smoulder.heal": "Smoulder heal percent", +"simplyswords.unique_effects.smoulder.maxStacks": "Smoulder max stacks", +"simplyswords.unique_effects.smoulder.spellScaling": "Smoulder Spell Power DMG multi", + +"simplyswords.unique_effects.waxweave": "§6[Waxweaver]§7", +"simplyswords.unique_effects.waxweave.cooldown": "Waxweave cooldown", +"simplyswords.unique_effects.waxweave.maxStacks": "Waxweave max stacks", + +"simplyswords.unique_effects.hivemind": "§6[Hiveheart]§7", +"simplyswords.unique_effects.hivemind.cooldown": "Hivemind cooldown", +"simplyswords.unique_effects.hivemind.damage": "Hivemind damage modifier", +"simplyswords.unique_effects.hivemind.duration": "Hivemind duration", + +"simplyswords.unique_effects.celestialSurge": "§6[Star's Edge]§7", +"simplyswords.unique_effects.celestialSurge.cooldown": "Celestial Surge cooldown", +"simplyswords.unique_effects.celestialSurge.duration": "Celestial Surge duration", +"simplyswords.unique_effects.celestialSurge.damageModifier": "Celestial Surge Damage modifier", +"simplyswords.unique_effects.celestialSurge.lifestealModifier": "Celestial Surge Lifesteal modifier", +"simplyswords.unique_effects.celestialSurge.stacks": "Celestial Surge Haste stacks", + +"simplyswords.unique_effects.flickerFury": "§6[Wickpiercer]§7", +"simplyswords.unique_effects.flickerFury.cooldown": "Flicker Fury cooldown", +"simplyswords.unique_effects.flickerFury.damage": "Flicker Fury damage modifier", +"simplyswords.unique_effects.flickerFury.duration": "Flicker Fury duration", + +"simplyswords.unique_effects.vortex": "§6[Tempest]§7", +"simplyswords.unique_effects.vortex.duration": "Vortex duration", +"simplyswords.unique_effects.vortex.maxSize": "Vortex max size", +"simplyswords.unique_effects.vortex.maxStacks": "Vortex max stacks", +"simplyswords.unique_effects.vortex.spellScaling": "Vortex Spell Power DMG multi", + +"simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", +"simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", +"simplyswords.unique_effects.voidcaller.compat.failTitle": "Disabled", +"simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", +"simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", +"simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", +"simplyswords.unique_effects.voidcaller.corruptionFrequency": "Voidcaller Corruption frequency", +"simplyswords.unique_effects.voidcaller.corruptionPerTick": "Voidcaller Corruption per tick", +"simplyswords.unique_effects.voidcaller.corruptionDuration": "Voidcaller Corruption duration", +"simplyswords.unique_effects.voidcaller.corruptionMax": "Voidcaller Corruption max", + +"simplyswords.unique_effects.emberstorm": "§6[Flamewind]§7", +"simplyswords.unique_effects.emberstorm.cooldown": "Emberstorm cooldown", +"simplyswords.unique_effects.emberstorm.damage": "Emberstorm damage", +"simplyswords.unique_effects.emberstorm.spellScaling": "Emberstorm Spell Power DMG multi", +"simplyswords.unique_effects.emberstorm.detonationDamage": "Emberstorm detonation damage", +"simplyswords.unique_effects.emberstorm.maxHaste": "Emberstorm Haste max", +"simplyswords.unique_effects.emberstorm.spreadCap": "Emberstorm spread cap", + +"simplyswords.unique_effects.ribbonwrath": "§6[Ribboncleaver]§7", +"simplyswords.unique_effects.ribbonwrath.cooldown": "Ribbonwrath cooldown", +"simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Ribbonwrath damage bonus percent", +"simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Ribbonwrath resilience amplifier", + +"simplyswords.unique_effects.magistorm": "§6[Magiscythe]§7", +"simplyswords.unique_effects.magistorm.cooldown": "Magiscythe cooldown", +"simplyswords.unique_effects.magistorm.damage": "Magistorm damage", +"simplyswords.unique_effects.magistorm.duration": "Magistorm duration", +"simplyswords.unique_effects.magistorm.radius": "Magistorm radius", +"simplyswords.unique_effects.magistorm.repairChance": "Magistorm repair chance", +"simplyswords.unique_effects.magistorm.spellScaling": "Magistorm Spell Power DMG multi", + +"simplyswords.unique_effects.enigma": "§6[Enigma]§7", +"simplyswords.unique_effects.enigma.cooldown": "Enigma cooldown", +"simplyswords.unique_effects.enigma.chaseRadius": "Enigma chase radius", +"simplyswords.unique_effects.enigma.decayRate": "Enigma decay rate", + +"simplyswords.unique_effects.magiblade": "§6[Magiblade]§7", +"simplyswords.unique_effects.magiblade.cooldown": "Magisonic cooldown", +"simplyswords.unique_effects.magiblade.damageModifier": "Magisonic damage modifier", +"simplyswords.unique_effects.magiblade.repelChance": "Magisonic repel chance", +"simplyswords.unique_effects.magiblade.repelRadius": "Magisonic repel radius", +"simplyswords.unique_effects.magiblade.sonicDistance": "Magisonic sonic distance", + +"simplyswords.unique_effects.magislam": "§6[Magispear]§7", +"simplyswords.unique_effects.magislam.cooldown": "Magislam cooldown", +"simplyswords.unique_effects.magislam.damageModifier": "Magislam damage modifier", +"simplyswords.unique_effects.magislam.radius": "Magislam radius", +"simplyswords.unique_effects.magislam.magicChance": "Magislam magic chance", +"simplyswords.unique_effects.magislam.magicModifier": "Magislam magic modifier", + +"simplyswords.unique_effects.astralShift": "§6[Caelestis]§7", +"simplyswords.unique_effects.astralShift.chance": "Astral Shift avoidance chance", +"simplyswords.unique_effects.astralShift.cooldown": "Astral Shift cooldown", +"simplyswords.unique_effects.astralShift.damageMax": "Astral Shift damage max", +"simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", +"simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", + +"simplyswords.gem_powers": "Runic and Fused Gem Powers", +"simplyswords.gem_powers.disabledPowers": "Disabled Gem Powers", +"simplyswords.gem_powers.disabledPowers.desc": "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", +"simplyswords.gem_powers.swiftness": "§b[Swiftness]§7", +"simplyswords.gem_powers.slow": "§b[Slow]§7", +"simplyswords.gem_powers.poison": "§b[Poison]§7", +"simplyswords.gem_powers.freeze": "§b[Freeze]§7", +"simplyswords.gem_powers.wildfire": "§b[Wildfire]§7", +"simplyswords.gem_powers.floating": "§b[Float]§7", +"simplyswords.gem_powers.zephyr": "§b[Zephyr]§7", +"simplyswords.gem_powers.shielding": "§b[Shielding]§7", +"simplyswords.gem_powers.stoneskin": "§b[Stoneskin]§7", +"simplyswords.gem_powers.trailblaze": "§b[Trailblaze]§7", +"simplyswords.gem_powers.weaken": "§b[Weaken]§7", +"simplyswords.gem_powers.unstable": "§b[Unstable]§7", +"simplyswords.gem_powers.activeDefence": "§b[Active Defence]§7", +"simplyswords.gem_powers.frostWard": "§b[Frost Ward]§7", +"simplyswords.gem_powers.momentum": "§b[Momentum]§7", +"simplyswords.gem_powers.imbued": "§b[Imbued]§7", +"simplyswords.gem_powers.simplySkills": "Simply Skills Powers", +"simplyswords.gem_powers.simplySkills.desc": "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", +"simplyswords.gem_powers.simplySkills.condition": "Requires Simply Skills", +"simplyswords.gem_powers.simplySkills.failTitle": "Disabled", +"simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", +"simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", +"simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", +"simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", +"simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", +"simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", + +"simplyswords_main.option.status_effects.echoDamage": "Echo base damage", + +"simplyswords.config.basic_settings.chance": "Chance", +"simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", +"simplyswords.config.basic_settings.duration": "Duration", +"simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", +"simplyswords.config.basic_settings.radius": "Radius", +"simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", +"simplyswords.config.basic_settings.frequency": "Frequency", +"simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs 'once per X ticks'", +"simplyswords.config.basic_settings.cooldown": "Cooldown", +"simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" +"simplyswords.config.basic_settings.chance": "Chance", +"simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", +"simplyswords.config.basic_settings.duration": "Duration", +"simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", +"simplyswords.config.basic_settings.radius": "Radius", +"simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", +"simplyswords.config.basic_settings.frequency": "Frequency", +"simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", +"simplyswords.config.basic_settings.cooldown": "Cooldown", +"simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" } From 1df0a467a5d6776f4f4206c20d3327cf16dd7baf Mon Sep 17 00:00:00 2001 From: Heimdallr-1 Date: Thu, 19 Dec 2024 17:05:37 +0500 Subject: [PATCH 35/37] Update ru_ru.json --- .../assets/simplyswords/lang/ru_ru.json | 474 +++++++++--------- 1 file changed, 236 insertions(+), 238 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json index e75e8d11..31b7fac0 100644 --- a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json +++ b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json @@ -128,9 +128,9 @@ "item.simplyswords.runic_tablet": "Руническая скрижаль", "item.simplyswords.runefused_gem": "Насыщенные руной самоцвет", "item.simplyswords.netherfused_gem": "Сплавленный незером самоцвет", -"item.simplyswords.empowered_remnant": "Empowered Remnant", -"item.simplyswords.contained_remnant": "Contained Remnant", -"item.simplyswords.tampered_remnant": "Tampered Remnant", +"item.simplyswords.empowered_remnant": "Усиленные остатки", +"item.simplyswords.contained_remnant": "Contained остатки", +"item.simplyswords.tampered_remnant": "Искажённые остатки", "item.simplyswords.mythicmetals_compat.adamantite.adamantite_claymore": "Адамантитовый клеймор", "item.simplyswords.mythicmetals_compat.adamantite.adamantite_cutlass": "Адамантитовая абордажная сабля", @@ -475,7 +475,7 @@ "item.simplyswords.awakening": "Уровень пробуждения: %d", "item.simplyswords.awakening.exp": "Опыт пробуждения: %d%%", "item.simplyswords.awakening.powers": "Пробуждённые силы:", -"item.simplyswords.greater_runic_power": "Greater", +"item.simplyswords.greater_runic_power": "Искусный", "item.simplyswords.runefused_power": "Наполненная рунами сила:", "item.simplyswords.gem_description": "Может быть вставлен в соответствующий", "item.simplyswords.gem_description2": "слот для самоцвета на уникальном оружии.", @@ -497,8 +497,8 @@ "item.simplyswords.contained_remnant_description9": "Рунической скрижали.", "item.simplyswords.contained_remnant.event": "Похоже, остаток в Вашем инвентаре деформировался.", "item.simplyswords.contained_remnant.event2": "Как это ни странно, остаток в Вашем инвентаре проявляет себя.", -"item.simplyswords.tampered_remnant_description3": "Кажется, он был кем-то", -"item.simplyswords.tampered_remnant_description4": "испорчен...", +"item.simplyswords.tampered_remnant_description3": "Кажется, он был", +"item.simplyswords.tampered_remnant_description4": "кем-то испорчен...", "item.simplyswords.decayingrelicsworditem.tooltip1": "Будучи исследуя глубочайшее место,", "item.simplyswords.decayingrelicsworditem.tooltip2": "тёмные глубины Наземного мира,", "item.simplyswords.decayingrelicsworditem.tooltip3": "сохраните это в своём инвентаре.", @@ -509,227 +509,227 @@ "item.simplyswords.magispear.event": "Похоже, что-то воздействует на Вашу Разлагающуюся реликвию.", "item.simplyswords.magispear.event2": "Ваша Разлагающаяся реликвия, кажется, реагирует на темноту.", -"effect.simplyswords.freeze": "Freeze", -"effect.simplyswords.omen": "Omen", -"effect.simplyswords.watcher": "Watcher", -"effect.simplyswords.storm": "Storm", -"effect.simplyswords.wildfire": "Wildfire", -"effect.simplyswords.echo": "Echo", -"effect.simplyswords.ward": "Ward", -"effect.simplyswords.immolation": "Immolation", -"effect.simplyswords.onslaught": "Onslaught", -"effect.simplyswords.smouldering": "Smouldering", -"effect.simplyswords.frenzy": "Frenzy", -"effect.simplyswords.voidcloak": "Voidcloak", -"effect.simplyswords.void_assault": "Void Assault", -"effect.simplyswords.voidhunger": "Voidhunger", -"effect.simplyswords.fire_vortex": "Fire Vortex", -"effect.simplyswords.frost_vortex": "Frost Vortex", -"effect.simplyswords.elemental_vortex": "Elemental Vortex", -"effect.simplyswords.flameseed": "Flameseed", -"effect.simplyswords.ribbonwrath": "Ribbonwrath", -"effect.simplyswords.ribboncleave": "Ribboncleave", -"effect.simplyswords.resilience": "Resilience", -"effect.simplyswords.battle_fatigue": "Battle Fatigue", -"effect.simplyswords.pain": "Pain", -"effect.simplyswords.spore_swarm": "Spore Swarm", -"effect.simplyswords.magistorm": "Magistorm", -"effect.simplyswords.magislam": "Magislam", -"effect.simplyswords.astral_shift": "Astral Shift", -"effect.simplyswords.fatal_flicker": "Fatal Flicker", - -"item.simplyswords.onrightclick": "По нажатию ПКМ:", -"item.simplyswords.onrightclickheld": "Удерживание ПКМ:", -"item.simplyswords.firesworditem.tooltip1": "Уникальные эффект: Сера", -"item.simplyswords.firesworditem.tooltip2": "Chance on hit to spew forth explosive brimstone.", - -"item.simplyswords.bramblesworditem.tooltip1": "Уникальные эффект: Терновый шип", -"item.simplyswords.bramblesworditem.tooltip2": "Chance on hit to release a swarm of toxic", -"item.simplyswords.bramblesworditem.tooltip3": "spores that orbit you and inflict increasingly", -"item.simplyswords.bramblesworditem.tooltip4": "devastating effects on nearby enemies.", -"item.simplyswords.bramblesworditem.tooltip5": "The spores will remain active as long as they", -"item.simplyswords.bramblesworditem.tooltip6": "have a target within range, and can remain", -"item.simplyswords.bramblesworditem.tooltip7": "active at reduced effectiveness even", -"item.simplyswords.bramblesworditem.tooltip8": "when swapping weapons.", - -"item.simplyswords.stormsworditem.tooltip1": "Уникальные эффект: Storm", -"item.simplyswords.stormsworditem.tooltip2": "When raining/wet: Chance on hit to bring", -"item.simplyswords.stormsworditem.tooltip3": "lightning down from the sky upon your foes.", -"item.simplyswords.stormsworditem.tooltip4": "While channelled, gain resistance and create", -"item.simplyswords.stormsworditem.tooltip5": "a localised storm that rains lightning down", -"item.simplyswords.stormsworditem.tooltip6": "on nearby enemies.", - -"item.simplyswords.watchersworditem.tooltip1": "Уникальные эффект: Предвестие", -"item.simplyswords.watchersworditem.tooltip2": "Chance on hit to rip the life from a", -"item.simplyswords.watchersworditem.tooltip3": "target below %d%% HP and grant some", -"item.simplyswords.watchersworditem.tooltip4": "of it as absorption to the wielder.", -"item.simplyswords.watchersworditem.tooltip5": "Уникальные эффект: Watcher", -"item.simplyswords.watchersworditem.tooltip6": "Chance on hit to siphon the health", -"item.simplyswords.watchersworditem.tooltip7": "of nearby enemies, healing the wielder.", - -"item.simplyswords.plaguesworditem.tooltip1": "Уникальные эффект: Plague", -"item.simplyswords.plaguesworditem.tooltip2": "Chance on hit to convert positive effects", -"item.simplyswords.plaguesworditem.tooltip3": "into their negative counterpart.", - -"item.simplyswords.emberiresworditem.tooltip1": "Уникальные эффект: Ember Ire", -"item.simplyswords.emberiresworditem.tooltip2": "Channel energy into the blade.", -"item.simplyswords.emberiresworditem.tooltip3": "Upon release, send forth fiery hot shrapnel", -"item.simplyswords.emberiresworditem.tooltip4": "at the nearest target in front of you, dealing", -"item.simplyswords.emberiresworditem.tooltip5": "increased damage the longer the channel.", -"item.simplyswords.emberiresworditem.tooltip6": "Releasing the channel within the last second", -"item.simplyswords.emberiresworditem.tooltip7": "allows you to fire an additional piece of", -"item.simplyswords.emberiresworditem.tooltip8": "shrapnel.", -"item.simplyswords.emberiresworditem.tooltip9": "When releasing shrapnel, you have a", -"item.simplyswords.emberiresworditem.tooltip10": "chance relative to your channel time", -"item.simplyswords.emberiresworditem.tooltip11": "to gain Speed, Haste, and Strength.", - -"item.simplyswords.volcanicfurysworditem.tooltip1": "Уникальные эффект: Volcanic Fury", -"item.simplyswords.volcanicfurysworditem.tooltip2": "Chance on hit to ignite your target", -"item.simplyswords.volcanicfurysworditem.tooltip3": "and send them flying.", -"item.simplyswords.volcanicfurysworditem.tooltip4": "Channel your fury, exchanging health to", -"item.simplyswords.volcanicfurysworditem.tooltip5": "gain resistance, whilst causing tremors", -"item.simplyswords.volcanicfurysworditem.tooltip6": "that pull enemies towards you.", -"item.simplyswords.volcanicfurysworditem.tooltip7": "Stop channelling to unleash your fury,", -"item.simplyswords.volcanicfurysworditem.tooltip8": "launching, igniting, and dealing more", -"item.simplyswords.volcanicfurysworditem.tooltip9": "damage the longer the channel.", - -"item.simplyswords.ferocitysworditem.tooltip1": "Уникальные эффект: Ferocity", -"item.simplyswords.ferocitysworditem.tooltip2": "Chance on hit to increase your attack", -"item.simplyswords.ferocitysworditem.tooltip3": "speed, stacking up to 15 times.", -"item.simplyswords.ferocitysworditem.tooltip4": "Consume all stacks, gaining strength,", -"item.simplyswords.ferocitysworditem.tooltip5": "for a duration equal to the amount of", -"item.simplyswords.ferocitysworditem.tooltip6": "stacks consumed.", - -"item.simplyswords.rendsworditem.tooltip1": "Уникальные эффект: Soul Rend", -"item.simplyswords.rendsworditem.tooltip2": "Chance on hit to inflict stacking weakening", -"item.simplyswords.rendsworditem.tooltip3": "effects.", -"item.simplyswords.rendsworditem.tooltip4": "Consume all stacks from surrounding foes,", -"item.simplyswords.rendsworditem.tooltip5": "damaging them and healing you relative to", -"item.simplyswords.rendsworditem.tooltip6": "the stacks consumed.", - -"item.simplyswords.soulsworditem.tooltip1": "Уникальные эффект: Soul Meld", -"item.simplyswords.soulsworditem.tooltip2": "Chance on hit to absorb nearby souls, toughening ", -"item.simplyswords.soulsworditem.tooltip3": "and slowing the attack speed of the wielder.", -"item.simplyswords.soulsworditem.tooltip4": "Release the souls, transferring the attack", -"item.simplyswords.soulsworditem.tooltip5": "speed debuff to nearby foes and regenerating", -"item.simplyswords.soulsworditem.tooltip6": "the wielder.", - -"item.simplyswords.stealsworditem.tooltip1": "Уникальные эффект: Soul Steal", -"item.simplyswords.stealsworditem.tooltip2": "Chance on hit to absorb your opponents soul,", -"item.simplyswords.stealsworditem.tooltip3": "hastening you while slowing and marking your", -"item.simplyswords.stealsworditem.tooltip4": "target for death.", -"item.simplyswords.stealsworditem.tooltip5": "If within 5 blocks of a soulless target, ", -"item.simplyswords.stealsworditem.tooltip6": "return their soul, leap forward, and gain", -"item.simplyswords.stealsworditem.tooltip7": "invisibility.", -"item.simplyswords.stealsworditem.tooltip8": "If more than 5 blocks from a soulless target,", -"item.simplyswords.stealsworditem.tooltip9": "blink to their location, returning their soul", -"item.simplyswords.stealsworditem.tooltip10": "with force, blinding and damaging them.", - -"item.simplyswords.soulpyresworditem.tooltip1": "Уникальные эффект: Soul Tether", -"item.simplyswords.soulpyresworditem.tooltip2": "Instigate a tethering of souls, trading places", -"item.simplyswords.soulpyresworditem.tooltip3": "with and freezing your target while gaining", -"item.simplyswords.soulpyresworditem.tooltip4": "haste and resistances.", -"item.simplyswords.soulpyresworditem.tooltip5": "Upon reaching your destination, ignite nearby", -"item.simplyswords.soulpyresworditem.tooltip6": "enemies and pull them closer to you.", -"item.simplyswords.soulpyresworditem.tooltip7": "After %ds your soul tether is severed", -"item.simplyswords.soulpyresworditem.tooltip8": "causing you to trade places with your target", -"item.simplyswords.soulpyresworditem.tooltip9": "a second time.", - -"item.simplyswords.frostfallsworditem.tooltip1": "Уникальные эффект: Frost Fury", -"item.simplyswords.frostfallsworditem.tooltip2": "Chance on hit to encase nearby enemies in", -"item.simplyswords.frostfallsworditem.tooltip3": "ice, causing them to take no damage.", -"item.simplyswords.frostfallsworditem.tooltip4": "After %ds the ice shatters causing %d damage.", -"item.simplyswords.frostfallsworditem.tooltip5": "Encase yourself in ice for %ds, rendering you", -"item.simplyswords.frostfallsworditem.tooltip6": "immune and granting you regeneration.", - -"item.simplyswords.moltenedgesworditem.tooltip1": "Уникальные эффект: Molten Roar", -"item.simplyswords.moltenedgesworditem.tooltip2": "Chance on hit to ignite your enemy or yourself.", -"item.simplyswords.moltenedgesworditem.tooltip3": "If low HP, gain regeneration instead.", -"item.simplyswords.moltenedgesworditem.tooltip4": "Gain strength and speed relative to missing HP.", -"item.simplyswords.moltenedgesworditem.tooltip5": "Release a powerful roar, knocking back and", -"item.simplyswords.moltenedgesworditem.tooltip6": "igniting nearby enemies. Gain resistance and", -"item.simplyswords.moltenedgesworditem.tooltip7": "onslaught with a duration relative to enemies hit.", - -"item.simplyswords.livyatansworditem.tooltip1": "Уникальные эффект: Frost Shatter", -"item.simplyswords.livyatansworditem.tooltip2": "Chance on hit to encase nearby enemies in", -"item.simplyswords.livyatansworditem.tooltip3": "ice, causing them to take no damage.", -"item.simplyswords.livyatansworditem.tooltip4": "After %ds the ice shatters causing %d damage.", -"item.simplyswords.livyatansworditem.tooltip5": "Preemptively shatter the ice encasing your", -"item.simplyswords.livyatansworditem.tooltip6": "enemies, dealing more damage the earlier you shatter.", - -"item.simplyswords.icewhispersworditem.tooltip1": "Уникальные эффект: Permafrost", -"item.simplyswords.icewhispersworditem.tooltip2": "While wielded, gain a frost aura that deals", -"item.simplyswords.icewhispersworditem.tooltip3": "damage and slows enemies в пределах %d-ти блоков.", -"item.simplyswords.icewhispersworditem.tooltip4": "Drain your hunger in order to summon a", -"item.simplyswords.icewhispersworditem.tooltip5": "blizzard at your location, slowing and dealing", -"item.simplyswords.icewhispersworditem.tooltip6": "increased damage to enemies within %d blocks.", - -"item.simplyswords.arcanethystsworditem.tooltip1": "Уникальные эффект: Arcane Assault", -"item.simplyswords.arcanethystsworditem.tooltip2": "Chance on hit to levitate your target.", -"item.simplyswords.arcanethystsworditem.tooltip3": "Channel your arcane energy to assault", -"item.simplyswords.arcanethystsworditem.tooltip4": "nearby enemies, lifting them into the", -"item.simplyswords.arcanethystsworditem.tooltip5": "air while dealing damage over time,", -"item.simplyswords.arcanethystsworditem.tooltip6": "then slamming them into the ground.", - -"item.simplyswords.thunderbrandsworditem.tooltip1": "Уникальные эффект: Thunder Blitz", -"item.simplyswords.thunderbrandsworditem.tooltip2": "Chance on hit to refresh ability cooldown.", -"item.simplyswords.thunderbrandsworditem.tooltip3": "Momentarily slow yourself and charge your", -"item.simplyswords.thunderbrandsworditem.tooltip4": "weapon, dealing area damage to nearby foes.", -"item.simplyswords.thunderbrandsworditem.tooltip5": "Once charged, dash forward, gaining haste", -"item.simplyswords.thunderbrandsworditem.tooltip6": "and dealing enormous damage to enemies in", -"item.simplyswords.thunderbrandsworditem.tooltip7": "your path.", - -"item.simplyswords.stormsedgesworditem.tooltip1": "Уникальные эффект: Storm Jolt", -"item.simplyswords.stormsedgesworditem.tooltip2": "Chance on hit to refresh ability cooldown.", -"item.simplyswords.stormsedgesworditem.tooltip3": "Jolt forward like lightning, gaining", -"item.simplyswords.stormsedgesworditem.tooltip4": "momentary invulnerability as well", -"item.simplyswords.stormsedgesworditem.tooltip5": "as lingering speed and haste.", - -"item.simplyswords.lichbladesworditem.tooltip1": "Уникальные эффект: Soul Anguish I", -"item.simplyswords.lichbladesworditem.tooltip1.2": "Уникальные эффект: Soul Anguish II", -"item.simplyswords.lichbladesworditem.tooltip1.3": "Уникальные эффект: Soul Anguish III", -"item.simplyswords.lichbladesworditem.tooltip2": "Tortured souls radiate from you,", -"item.simplyswords.lichbladesworditem.tooltip3": "damaging any nearby enemies.", -"item.simplyswords.lichbladesworditem.tooltip4": "Command your souls to attack", -"item.simplyswords.lichbladesworditem.tooltip5": "a distant target, dealing rapid", -"item.simplyswords.lichbladesworditem.tooltip6": "damage. Chance to siphon health.", -"item.simplyswords.lichbladesworditem.tooltip7": "After the attack subsides, your souls", -"item.simplyswords.lichbladesworditem.tooltip8": "return to you and, when reaching you,", -"item.simplyswords.lichbladesworditem.tooltip9": "grant you absorption.", - -"item.simplyswords.stormbringersworditem.tooltip1": "Уникальные эффект: Shock Deflect", -"item.simplyswords.stormbringersworditem.tooltip2": "Focus energy to a single point of your", -"item.simplyswords.stormbringersworditem.tooltip3": "blade, allowing you to momentarily block", -"item.simplyswords.stormbringersworditem.tooltip4": "incoming attacks.", -"item.simplyswords.stormbringersworditem.tooltip5": "When successfully timing this ability", -"item.simplyswords.stormbringersworditem.tooltip6": "with an enemy melee swing you will", -"item.simplyswords.stormbringersworditem.tooltip7": "perform a parry, dealing damage and", -"item.simplyswords.stormbringersworditem.tooltip8": "launching your opponent while also", -"item.simplyswords.stormbringersworditem.tooltip9": "reducing the ability cooldown.", -"item.simplyswords.stormbringersworditem.tooltip10": "Performing parries in succession will", -"item.simplyswords.stormbringersworditem.tooltip11": "increase the ability damage and cooldown.", - -"item.simplyswords.shadowmistsworditem.tooltip1": "Уникальные эффект: Shadowmist", -"item.simplyswords.shadowmistsworditem.tooltip2": "Chance on hit to deal magic damage that", -"item.simplyswords.shadowmistsworditem.tooltip3": "scales with your targets armor value.", -"item.simplyswords.shadowmistsworditem.tooltip4": "Create a blinding shadowy mist at your feet", -"item.simplyswords.shadowmistsworditem.tooltip5": "and shadowstep forward a short distance.", - -"item.simplyswords.harbingersworditem.tooltip1": "Уникальные эффект: Abyssal Standard", +"effect.simplyswords.freeze": "Заморозка", +"effect.simplyswords.omen": "Предвестие", +"effect.simplyswords.watcher": "Ангел-хранитель", +"effect.simplyswords.storm": "Гроза", +"effect.simplyswords.wildfire": "Дикий огонь", +"effect.simplyswords.echo": "Эхо", +"effect.simplyswords.ward": "Оберег", +"effect.simplyswords.immolation": "Жертвоприношение", +"effect.simplyswords.onslaught": "Сильный натиск", +"effect.simplyswords.smouldering": "Тление", +"effect.simplyswords.frenzy": "Неистовство", +"effect.simplyswords.voidcloak": "Плащ пустоты", +"effect.simplyswords.void_assault": "Натиск пустоты", +"effect.simplyswords.voidhunger": "Голод пустоты", +"effect.simplyswords.fire_vortex": "Огненный вихрь", +"effect.simplyswords.frost_vortex": "Ледяной вихрь", +"effect.simplyswords.elemental_vortex": "Стихийный вихрь", +"effect.simplyswords.flameseed": "Огненное семя", +"effect.simplyswords.ribbonwrath": "Ленточная ярость", +"effect.simplyswords.ribboncleave": "Ленточный тесак", +"effect.simplyswords.resilience": "Стойкость", +"effect.simplyswords.battle_fatigue": "Боевой психоз", +"effect.simplyswords.pain": "Боль", +"effect.simplyswords.spore_swarm": "Спороносное скопище", +"effect.simplyswords.magistorm": "Магическая буря", +"effect.simplyswords.magislam": "Магический удар", +"effect.simplyswords.astral_shift": "Астральная изворотливость", +"effect.simplyswords.fatal_flicker": "Смертоносное мигание", + +"item.simplyswords.onrightclick": "По нажатию ПКМ: ", +"item.simplyswords.onrightclickheld": "Удерживание ПКМ: ", +"item.simplyswords.firesworditem.tooltip1": "Уникальный эффект: Сера", +"item.simplyswords.firesworditem.tooltip2": "Шанс изрыгнуть взрывную серу при ударе.", + +"item.simplyswords.bramblesworditem.tooltip1": "Уникальный эффект: Терновый шип", +"item.simplyswords.bramblesworditem.tooltip2": "Шанс при ударе высвободить массу токсических", +"item.simplyswords.bramblesworditem.tooltip3": "спор, что кружат вокруг Вас и всё сильнее", +"item.simplyswords.bramblesworditem.tooltip4": "поражают близлежащих врагов смертоносными эффектами.", +"item.simplyswords.bramblesworditem.tooltip5": "Споры остаются активными, пока их", +"item.simplyswords.bramblesworditem.tooltip6": "цель находится в пределах действия.", +"item.simplyswords.bramblesworditem.tooltip7": "Даже при смене оружия они могут сохранять", +"item.simplyswords.bramblesworditem.tooltip8": "активность, хоть и с пониженной эффективностью.", + +"item.simplyswords.stormsworditem.tooltip1": "Уникальный эффект: Шторм", +"item.simplyswords.stormsworditem.tooltip2": "Под дождливой погодой/в воде: шанс при ударе ", +"item.simplyswords.stormsworditem.tooltip3": "низвести с неба грозу на Ваших врагов.", +"item.simplyswords.stormsworditem.tooltip4": "Во время направления владелец получает сопротивление", +"item.simplyswords.stormsworditem.tooltip5": "и создаёт локализированный шторм, обрушивающий", +"item.simplyswords.stormsworditem.tooltip6": "молнии на близлежащих противников.", + +"item.simplyswords.watchersworditem.tooltip1": "Уникальный эффект: Предвестие", +"item.simplyswords.watchersworditem.tooltip2": "Шанс при ударе отнять жизнь у", +"item.simplyswords.watchersworditem.tooltip3": "цели ниже %d%% Здоровья, и передать", +"item.simplyswords.watchersworditem.tooltip4": "часть поглощённого здоровья владельцу.", +"item.simplyswords.watchersworditem.tooltip5": "Уникальный эффект: Ангел-хранитель", +"item.simplyswords.watchersworditem.tooltip6": "Шанс при ударе поглотить здоровье близлежащих", +"item.simplyswords.watchersworditem.tooltip7": "врагов, излечивая владельца при каждом ударе.", + +"item.simplyswords.plaguesworditem.tooltip1": "Уникальный эффект: Чума", +"item.simplyswords.plaguesworditem.tooltip2": "Шанс при ударе преобразовать положительные", +"item.simplyswords.plaguesworditem.tooltip3": "эффекты в их пагубный аналог.", + +"item.simplyswords.emberiresworditem.tooltip1": "Уникальный эффект: Тлеющая ярость", +"item.simplyswords.emberiresworditem.tooltip2": "Направьте энергию в клинок.", +"item.simplyswords.emberiresworditem.tooltip3": "После отпускания ПКМ выпустите пышущий жаром шрапнель", +"item.simplyswords.emberiresworditem.tooltip4": "на самую близлежащую цель перед Вами, нанося", +"item.simplyswords.emberiresworditem.tooltip5": "ей усиленный урон при долгом направлении.", +"item.simplyswords.emberiresworditem.tooltip6": "При отпускании направления в последнюю секунду", +"item.simplyswords.emberiresworditem.tooltip7": "выстрелится дополнительная часть", +"item.simplyswords.emberiresworditem.tooltip8": "шрапнели.", +"item.simplyswords.emberiresworditem.tooltip9": "При отпускании шрапнеля у Вас есть", +"item.simplyswords.emberiresworditem.tooltip10": "шанс, относительного времени направления,", +"item.simplyswords.emberiresworditem.tooltip11": "получить: Скорость, Спешку и Силу.", + +"item.simplyswords.volcanicfurysworditem.tooltip1": "Уникальный эффект: Бурный пыл", +"item.simplyswords.volcanicfurysworditem.tooltip2": "Шанс при ударе поджечь и", +"item.simplyswords.volcanicfurysworditem.tooltip3": "отшвырнуть свою цель.", +"item.simplyswords.volcanicfurysworditem.tooltip4": "Направьте ярость, обменивая здоровье на", +"item.simplyswords.volcanicfurysworditem.tooltip5": "сопротивление во время вызова землетрясения,", +"item.simplyswords.volcanicfurysworditem.tooltip6": "которое встряхивает врагов перед Вами.", +"item.simplyswords.volcanicfurysworditem.tooltip7": "Прекратив направление, высвободите", +"item.simplyswords.volcanicfurysworditem.tooltip8": "свою ярость, швырнув, поджигая, и нанося много", +"item.simplyswords.volcanicfurysworditem.tooltip9": "урона при долгом направлении.", + +"item.simplyswords.ferocitysworditem.tooltip1": "Уникальный эффект: Свирепость", +"item.simplyswords.ferocitysworditem.tooltip2": "Шанс при ударе увеличить свою", +"item.simplyswords.ferocitysworditem.tooltip3": "скорость атаки. Эффект суммируется до 15 раз.", +"item.simplyswords.ferocitysworditem.tooltip4": "Потратив всё суммирование Вы получите", +"item.simplyswords.ferocitysworditem.tooltip5": "силу на длительность, равную", +"item.simplyswords.ferocitysworditem.tooltip6": "потраченным суммированиям.", + +"item.simplyswords.rendsworditem.tooltip1": "Уникальный эффект: Раздирание души", +"item.simplyswords.rendsworditem.tooltip2": "Шанс при ударе наложить суммирующие ослабляющие", +"item.simplyswords.rendsworditem.tooltip3": "эффекты на врага.", +"item.simplyswords.rendsworditem.tooltip4": "Трата всего суммирования из окружающих врагов,", +"item.simplyswords.rendsworditem.tooltip5": "наносите им урон и исцелите себя, равное", +"item.simplyswords.rendsworditem.tooltip6": "потраченным суммированиям.", + +"item.simplyswords.soulsworditem.tooltip1": "Уникальный эффект: Слияние с душой", +"item.simplyswords.soulsworditem.tooltip2": "Шанс при ударе поглотить души рядом находящихся", +"item.simplyswords.soulsworditem.tooltip3": "врагов, утяжеляя и замедляя скорость атаки владельца.", +"item.simplyswords.soulsworditem.tooltip4": "Выпущенные души передают ослабление скорости атаки", +"item.simplyswords.soulsworditem.tooltip5": "близлежащим врагам и восстанавливают здоровье", +"item.simplyswords.soulsworditem.tooltip6": "владельца.", + +"item.simplyswords.stealsworditem.tooltip1": "Уникальный эффект: Похищение души", +"item.simplyswords.stealsworditem.tooltip2": "Шанс при ударе поглотить души своих", +"item.simplyswords.stealsworditem.tooltip3": "противников, ускоряя себя при этом", +"item.simplyswords.stealsworditem.tooltip4": "замедляете цель и помечаете её на смерть.", +"item.simplyswords.stealsworditem.tooltip5": "Находясь в пределах 5 блоков от бездушной", +"item.simplyswords.stealsworditem.tooltip6": "цели, Вы возвращаете себе душу, сделав рывок", +"item.simplyswords.stealsworditem.tooltip7": "и обретая невидимость. Находясь более 5", +"item.simplyswords.stealsworditem.tooltip8": "блоков от бездушной цели, Вы перемещаетесь", +"item.simplyswords.stealsworditem.tooltip9": "на его местоположение, принудительно возвращаете", +"item.simplyswords.stealsworditem.tooltip10": "себе душу, ослепляете и наносите ему урон.", + +"item.simplyswords.soulpyresworditem.tooltip1": "Уникальный эффект: Узы души", +"item.simplyswords.soulpyresworditem.tooltip2": "Инициируйте связь с душой, поменявшись местами", +"item.simplyswords.soulpyresworditem.tooltip3": "с целью и замораживая её, при этом", +"item.simplyswords.soulpyresworditem.tooltip4": "Вы получаете спешку и сопротивление.", +"item.simplyswords.soulpyresworditem.tooltip5": "При достижении своей цели, Вы поджигаете", +"item.simplyswords.soulpyresworditem.tooltip6": "близлежащих врагов и притягиваете их к себе.", +"item.simplyswords.soulpyresworditem.tooltip7": "По истечении %d секунд узы", +"item.simplyswords.soulpyresworditem.tooltip8": "разрываются и владелец снова", +"item.simplyswords.soulpyresworditem.tooltip9": "меняется местами с целью.", + +"item.simplyswords.frostfallsworditem.tooltip1": "Уникальный эффект: Ледяная ярость", +"item.simplyswords.frostfallsworditem.tooltip2": "Шанс при ударе покрыть врагов льдом", +"item.simplyswords.frostfallsworditem.tooltip3": "из-за чего они не получают урон.", +"item.simplyswords.frostfallsworditem.tooltip4": "По истечении %d секунд лёд разрушается", +"item.simplyswords.frostfallsworditem.tooltip5": "вдребезги, нанося %d урона. Покрытие себя льдом", +"item.simplyswords.frostfallsworditem.tooltip6": "наделяет Вас иммунитетом и регенерацией на %d секунд.", + +"item.simplyswords.moltenedgesworditem.tooltip1": "Уникальный эффект: Плавленный рёв", +"item.simplyswords.moltenedgesworditem.tooltip2": "Шанс при ударе поджечь врага или самого себя.", +"item.simplyswords.moltenedgesworditem.tooltip3": "При низком здоровье, Вы получаете регенерацию.", +"item.simplyswords.moltenedgesworditem.tooltip4": "Получение силы и скорости в зависимости от недостающего", +"item.simplyswords.moltenedgesworditem.tooltip5": "здоровья. Высвобождение мощного рёва отбрасывает и", +"item.simplyswords.moltenedgesworditem.tooltip6": "поджигает близлежащих врагов. Получение сопротивления", +"item.simplyswords.moltenedgesworditem.tooltip7": "и сильного натиска, продолжительностью в зависимости от ударов по врагам.", + +"item.simplyswords.livyatansworditem.tooltip1": "Уникальный эффект: Ледяные осколки", +"item.simplyswords.livyatansworditem.tooltip2": "Шанс при ударе покрыть врагов", +"item.simplyswords.livyatansworditem.tooltip3": "льдом, из-за чего они не получают урон.", +"item.simplyswords.livyatansworditem.tooltip4": "По истечении %d секунд ледяные осколки наносят %d урона.", +"item.simplyswords.livyatansworditem.tooltip5": "Чем раньше разрушьте лёд, покрытый на Ваших", +"item.simplyswords.livyatansworditem.tooltip6": "врагах, тем больше урона им нанесёте.", + +"item.simplyswords.icewhispersworditem.tooltip1": "Уникальный эффект: Вечная мерзлота", +"item.simplyswords.icewhispersworditem.tooltip2": "При владении мечом получаете ледяную ауру", +"item.simplyswords.icewhispersworditem.tooltip3": "наносящую урон и замедляющую врагов в пределах %d блоков.", +"item.simplyswords.icewhispersworditem.tooltip4": "Истощите свой голод, чтобы вызвать", +"item.simplyswords.icewhispersworditem.tooltip5": "вихрь на своём месте, что замедляет и наносит", +"item.simplyswords.icewhispersworditem.tooltip6": "усиленный урон врагам в пределах %d блоков.", + +"item.simplyswords.arcanethystsworditem.tooltip1": "Уникальный эффект: Чародейская атака", +"item.simplyswords.arcanethystsworditem.tooltip2": "Шанс при ударе поднять свою цель в воздух.", +"item.simplyswords.arcanethystsworditem.tooltip3": "Направьте свою чародейскую энергию, чтобы", +"item.simplyswords.arcanethystsworditem.tooltip4": "атаковать близлежащих врагов, подняв их в", +"item.simplyswords.arcanethystsworditem.tooltip5": "воздух, одновременно нанося постепенный урон,", +"item.simplyswords.arcanethystsworditem.tooltip6": "затем обрушив их на землю.", + +"item.simplyswords.thunderbrandsworditem.tooltip1": "Уникальный эффект: Громовой обстрел", +"item.simplyswords.thunderbrandsworditem.tooltip2": "Шанс при ударе обновить перезарядку способности.", +"item.simplyswords.thunderbrandsworditem.tooltip3": "При зарядке оружия, сразу замедляете себя,", +"item.simplyswords.thunderbrandsworditem.tooltip4": "нанося урон по области близлежащим врагам.", +"item.simplyswords.thunderbrandsworditem.tooltip5": "После зарядки, Вы делаете рывок, получаете", +"item.simplyswords.thunderbrandsworditem.tooltip6": "спешку и наносите колоссальный урон врагам", +"item.simplyswords.thunderbrandsworditem.tooltip7": "на своём пути.", + +"item.simplyswords.stormsedgesworditem.tooltip1": "Уникальный эффект: Удар бури", +"item.simplyswords.stormsedgesworditem.tooltip2": "Шанс при ударе обновить перезарядку способности.", +"item.simplyswords.stormsedgesworditem.tooltip3": "Молниеносно дёрнитесь вперёд, сразу", +"item.simplyswords.stormsedgesworditem.tooltip4": "получив неуязвимость, наряду с", +"item.simplyswords.stormsedgesworditem.tooltip5": "длительной скоростью и спешкой.", + +"item.simplyswords.lichbladesworditem.tooltip1": "Уникальный эффект: Страдание души I", +"item.simplyswords.lichbladesworditem.tooltip1.2": "Уникальный эффект: Страдание души II", +"item.simplyswords.lichbladesworditem.tooltip1.3": "Уникальный эффект: Страдание души III", +"item.simplyswords.lichbladesworditem.tooltip2": "Из Вас исходят угнетённые души,", +"item.simplyswords.lichbladesworditem.tooltip3": "наносящие урон любым близлежащим врагам.", +"item.simplyswords.lichbladesworditem.tooltip4": "Приказывайте своим духам атаковать", +"item.simplyswords.lichbladesworditem.tooltip5": "отдалённую цель, нанося быстрый", +"item.simplyswords.lichbladesworditem.tooltip6": "урон, кроме того, шанс выссосать здоровье.", +"item.simplyswords.lichbladesworditem.tooltip7": "После окончания атаки, Ваши души", +"item.simplyswords.lichbladesworditem.tooltip8": "вернутся к Вам перед тем, как они доберутся до Вас", +"item.simplyswords.lichbladesworditem.tooltip9": "и Вы получите эффект «Поглощение».", + +"item.simplyswords.stormbringersworditem.tooltip1": "Уникальный эффект: Шоковое отражение", +"item.simplyswords.stormbringersworditem.tooltip2": "Сфокусируйте энергию на кончике своего", +"item.simplyswords.stormbringersworditem.tooltip3": "клинка, что позволяет Вам мгновенно", +"item.simplyswords.stormbringersworditem.tooltip4": "блокировать входящие атаки.", +"item.simplyswords.stormbringersworditem.tooltip5": "При успешном расчёте времени этой", +"item.simplyswords.stormbringersworditem.tooltip6": "способности, в условиях удара ближнего", +"item.simplyswords.stormbringersworditem.tooltip7": "боя врага, Вы выполните парирование, нанося урон и", +"item.simplyswords.stormbringersworditem.tooltip8": "отшвырнув своего соперника, но в то же время", +"item.simplyswords.stormbringersworditem.tooltip9": "уменьшите перезарядку способности.", +"item.simplyswords.stormbringersworditem.tooltip10": "Выполнение парирования, один за другим,", +"item.simplyswords.stormbringersworditem.tooltip11": "увеличит урон от способности и перезарядку.", + +"item.simplyswords.shadowmistsworditem.tooltip1": "Уникальный эффект: Теневой туман", +"item.simplyswords.shadowmistsworditem.tooltip2": "Шанс при ударе нанести масштабируемый магический", +"item.simplyswords.shadowmistsworditem.tooltip3": "урон в зависимости от значения брони Ваших целей.", +"item.simplyswords.shadowmistsworditem.tooltip4": "Создайте маскирующий мрачный туман", +"item.simplyswords.shadowmistsworditem.tooltip5": "под ногами и пройдите сквозь тень на короткое расстояние.", + +"item.simplyswords.harbingersworditem.tooltip1": "Уникальный эффект: Abyssal Standard", "item.simplyswords.harbingersworditem.tooltip2": "Chance on hit to inflict weakness.", "item.simplyswords.harbingersworditem.tooltip3": "Summons an Abyssal Battle Standard that", "item.simplyswords.harbingersworditem.tooltip4": "pulls, damages, and slows enemies whilst", "item.simplyswords.harbingersworditem.tooltip5": "periodically granting haste to friendly", "item.simplyswords.harbingersworditem.tooltip6": "players within its vicinity.", -"item.simplyswords.sunfiresworditem.tooltip1": "Уникальные эффект: Righteous Standard", +"item.simplyswords.sunfiresworditem.tooltip1": "Уникальный эффект: Righteous Standard", "item.simplyswords.sunfiresworditem.tooltip2": "Chance on hit to regenerate health.", "item.simplyswords.sunfiresworditem.tooltip3": "Summons a Righteous Battle Standard that", "item.simplyswords.sunfiresworditem.tooltip4": "ignites, damages, and slows enemies whilst", "item.simplyswords.sunfiresworditem.tooltip5": "periodically granting strength and health", "item.simplyswords.sunfiresworditem.tooltip6": "to friendly players within its vicinity.", -"item.simplyswords.whisperwindsworditem.tooltip1": "Уникальные эффект: Fatal Flicker", +"item.simplyswords.whisperwindsworditem.tooltip1": "Уникальный эффект: Fatal Flicker", "item.simplyswords.whisperwindsworditem.tooltip2": "Chance on hit to refresh ability cooldown.", "item.simplyswords.whisperwindsworditem.tooltip3": "Perform a swift forward dash, gaining", "item.simplyswords.whisperwindsworditem.tooltip4": "resistance and absorption, and inflicting", @@ -737,7 +737,7 @@ "item.simplyswords.whisperwindsworditem.tooltip6": "For every target hit by the dash, the", "item.simplyswords.whisperwindsworditem.tooltip7": "amount of Echo you inflict is increased.", -"item.simplyswords.emberlashsworditem.tooltip1": "Уникальные эффект: Smoulder", +"item.simplyswords.emberlashsworditem.tooltip1": "Уникальный эффект: Smoulder", "item.simplyswords.emberlashsworditem.tooltip2": "Your attacks inflict Smouldering.", "item.simplyswords.emberlashsworditem.tooltip3": "Attacking enemies inflicted with", "item.simplyswords.emberlashsworditem.tooltip4": "Smouldering causes you to deal an", @@ -745,7 +745,7 @@ "item.simplyswords.emberlashsworditem.tooltip6": "Evade backwards while cauterising", "item.simplyswords.emberlashsworditem.tooltip7": "your wounds, healing for %d%% of Max HP.", -"item.simplyswords.waxweaversworditem.tooltip1": "Уникальные эффект: Waxweave", +"item.simplyswords.waxweaversworditem.tooltip1": "Уникальный эффект: Waxweave", "item.simplyswords.waxweaversworditem.tooltip2": "Attacking ignited enemies grants", "item.simplyswords.waxweaversworditem.tooltip3": "you Strength and Haste.", "item.simplyswords.waxweaversworditem.tooltip4": "When you would die, you are instead", @@ -755,7 +755,7 @@ "item.simplyswords.waxweaversworditem.tooltip8": "This effect can only occur once", "item.simplyswords.waxweaversworditem.tooltip9": "every %ds. Mainhand only.", -"item.simplyswords.hiveheartsworditem.tooltip1": "Уникальные эффект: Hivemind", +"item.simplyswords.hiveheartsworditem.tooltip1": "Уникальный эффект: Hivemind", "item.simplyswords.hiveheartsworditem.tooltip2": "Release an angry bee on hit", "item.simplyswords.hiveheartsworditem.tooltip3": "that stings your target before", "item.simplyswords.hiveheartsworditem.tooltip4": "disappearing.", @@ -766,7 +766,7 @@ "item.simplyswords.hiveheartsworditem.tooltip9": "over time but placing the", "item.simplyswords.hiveheartsworditem.tooltip10": "Hivemind ability on cooldown.", -"item.simplyswords.starsedgesworditem.tooltip1": "Уникальные эффект: Star's Edge", +"item.simplyswords.starsedgesworditem.tooltip1": "Уникальный эффект: Star's Edge", "item.simplyswords.starsedgesworditem.tooltip2": "During the day, your attacks inflict", "item.simplyswords.starsedgesworditem.tooltip3": "%s additional damage.", "item.simplyswords.starsedgesworditem.tooltip4": "At night, your attacks gain lifesteal.", @@ -775,14 +775,14 @@ "item.simplyswords.starsedgesworditem.tooltip7": "forward, gaining resistance and", "item.simplyswords.starsedgesworditem.tooltip8": "haste.", -"item.simplyswords.wickpiercersworditem.tooltip1": "Уникальные эффект: Flicker Fury", +"item.simplyswords.wickpiercersworditem.tooltip1": "Уникальный эффект: Flicker Fury", "item.simplyswords.wickpiercersworditem.tooltip2": "Instill your mind with fury,", "item.simplyswords.wickpiercersworditem.tooltip3": "gaining a significant bonus", "item.simplyswords.wickpiercersworditem.tooltip4": "to attack speed and allowing", "item.simplyswords.wickpiercersworditem.tooltip5": "each strike of Wickpiercer", "item.simplyswords.wickpiercersworditem.tooltip6": "to hit twice for %ds.", -"item.simplyswords.tempestsworditem.tooltip1": "Уникальные эффект: Vortex", +"item.simplyswords.tempestsworditem.tooltip1": "Уникальный эффект: Vortex", "item.simplyswords.tempestsworditem.tooltip2": "Your attacks attach elemental", "item.simplyswords.tempestsworditem.tooltip3": "energy to the target, causing", "item.simplyswords.tempestsworditem.tooltip4": "damage over time and element", @@ -794,7 +794,7 @@ "item.simplyswords.tempestsworditem.tooltip10": "damaging nearby enemies and", "item.simplyswords.tempestsworditem.tooltip11": "growing in size.", -"item.simplyswords.dreadtidesworditem.tooltip1": "Уникальные эффект: Voidcaller", +"item.simplyswords.dreadtidesworditem.tooltip1": "Уникальный эффект: Voidcaller", "item.simplyswords.dreadtidesworditem.tooltip2": "Passively generate stacks of", "item.simplyswords.dreadtidesworditem.tooltip3": "Voidcloak, increasing attack", "item.simplyswords.dreadtidesworditem.tooltip4": "speed and reducing incoming", @@ -808,7 +808,7 @@ "item.simplyswords.dreadtidesworditem.tooltip12": "Wielding this weapon inflicts", "item.simplyswords.dreadtidesworditem.tooltip13": "you with corruption over time.", -"item.simplyswords.flamewindsworditem.tooltip1": "Уникальные эффект: Emberstorm", +"item.simplyswords.flamewindsworditem.tooltip1": "Уникальный эффект: Emberstorm", "item.simplyswords.flamewindsworditem.tooltip2": "When a flame seed detonates,", "item.simplyswords.flamewindsworditem.tooltip3": "gain Haste.", "item.simplyswords.flamewindsworditem.tooltip4": "Plant a seed of flame within", @@ -820,7 +820,7 @@ "item.simplyswords.flamewindsworditem.tooltip10": "effect to nearby enemies.", "item.simplyswords.flamewindsworditem.tooltip11": "Spreads up to %d times.", -"item.simplyswords.ribboncleaversworditem.tooltip1": "Уникальные эффект: Ribbonwrath", +"item.simplyswords.ribboncleaversworditem.tooltip1": "Уникальный эффект: Ribbonwrath", "item.simplyswords.ribboncleaversworditem.tooltip2": "Wielding Ribboncleaver causes", "item.simplyswords.ribboncleaversworditem.tooltip3": "you to move 5% slower, but", "item.simplyswords.ribboncleaversworditem.tooltip4": "take 15% less damage.", @@ -831,7 +831,7 @@ "item.simplyswords.ribboncleaversworditem.tooltip9": "to deal +95% damage to a", "item.simplyswords.ribboncleaversworditem.tooltip10": "single target.", -"item.simplyswords.magiscythesworditem.tooltip1": "Уникальные эффект: Magistorm", +"item.simplyswords.magiscythesworditem.tooltip1": "Уникальный эффект: Magistorm", "item.simplyswords.magiscythesworditem.tooltip2": "Attacking enemies while", "item.simplyswords.magiscythesworditem.tooltip3": "Magistorm is active grants a", "item.simplyswords.magiscythesworditem.tooltip4": "chance to repair an equipped", @@ -844,7 +844,7 @@ "item.simplyswords.magiscythesworditem.tooltip11": "duration and increases its", "item.simplyswords.magiscythesworditem.tooltip12": "severity.", -"item.simplyswords.enigmasworditem.tooltip1": "Уникальные эффект: Galeforce", +"item.simplyswords.enigmasworditem.tooltip1": "Уникальный эффект: Galeforce", "item.simplyswords.enigmasworditem.tooltip2": "While you are near to your", "item.simplyswords.enigmasworditem.tooltip3": "twister, gain Haste.", "item.simplyswords.enigmasworditem.tooltip4": "Summon a twister that chases", @@ -853,7 +853,7 @@ "item.simplyswords.enigmasworditem.tooltip7": "an enemy remains trapped", "item.simplyswords.enigmasworditem.tooltip8": "within.", -"item.simplyswords.magibladesworditem.tooltip1": "Уникальные эффект: Magisonic", +"item.simplyswords.magibladesworditem.tooltip1": "Уникальный эффект: Magisonic", "item.simplyswords.magibladesworditem.tooltip2": "The Magiblade occasionally", "item.simplyswords.magibladesworditem.tooltip3": "detects and repels approaching", "item.simplyswords.magibladesworditem.tooltip4": "enemies.", @@ -863,7 +863,7 @@ "item.simplyswords.magibladesworditem.tooltip8": "damage to enemies caught in", "item.simplyswords.magibladesworditem.tooltip9": "its path.", -"item.simplyswords.magispearsworditem.tooltip1": "Уникальные эффект: Magislam", +"item.simplyswords.magispearsworditem.tooltip1": "Уникальный эффект: Magislam", "item.simplyswords.magispearsworditem.tooltip2": "When attacking enemies,", "item.simplyswords.magispearsworditem.tooltip3": "you have a chance to deal", "item.simplyswords.magispearsworditem.tooltip4": "additional magic damage.", @@ -873,7 +873,7 @@ "item.simplyswords.magispearsworditem.tooltip8": "damaging nearby enemies.", "item.simplyswords.magispearsworditem.tooltip9": "You are immune while leaping.", -"item.simplyswords.caelestissworditem.tooltip1": "Уникальные эффект: Astral Shift", +"item.simplyswords.caelestissworditem.tooltip1": "Уникальный эффект: Astral Shift", "item.simplyswords.caelestissworditem.tooltip2": "While wielded, grants a chance", "item.simplyswords.caelestissworditem.tooltip3": "to completely avoid incoming", "item.simplyswords.caelestissworditem.tooltip4": "damage.", @@ -886,9 +886,8 @@ "item.simplyswords.caelestissworditem.tooltip11": "to the damage negated while", "item.simplyswords.caelestissworditem.tooltip12": "in the astral plane.", -"item.simplyswords.dormantrelicsworditem.tooltip2": "A faint power seems to emanate from within.", -"item.simplyswords.poweredrelicsworditem.tooltip2": "A growing power seems to emanate from within.", - +"item.simplyswords.dormantrelicsworditem.tooltip2": "Кажется, изнутри исходит слабая сила.", +"item.simplyswords.poweredrelicsworditem.tooltip2": "Похоже, изнутри исходит растущая сила.", "item.simplyswords.levitationsworditem.tooltip1": "Рунический Power: Float", "item.simplyswords.uniquesworditem.runefused_power.float": "[ Runefused: Float ]", @@ -902,9 +901,9 @@ "item.simplyswords.uniquesworditem.runefused_power.slow": "[ Runefused: Slow ]", "item.simplyswords.slownesssworditem.tooltip2": "Chance on hit to slow the target", "item.simplyswords.slownesssworditem.tooltip3": "for a duration.", -"item.simplyswords.freezesworditem.tooltip1": "Рунический Power: Freeze", +"item.simplyswords.freezesworditem.tooltip1": "Рунная сила: Заморозка", "item.simplyswords.uniquesworditem.runefused_power.freeze": "[ Runefused: Freeze ]", -"item.simplyswords.freezesworditem.tooltip2": "Chance on hit to chill or freeze your target.", +"item.simplyswords.freezesworditem.tooltip2": "Шанс застудить или заморозить цель при ударе.", "item.simplyswords.wildfiresworditem.tooltip1": "Рунический Power: Wildfire", "item.simplyswords.uniquesworditem.runefused_power.wildfire": "[ Runefused: Wildfire ]", "item.simplyswords.wildfiresworditem.tooltip2": "Chance on hit to ignite all nearby ", @@ -968,7 +967,6 @@ "item.simplyswords.runic_tablet.tooltip3": "Can also be used to repair", "item.simplyswords.runic_tablet.tooltip4": "Unique weapons.", - "item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Netherfused: Echo ]", "item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Your weapon swings echo, dealing", "item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "additional unmitigated damage ", @@ -1059,9 +1057,9 @@ "item.simplyswords.uniquesworditem.netherfused_power.deception.description2": "Evasion Mastery, you have a", "item.simplyswords.uniquesworditem.netherfused_power.deception.description3": "chance to cleanse Revealed.", -"item.simplyswords.common.blacklisteffect": "ABILITY DISABLED", -"item.simplyswords.common.showtooltip": "- Hold §2ALT§7 to view gem sockets -", -"item.simplyswords.common.showtooltip.info": "- Hold §2ALT§7 for more info -", +"item.simplyswords.common.blacklisteffect": "СПОСОБНОСТЬ ОТКЛЮЧЕНА", +"item.simplyswords.common.showtooltip": "- Удерживание §2ALT§7 — просмотреть to view gem sockets -", +"item.simplyswords.common.showtooltip.info": "- Удерживание §2ALT§7 для подробной информации -", "item.simplyswords.compat.mythicmetals.regrowth": "Regrowth", "item.simplyswords.compat.mythicmetals.looting": "Bonus Looting", From c686c9a698ae9248cc50b6393b355a1538aa6740 Mon Sep 17 00:00:00 2001 From: Heimdallr-1 Date: Sat, 21 Dec 2024 20:21:00 +0500 Subject: [PATCH 36/37] Update ru_ru.json --- .../assets/simplyswords/lang/ru_ru.json | 733 +++++++++--------- 1 file changed, 367 insertions(+), 366 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json index 31b7fac0..9817fc59 100644 --- a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json +++ b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json @@ -476,11 +476,11 @@ "item.simplyswords.awakening.exp": "Опыт пробуждения: %d%%", "item.simplyswords.awakening.powers": "Пробуждённые силы:", "item.simplyswords.greater_runic_power": "Искусный", -"item.simplyswords.runefused_power": "Наполненная рунами сила:", -"item.simplyswords.gem_description": "Может быть вставлен в соответствующий", -"item.simplyswords.gem_description2": "слот для самоцвета на уникальном оружии.", -"item.simplyswords.remnant_description": "Скуйте при помощи Рунической скрижали", -"item.simplyswords.remnant_description2": "или Незеритового слитка для", +"item.simplyswords.runefused_power": "Талант, наполненный руной:", +"item.simplyswords.gem_description": "Может быть вставлен на уникальное оружие", +"item.simplyswords.gem_description2": "в соответствующий слот для самоцвета.", +"item.simplyswords.remnant_description": "Создайте при помощи «Рунической скрижали»", +"item.simplyswords.remnant_description2": "или «Незеритового слитка» для", "item.simplyswords.remnant_description3": "создания самоцвета, помещаемого", "item.simplyswords.remnant_description4": "в уникальные оружия.", "item.simplyswords.empty_runic_slot": "[ пустое гнездо для руны ]", @@ -536,32 +536,33 @@ "effect.simplyswords.magistorm": "Магическая буря", "effect.simplyswords.magislam": "Магический удар", "effect.simplyswords.astral_shift": "Астральная изворотливость", -"effect.simplyswords.fatal_flicker": "Смертоносное мигание", +"effect.simplyswords.fatal_flicker": "Смертоносная вспышка", "item.simplyswords.onrightclick": "По нажатию ПКМ: ", "item.simplyswords.onrightclickheld": "Удерживание ПКМ: ", + "item.simplyswords.firesworditem.tooltip1": "Уникальный эффект: Сера", "item.simplyswords.firesworditem.tooltip2": "Шанс изрыгнуть взрывную серу при ударе.", "item.simplyswords.bramblesworditem.tooltip1": "Уникальный эффект: Терновый шип", -"item.simplyswords.bramblesworditem.tooltip2": "Шанс при ударе высвободить массу токсических", -"item.simplyswords.bramblesworditem.tooltip3": "спор, что кружат вокруг Вас и всё сильнее", -"item.simplyswords.bramblesworditem.tooltip4": "поражают близлежащих врагов смертоносными эффектами.", -"item.simplyswords.bramblesworditem.tooltip5": "Споры остаются активными, пока их", -"item.simplyswords.bramblesworditem.tooltip6": "цель находится в пределах действия.", -"item.simplyswords.bramblesworditem.tooltip7": "Даже при смене оружия они могут сохранять", -"item.simplyswords.bramblesworditem.tooltip8": "активность, хоть и с пониженной эффективностью.", +"item.simplyswords.bramblesworditem.tooltip2": "Шанс при ударе высвободить массу ядовитых", +"item.simplyswords.bramblesworditem.tooltip3": "спор, кружащих вокруг Вас и всё сильнее", +"item.simplyswords.bramblesworditem.tooltip4": "наносящих близлежащим врагам смертоносные", +"item.simplyswords.bramblesworditem.tooltip5": "эффекты. Споры продолжают действовать,", +"item.simplyswords.bramblesworditem.tooltip6": "пока их цель находится в зоне их влияния.", +"item.simplyswords.bramblesworditem.tooltip7": "Даже после смены оружия споры остаются", +"item.simplyswords.bramblesworditem.tooltip8": "активными, хоть и с меньшей эффективностью.", "item.simplyswords.stormsworditem.tooltip1": "Уникальный эффект: Шторм", -"item.simplyswords.stormsworditem.tooltip2": "Под дождливой погодой/в воде: шанс при ударе ", -"item.simplyswords.stormsworditem.tooltip3": "низвести с неба грозу на Ваших врагов.", +"item.simplyswords.stormsworditem.tooltip2": "Во время дождя или нахождения в воде: шанс при ударе", +"item.simplyswords.stormsworditem.tooltip3": "низвести с неба грозу, поражающую врагов.", "item.simplyswords.stormsworditem.tooltip4": "Во время направления владелец получает сопротивление", "item.simplyswords.stormsworditem.tooltip5": "и создаёт локализированный шторм, обрушивающий", -"item.simplyswords.stormsworditem.tooltip6": "молнии на близлежащих противников.", +"item.simplyswords.stormsworditem.tooltip6": "молнии на противников поблизости.", "item.simplyswords.watchersworditem.tooltip1": "Уникальный эффект: Предвестие", -"item.simplyswords.watchersworditem.tooltip2": "Шанс при ударе отнять жизнь у", -"item.simplyswords.watchersworditem.tooltip3": "цели ниже %d%% Здоровья, и передать", +"item.simplyswords.watchersworditem.tooltip2": "Шанс при ударе лишить жизнь цели,", +"item.simplyswords.watchersworditem.tooltip3": "менее %d%% Здоровья и передать", "item.simplyswords.watchersworditem.tooltip4": "часть поглощённого здоровья владельцу.", "item.simplyswords.watchersworditem.tooltip5": "Уникальный эффект: Ангел-хранитель", "item.simplyswords.watchersworditem.tooltip6": "Шанс при ударе поглотить здоровье близлежащих", @@ -572,400 +573,400 @@ "item.simplyswords.plaguesworditem.tooltip3": "эффекты в их пагубный аналог.", "item.simplyswords.emberiresworditem.tooltip1": "Уникальный эффект: Тлеющая ярость", -"item.simplyswords.emberiresworditem.tooltip2": "Направьте энергию в клинок.", -"item.simplyswords.emberiresworditem.tooltip3": "После отпускания ПКМ выпустите пышущий жаром шрапнель", -"item.simplyswords.emberiresworditem.tooltip4": "на самую близлежащую цель перед Вами, нанося", -"item.simplyswords.emberiresworditem.tooltip5": "ей усиленный урон при долгом направлении.", -"item.simplyswords.emberiresworditem.tooltip6": "При отпускании направления в последнюю секунду", -"item.simplyswords.emberiresworditem.tooltip7": "выстрелится дополнительная часть", -"item.simplyswords.emberiresworditem.tooltip8": "шрапнели.", -"item.simplyswords.emberiresworditem.tooltip9": "При отпускании шрапнеля у Вас есть", -"item.simplyswords.emberiresworditem.tooltip10": "шанс, относительного времени направления,", -"item.simplyswords.emberiresworditem.tooltip11": "получить: Скорость, Спешку и Силу.", +"item.simplyswords.emberiresworditem.tooltip2": "Сконцентрируйте энергию в клинке.", +"item.simplyswords.emberiresworditem.tooltip3": "После отпускания энергии выпустите", +"item.simplyswords.emberiresworditem.tooltip4": "раскалённую шрапнель в самую ближайшую", +"item.simplyswords.emberiresworditem.tooltip5": "цель перед Вами, нанося ей усиленный урон", +"item.simplyswords.emberiresworditem.tooltip6": "во время долгого направления. Если Вы", +"item.simplyswords.emberiresworditem.tooltip7": "отпустите энергию в последний момент будет", +"item.simplyswords.emberiresworditem.tooltip8": "выпущена дополнительная. часть шрапнели.", +"item.simplyswords.emberiresworditem.tooltip9": "При отпускании шрапнеля есть шанс,", +"item.simplyswords.emberiresworditem.tooltip10": "относительного времени направления,", +"item.simplyswords.emberiresworditem.tooltip11": "получить эффекты: «Скорость», «Спешку» и «Силу».", "item.simplyswords.volcanicfurysworditem.tooltip1": "Уникальный эффект: Бурный пыл", -"item.simplyswords.volcanicfurysworditem.tooltip2": "Шанс при ударе поджечь и", -"item.simplyswords.volcanicfurysworditem.tooltip3": "отшвырнуть свою цель.", -"item.simplyswords.volcanicfurysworditem.tooltip4": "Направьте ярость, обменивая здоровье на", -"item.simplyswords.volcanicfurysworditem.tooltip5": "сопротивление во время вызова землетрясения,", -"item.simplyswords.volcanicfurysworditem.tooltip6": "которое встряхивает врагов перед Вами.", -"item.simplyswords.volcanicfurysworditem.tooltip7": "Прекратив направление, высвободите", -"item.simplyswords.volcanicfurysworditem.tooltip8": "свою ярость, швырнув, поджигая, и нанося много", -"item.simplyswords.volcanicfurysworditem.tooltip9": "урона при долгом направлении.", +"item.simplyswords.volcanicfurysworditem.tooltip2": "Шанс поджечь и отбросить своего врага", +"item.simplyswords.volcanicfurysworditem.tooltip3": "при ударе. Направьте ярость, обменивая", +"item.simplyswords.volcanicfurysworditem.tooltip4": "здоровье на сопротивление, вызывая", +"item.simplyswords.volcanicfurysworditem.tooltip5": "землетрясение, которое потрясает против", +"item.simplyswords.volcanicfurysworditem.tooltip6": "ников перед Вами. Завершив направление,", +"item.simplyswords.volcanicfurysworditem.tooltip7": "высвободите ярость, нанося значительный", +"item.simplyswords.volcanicfurysworditem.tooltip8": "урон поджигая врагов и швыряя их", +"item.simplyswords.volcanicfurysworditem.tooltip9": "при долгом направлении.", "item.simplyswords.ferocitysworditem.tooltip1": "Уникальный эффект: Свирепость", -"item.simplyswords.ferocitysworditem.tooltip2": "Шанс при ударе увеличить свою", -"item.simplyswords.ferocitysworditem.tooltip3": "скорость атаки. Эффект суммируется до 15 раз.", -"item.simplyswords.ferocitysworditem.tooltip4": "Потратив всё суммирование Вы получите", -"item.simplyswords.ferocitysworditem.tooltip5": "силу на длительность, равную", -"item.simplyswords.ferocitysworditem.tooltip6": "потраченным суммированиям.", +"item.simplyswords.ferocitysworditem.tooltip2": "Шанс при ударе увеличить свою скорость", +"item.simplyswords.ferocitysworditem.tooltip3": "атаки. Эффект суммируется до 15 раз.", +"item.simplyswords.ferocitysworditem.tooltip4": "Потратив всё суммирование (заряды) Вы", +"item.simplyswords.ferocitysworditem.tooltip5": "получите силу на длительность, равную", +"item.simplyswords.ferocitysworditem.tooltip6": "числу потраченных суммирований (зарядов).", "item.simplyswords.rendsworditem.tooltip1": "Уникальный эффект: Раздирание души", -"item.simplyswords.rendsworditem.tooltip2": "Шанс при ударе наложить суммирующие ослабляющие", -"item.simplyswords.rendsworditem.tooltip3": "эффекты на врага.", -"item.simplyswords.rendsworditem.tooltip4": "Трата всего суммирования из окружающих врагов,", -"item.simplyswords.rendsworditem.tooltip5": "наносите им урон и исцелите себя, равное", -"item.simplyswords.rendsworditem.tooltip6": "потраченным суммированиям.", +"item.simplyswords.rendsworditem.tooltip2": "Шанс при ударе наложить суммирующие", +"item.simplyswords.rendsworditem.tooltip3": "ослабляющие эффекты на врага.", +"item.simplyswords.rendsworditem.tooltip4": "Потратив всё суммирования (заряды) из окружающих врагов,", +"item.simplyswords.rendsworditem.tooltip5": "Вы наносите им урон и исцеляете себя, в зависимости", +"item.simplyswords.rendsworditem.tooltip6": "от количества использованных суммирований (зарядов).", "item.simplyswords.soulsworditem.tooltip1": "Уникальный эффект: Слияние с душой", -"item.simplyswords.soulsworditem.tooltip2": "Шанс при ударе поглотить души рядом находящихся", -"item.simplyswords.soulsworditem.tooltip3": "врагов, утяжеляя и замедляя скорость атаки владельца.", -"item.simplyswords.soulsworditem.tooltip4": "Выпущенные души передают ослабление скорости атаки", -"item.simplyswords.soulsworditem.tooltip5": "близлежащим врагам и восстанавливают здоровье", -"item.simplyswords.soulsworditem.tooltip6": "владельца.", +"item.simplyswords.soulsworditem.tooltip2": "Шанс при ударе поглотить души ближайших", +"item.simplyswords.soulsworditem.tooltip3": "врагов, утяжеляя владельца и замедляя", +"item.simplyswords.soulsworditem.tooltip4": "скорость атаки. Выпущенные души передают", +"item.simplyswords.soulsworditem.tooltip5": "замедление скорости атаки врагам поблизости", +"item.simplyswords.soulsworditem.tooltip6": "и восстанавливают здоровье владельца.", "item.simplyswords.stealsworditem.tooltip1": "Уникальный эффект: Похищение души", -"item.simplyswords.stealsworditem.tooltip2": "Шанс при ударе поглотить души своих", -"item.simplyswords.stealsworditem.tooltip3": "противников, ускоряя себя при этом", -"item.simplyswords.stealsworditem.tooltip4": "замедляете цель и помечаете её на смерть.", +"item.simplyswords.stealsworditem.tooltip2": "Шанс при ударе поглотить души", +"item.simplyswords.stealsworditem.tooltip3": "противников, замедляя их и помечая", +"item.simplyswords.stealsworditem.tooltip4": "на гибель, одновременно ускоряя себя.", "item.simplyswords.stealsworditem.tooltip5": "Находясь в пределах 5 блоков от бездушной", -"item.simplyswords.stealsworditem.tooltip6": "цели, Вы возвращаете себе душу, сделав рывок", -"item.simplyswords.stealsworditem.tooltip7": "и обретая невидимость. Находясь более 5", -"item.simplyswords.stealsworditem.tooltip8": "блоков от бездушной цели, Вы перемещаетесь", -"item.simplyswords.stealsworditem.tooltip9": "на его местоположение, принудительно возвращаете", -"item.simplyswords.stealsworditem.tooltip10": "себе душу, ослепляете и наносите ему урон.", +"item.simplyswords.stealsworditem.tooltip6": "цели Вы возвращаете себе душу, совершая рывок", +"item.simplyswords.stealsworditem.tooltip7": "и становясь невидимым. Находясь более 5", +"item.simplyswords.stealsworditem.tooltip8": "блоков от бездушной цели, то перемещаетесь", +"item.simplyswords.stealsworditem.tooltip9": "к её местоположению, принудительно возвращаете", +"item.simplyswords.stealsworditem.tooltip10": "себе душу, ослепляете и наносите ей урон.", "item.simplyswords.soulpyresworditem.tooltip1": "Уникальный эффект: Узы души", -"item.simplyswords.soulpyresworditem.tooltip2": "Инициируйте связь с душой, поменявшись местами", -"item.simplyswords.soulpyresworditem.tooltip3": "с целью и замораживая её, при этом", -"item.simplyswords.soulpyresworditem.tooltip4": "Вы получаете спешку и сопротивление.", -"item.simplyswords.soulpyresworditem.tooltip5": "При достижении своей цели, Вы поджигаете", -"item.simplyswords.soulpyresworditem.tooltip6": "близлежащих врагов и притягиваете их к себе.", +"item.simplyswords.soulpyresworditem.tooltip2": "Инициируйте связь с душой, обменявшись с ней", +"item.simplyswords.soulpyresworditem.tooltip3": "местами и заморозив её. При этом Вы получаете", +"item.simplyswords.soulpyresworditem.tooltip4": "эффект «Спешка» и «Сопротивление».", +"item.simplyswords.soulpyresworditem.tooltip5": "Добравшись до цели, Вы поджигаете близлежащих", +"item.simplyswords.soulpyresworditem.tooltip6": "врагов и притягиваете их к себе.", "item.simplyswords.soulpyresworditem.tooltip7": "По истечении %d секунд узы", "item.simplyswords.soulpyresworditem.tooltip8": "разрываются и владелец снова", -"item.simplyswords.soulpyresworditem.tooltip9": "меняется местами с целью.", +"item.simplyswords.soulpyresworditem.tooltip9": "обменивается местами с целью.", "item.simplyswords.frostfallsworditem.tooltip1": "Уникальный эффект: Ледяная ярость", -"item.simplyswords.frostfallsworditem.tooltip2": "Шанс при ударе покрыть врагов льдом", -"item.simplyswords.frostfallsworditem.tooltip3": "из-за чего они не получают урон.", -"item.simplyswords.frostfallsworditem.tooltip4": "По истечении %d секунд лёд разрушается", -"item.simplyswords.frostfallsworditem.tooltip5": "вдребезги, нанося %d урона. Покрытие себя льдом", +"item.simplyswords.frostfallsworditem.tooltip2": "Шанс при ударе окутать врагов льдом,", +"item.simplyswords.frostfallsworditem.tooltip3": "что временно блокирует нанесение урона.", +"item.simplyswords.frostfallsworditem.tooltip4": "По истечении %d секунд лёд разрушается,", +"item.simplyswords.frostfallsworditem.tooltip5": "причиняя %d урона. Покрытие себя льдом", "item.simplyswords.frostfallsworditem.tooltip6": "наделяет Вас иммунитетом и регенерацией на %d секунд.", "item.simplyswords.moltenedgesworditem.tooltip1": "Уникальный эффект: Плавленный рёв", -"item.simplyswords.moltenedgesworditem.tooltip2": "Шанс при ударе поджечь врага или самого себя.", -"item.simplyswords.moltenedgesworditem.tooltip3": "При низком здоровье, Вы получаете регенерацию.", -"item.simplyswords.moltenedgesworditem.tooltip4": "Получение силы и скорости в зависимости от недостающего", -"item.simplyswords.moltenedgesworditem.tooltip5": "здоровья. Высвобождение мощного рёва отбрасывает и", -"item.simplyswords.moltenedgesworditem.tooltip6": "поджигает близлежащих врагов. Получение сопротивления", -"item.simplyswords.moltenedgesworditem.tooltip7": "и сильного натиска, продолжительностью в зависимости от ударов по врагам.", +"item.simplyswords.moltenedgesworditem.tooltip2": "Шанс поджечь врага или самого себя при ударе.", +"item.simplyswords.moltenedgesworditem.tooltip3": "При низком здоровье Вы получаете регенерацию.", +"item.simplyswords.moltenedgesworditem.tooltip4": "В зависимости от недостающего здоровья Вы получаете", +"item.simplyswords.moltenedgesworditem.tooltip5": "эффект «Сила» и «Скорость». Выпущенный мощный рёв отбрасывает", +"item.simplyswords.moltenedgesworditem.tooltip6": "и поджигает близлежащих врагов. Получение эффекта «Сопротивления»", +"item.simplyswords.moltenedgesworditem.tooltip7": "и «Сильного натиска», продолжительность которых зависит от количества ударов по врагам.", "item.simplyswords.livyatansworditem.tooltip1": "Уникальный эффект: Ледяные осколки", -"item.simplyswords.livyatansworditem.tooltip2": "Шанс при ударе покрыть врагов", -"item.simplyswords.livyatansworditem.tooltip3": "льдом, из-за чего они не получают урон.", -"item.simplyswords.livyatansworditem.tooltip4": "По истечении %d секунд ледяные осколки наносят %d урона.", -"item.simplyswords.livyatansworditem.tooltip5": "Чем раньше разрушьте лёд, покрытый на Ваших", -"item.simplyswords.livyatansworditem.tooltip6": "врагах, тем больше урона им нанесёте.", +"item.simplyswords.livyatansworditem.tooltip2": "Шанс при ударе окутать врагов льдом,", +"item.simplyswords.livyatansworditem.tooltip3": "что временно блокирует нанесение урона.", +"item.simplyswords.livyatansworditem.tooltip4": "По истечении %d секунд ледяные осколки распадаются,", +"item.simplyswords.livyatansworditem.tooltip5": "причиняя %d урона. Чем быстрее Вы разрушите лёд,", +"item.simplyswords.livyatansworditem.tooltip6": "окутанный на Ваших врагах, тем больше урона нанесёте врагам.", "item.simplyswords.icewhispersworditem.tooltip1": "Уникальный эффект: Вечная мерзлота", -"item.simplyswords.icewhispersworditem.tooltip2": "При владении мечом получаете ледяную ауру", -"item.simplyswords.icewhispersworditem.tooltip3": "наносящую урон и замедляющую врагов в пределах %d блоков.", -"item.simplyswords.icewhispersworditem.tooltip4": "Истощите свой голод, чтобы вызвать", -"item.simplyswords.icewhispersworditem.tooltip5": "вихрь на своём месте, что замедляет и наносит", -"item.simplyswords.icewhispersworditem.tooltip6": "усиленный урон врагам в пределах %d блоков.", +"item.simplyswords.icewhispersworditem.tooltip2": "Владение мечом окружает Вас ледяной аурой, которая", +"item.simplyswords.icewhispersworditem.tooltip3": "наносит урон и замедляет врагов в радиусе %d блоков.", +"item.simplyswords.icewhispersworditem.tooltip4": "Возможность истощить голод, чтобы создать", +"item.simplyswords.icewhispersworditem.tooltip5": "ледяной вихрь на месте, замедляющий и наносящий", +"item.simplyswords.icewhispersworditem.tooltip6": "усиленный урон врагам в радиусе %d блоков.", "item.simplyswords.arcanethystsworditem.tooltip1": "Уникальный эффект: Чародейская атака", -"item.simplyswords.arcanethystsworditem.tooltip2": "Шанс при ударе поднять свою цель в воздух.", -"item.simplyswords.arcanethystsworditem.tooltip3": "Направьте свою чародейскую энергию, чтобы", -"item.simplyswords.arcanethystsworditem.tooltip4": "атаковать близлежащих врагов, подняв их в", -"item.simplyswords.arcanethystsworditem.tooltip5": "воздух, одновременно нанося постепенный урон,", -"item.simplyswords.arcanethystsworditem.tooltip6": "затем обрушив их на землю.", +"item.simplyswords.arcanethystsworditem.tooltip2": "Шанс поднять цель в воздух при ударе.", +"item.simplyswords.arcanethystsworditem.tooltip3": "Направьте чародейскую энергию для", +"item.simplyswords.arcanethystsworditem.tooltip4": "атаки близлежащих врагов, поднимая их в", +"item.simplyswords.arcanethystsworditem.tooltip5": "воздух, нанося постепенный урон, а", +"item.simplyswords.arcanethystsworditem.tooltip6": "затем сбрасывая их на землю.", "item.simplyswords.thunderbrandsworditem.tooltip1": "Уникальный эффект: Громовой обстрел", -"item.simplyswords.thunderbrandsworditem.tooltip2": "Шанс при ударе обновить перезарядку способности.", -"item.simplyswords.thunderbrandsworditem.tooltip3": "При зарядке оружия, сразу замедляете себя,", -"item.simplyswords.thunderbrandsworditem.tooltip4": "нанося урон по области близлежащим врагам.", -"item.simplyswords.thunderbrandsworditem.tooltip5": "После зарядки, Вы делаете рывок, получаете", -"item.simplyswords.thunderbrandsworditem.tooltip6": "спешку и наносите колоссальный урон врагам", +"item.simplyswords.thunderbrandsworditem.tooltip2": "Шанс обновить перезарядку способности при ударе.", +"item.simplyswords.thunderbrandsworditem.tooltip3": "Заряжая оружие, Вы сразу замедляете себя,", +"item.simplyswords.thunderbrandsworditem.tooltip4": "нанося областной урон близлежащим врагам.", +"item.simplyswords.thunderbrandsworditem.tooltip5": "После завершения зарядки, совершаете рывок, получаете", +"item.simplyswords.thunderbrandsworditem.tooltip6": "спешку и наносите сокрушительный урон врагам", "item.simplyswords.thunderbrandsworditem.tooltip7": "на своём пути.", "item.simplyswords.stormsedgesworditem.tooltip1": "Уникальный эффект: Удар бури", -"item.simplyswords.stormsedgesworditem.tooltip2": "Шанс при ударе обновить перезарядку способности.", -"item.simplyswords.stormsedgesworditem.tooltip3": "Молниеносно дёрнитесь вперёд, сразу", -"item.simplyswords.stormsedgesworditem.tooltip4": "получив неуязвимость, наряду с", -"item.simplyswords.stormsedgesworditem.tooltip5": "длительной скоростью и спешкой.", +"item.simplyswords.stormsedgesworditem.tooltip2": "Шанс обновить перезарядку способности при ударе.", +"item.simplyswords.stormsedgesworditem.tooltip3": "Молниеносный рывок вперёд, сразу", +"item.simplyswords.stormsedgesworditem.tooltip4": "делает Вас неуязвимым, а также", +"item.simplyswords.stormsedgesworditem.tooltip5": "дарует длительный эффект «Скорость» и «Спешка».", "item.simplyswords.lichbladesworditem.tooltip1": "Уникальный эффект: Страдание души I", "item.simplyswords.lichbladesworditem.tooltip1.2": "Уникальный эффект: Страдание души II", "item.simplyswords.lichbladesworditem.tooltip1.3": "Уникальный эффект: Страдание души III", "item.simplyswords.lichbladesworditem.tooltip2": "Из Вас исходят угнетённые души,", -"item.simplyswords.lichbladesworditem.tooltip3": "наносящие урон любым близлежащим врагам.", -"item.simplyswords.lichbladesworditem.tooltip4": "Приказывайте своим духам атаковать", -"item.simplyswords.lichbladesworditem.tooltip5": "отдалённую цель, нанося быстрый", -"item.simplyswords.lichbladesworditem.tooltip6": "урон, кроме того, шанс выссосать здоровье.", -"item.simplyswords.lichbladesworditem.tooltip7": "После окончания атаки, Ваши души", -"item.simplyswords.lichbladesworditem.tooltip8": "вернутся к Вам перед тем, как они доберутся до Вас", -"item.simplyswords.lichbladesworditem.tooltip9": "и Вы получите эффект «Поглощение».", +"item.simplyswords.lichbladesworditem.tooltip3": "поражающие близлежащих врагов.", +"item.simplyswords.lichbladesworditem.tooltip4": "Приказывайте душами, направляя их", +"item.simplyswords.lichbladesworditem.tooltip5": "на удалённую цель, чтобы нанести быстрый", +"item.simplyswords.lichbladesworditem.tooltip6": "урон и с шансом выссосать здоровье.", +"item.simplyswords.lichbladesworditem.tooltip7": "После атаки души возвращаются к Вам и", +"item.simplyswords.lichbladesworditem.tooltip8": "перед тем, как они доберутся до Вас:", +"item.simplyswords.lichbladesworditem.tooltip9": "получите эффект «Поглощение».", "item.simplyswords.stormbringersworditem.tooltip1": "Уникальный эффект: Шоковое отражение", "item.simplyswords.stormbringersworditem.tooltip2": "Сфокусируйте энергию на кончике своего", -"item.simplyswords.stormbringersworditem.tooltip3": "клинка, что позволяет Вам мгновенно", +"item.simplyswords.stormbringersworditem.tooltip3": "клинка, что позволяет мгновенно", "item.simplyswords.stormbringersworditem.tooltip4": "блокировать входящие атаки.", -"item.simplyswords.stormbringersworditem.tooltip5": "При успешном расчёте времени этой", -"item.simplyswords.stormbringersworditem.tooltip6": "способности, в условиях удара ближнего", -"item.simplyswords.stormbringersworditem.tooltip7": "боя врага, Вы выполните парирование, нанося урон и", -"item.simplyswords.stormbringersworditem.tooltip8": "отшвырнув своего соперника, но в то же время", -"item.simplyswords.stormbringersworditem.tooltip9": "уменьшите перезарядку способности.", -"item.simplyswords.stormbringersworditem.tooltip10": "Выполнение парирования, один за другим,", -"item.simplyswords.stormbringersworditem.tooltip11": "увеличит урон от способности и перезарядку.", +"item.simplyswords.stormbringersworditem.tooltip5": "При правильном расчёте времени этой", +"item.simplyswords.stormbringersworditem.tooltip6": "способности, удар ближнего боя врага", +"item.simplyswords.stormbringersworditem.tooltip7": "парируется, нанося урон и отбрасывая", +"item.simplyswords.stormbringersworditem.tooltip8": "соперника, но в то же время", +"item.simplyswords.stormbringersworditem.tooltip9": "сокращая перезарядку способности.", +"item.simplyswords.stormbringersworditem.tooltip10": "Серия успешных парирований увеличивает,", +"item.simplyswords.stormbringersworditem.tooltip11": "урон способности и перезарядку.", "item.simplyswords.shadowmistsworditem.tooltip1": "Уникальный эффект: Теневой туман", "item.simplyswords.shadowmistsworditem.tooltip2": "Шанс при ударе нанести масштабируемый магический", -"item.simplyswords.shadowmistsworditem.tooltip3": "урон в зависимости от значения брони Ваших целей.", -"item.simplyswords.shadowmistsworditem.tooltip4": "Создайте маскирующий мрачный туман", -"item.simplyswords.shadowmistsworditem.tooltip5": "под ногами и пройдите сквозь тень на короткое расстояние.", - -"item.simplyswords.harbingersworditem.tooltip1": "Уникальный эффект: Abyssal Standard", -"item.simplyswords.harbingersworditem.tooltip2": "Chance on hit to inflict weakness.", -"item.simplyswords.harbingersworditem.tooltip3": "Summons an Abyssal Battle Standard that", -"item.simplyswords.harbingersworditem.tooltip4": "pulls, damages, and slows enemies whilst", -"item.simplyswords.harbingersworditem.tooltip5": "periodically granting haste to friendly", -"item.simplyswords.harbingersworditem.tooltip6": "players within its vicinity.", - -"item.simplyswords.sunfiresworditem.tooltip1": "Уникальный эффект: Righteous Standard", -"item.simplyswords.sunfiresworditem.tooltip2": "Chance on hit to regenerate health.", -"item.simplyswords.sunfiresworditem.tooltip3": "Summons a Righteous Battle Standard that", -"item.simplyswords.sunfiresworditem.tooltip4": "ignites, damages, and slows enemies whilst", -"item.simplyswords.sunfiresworditem.tooltip5": "periodically granting strength and health", -"item.simplyswords.sunfiresworditem.tooltip6": "to friendly players within its vicinity.", - -"item.simplyswords.whisperwindsworditem.tooltip1": "Уникальный эффект: Fatal Flicker", -"item.simplyswords.whisperwindsworditem.tooltip2": "Chance on hit to refresh ability cooldown.", -"item.simplyswords.whisperwindsworditem.tooltip3": "Perform a swift forward dash, gaining", -"item.simplyswords.whisperwindsworditem.tooltip4": "resistance and absorption, and inflicting", -"item.simplyswords.whisperwindsworditem.tooltip5": "enemies in your path with Echo.", -"item.simplyswords.whisperwindsworditem.tooltip6": "For every target hit by the dash, the", -"item.simplyswords.whisperwindsworditem.tooltip7": "amount of Echo you inflict is increased.", - -"item.simplyswords.emberlashsworditem.tooltip1": "Уникальный эффект: Smoulder", -"item.simplyswords.emberlashsworditem.tooltip2": "Your attacks inflict Smouldering.", -"item.simplyswords.emberlashsworditem.tooltip3": "Attacking enemies inflicted with", -"item.simplyswords.emberlashsworditem.tooltip4": "Smouldering causes you to deal an", -"item.simplyswords.emberlashsworditem.tooltip5": "additional %d damage per stack.", -"item.simplyswords.emberlashsworditem.tooltip6": "Evade backwards while cauterising", -"item.simplyswords.emberlashsworditem.tooltip7": "your wounds, healing for %d%% of Max HP.", - -"item.simplyswords.waxweaversworditem.tooltip1": "Уникальный эффект: Waxweave", -"item.simplyswords.waxweaversworditem.tooltip2": "Attacking ignited enemies grants", -"item.simplyswords.waxweaversworditem.tooltip3": "you Strength and Haste.", -"item.simplyswords.waxweaversworditem.tooltip4": "When you would die, you are instead", -"item.simplyswords.waxweaversworditem.tooltip5": "imbued with regenerative wax,", -"item.simplyswords.waxweaversworditem.tooltip6": "healing you to full and granting", -"item.simplyswords.waxweaversworditem.tooltip7": "resistance for a short time.", -"item.simplyswords.waxweaversworditem.tooltip8": "This effect can only occur once", -"item.simplyswords.waxweaversworditem.tooltip9": "every %ds. Mainhand only.", - -"item.simplyswords.hiveheartsworditem.tooltip1": "Уникальный эффект: Hivemind", -"item.simplyswords.hiveheartsworditem.tooltip2": "Release an angry bee on hit", -"item.simplyswords.hiveheartsworditem.tooltip3": "that stings your target before", -"item.simplyswords.hiveheartsworditem.tooltip4": "disappearing.", -"item.simplyswords.hiveheartsworditem.tooltip5": "This effect can only occur once", -"item.simplyswords.hiveheartsworditem.tooltip6": "every %ds.", -"item.simplyswords.hiveheartsworditem.tooltip7": "Your bees focus on producing", -"item.simplyswords.hiveheartsworditem.tooltip8": "regenerative honey, healing you", -"item.simplyswords.hiveheartsworditem.tooltip9": "over time but placing the", -"item.simplyswords.hiveheartsworditem.tooltip10": "Hivemind ability on cooldown.", - -"item.simplyswords.starsedgesworditem.tooltip1": "Уникальный эффект: Star's Edge", -"item.simplyswords.starsedgesworditem.tooltip2": "During the day, your attacks inflict", -"item.simplyswords.starsedgesworditem.tooltip3": "%s additional damage.", -"item.simplyswords.starsedgesworditem.tooltip4": "At night, your attacks gain lifesteal.", -"item.simplyswords.starsedgesworditem.tooltip5": "Evade backwards while gaining Speed.", -"item.simplyswords.starsedgesworditem.tooltip6": "Activate a second time to dash", -"item.simplyswords.starsedgesworditem.tooltip7": "forward, gaining resistance and", -"item.simplyswords.starsedgesworditem.tooltip8": "haste.", - -"item.simplyswords.wickpiercersworditem.tooltip1": "Уникальный эффект: Flicker Fury", -"item.simplyswords.wickpiercersworditem.tooltip2": "Instill your mind with fury,", -"item.simplyswords.wickpiercersworditem.tooltip3": "gaining a significant bonus", -"item.simplyswords.wickpiercersworditem.tooltip4": "to attack speed and allowing", -"item.simplyswords.wickpiercersworditem.tooltip5": "each strike of Wickpiercer", -"item.simplyswords.wickpiercersworditem.tooltip6": "to hit twice for %ds.", - -"item.simplyswords.tempestsworditem.tooltip1": "Уникальный эффект: Vortex", -"item.simplyswords.tempestsworditem.tooltip2": "Your attacks attach elemental", -"item.simplyswords.tempestsworditem.tooltip3": "energy to the target, causing", -"item.simplyswords.tempestsworditem.tooltip4": "damage over time and element", -"item.simplyswords.tempestsworditem.tooltip5": "specific debuffs.", -"item.simplyswords.tempestsworditem.tooltip6": "This effect stacks.", -"item.simplyswords.tempestsworditem.tooltip7": "Return all nearby elements to", -"item.simplyswords.tempestsworditem.tooltip8": "yourself, forming a vortex of", -"item.simplyswords.tempestsworditem.tooltip9": "elemental energy around you,", -"item.simplyswords.tempestsworditem.tooltip10": "damaging nearby enemies and", -"item.simplyswords.tempestsworditem.tooltip11": "growing in size.", - -"item.simplyswords.dreadtidesworditem.tooltip1": "Уникальный эффект: Voidcaller", -"item.simplyswords.dreadtidesworditem.tooltip2": "Passively generate stacks of", -"item.simplyswords.dreadtidesworditem.tooltip3": "Voidcloak, increasing attack", -"item.simplyswords.dreadtidesworditem.tooltip4": "speed and reducing incoming", -"item.simplyswords.dreadtidesworditem.tooltip5": "damage by 10% per stack.", -"item.simplyswords.dreadtidesworditem.tooltip6": "Taking damage removes a stack.", -"item.simplyswords.dreadtidesworditem.tooltip7": "Max 1 stack per 20 corruption.", -"item.simplyswords.dreadtidesworditem.tooltip8": "Release your Voidcloak and", -"item.simplyswords.dreadtidesworditem.tooltip9": "send eldritch energy toward", -"item.simplyswords.dreadtidesworditem.tooltip10": "the nearest enemy, dealing", -"item.simplyswords.dreadtidesworditem.tooltip11": "rapid damage.", -"item.simplyswords.dreadtidesworditem.tooltip12": "Wielding this weapon inflicts", -"item.simplyswords.dreadtidesworditem.tooltip13": "you with corruption over time.", - -"item.simplyswords.flamewindsworditem.tooltip1": "Уникальный эффект: Emberstorm", -"item.simplyswords.flamewindsworditem.tooltip2": "When a flame seed detonates,", -"item.simplyswords.flamewindsworditem.tooltip3": "gain Haste.", -"item.simplyswords.flamewindsworditem.tooltip4": "Plant a seed of flame within", -"item.simplyswords.flamewindsworditem.tooltip5": "the nearest enemy, dealing", -"item.simplyswords.flamewindsworditem.tooltip6": "damage over time.", -"item.simplyswords.flamewindsworditem.tooltip7": "Upon expiring, the seed", -"item.simplyswords.flamewindsworditem.tooltip8": "detonates, dealing area", -"item.simplyswords.flamewindsworditem.tooltip9": "damage and spreading the", -"item.simplyswords.flamewindsworditem.tooltip10": "effect to nearby enemies.", -"item.simplyswords.flamewindsworditem.tooltip11": "Spreads up to %d times.", - -"item.simplyswords.ribboncleaversworditem.tooltip1": "Уникальный эффект: Ribbonwrath", -"item.simplyswords.ribboncleaversworditem.tooltip2": "Wielding Ribboncleaver causes", -"item.simplyswords.ribboncleaversworditem.tooltip3": "you to move 5% slower, but", -"item.simplyswords.ribboncleaversworditem.tooltip4": "take 15% less damage.", -"item.simplyswords.ribboncleaversworditem.tooltip5": "Dash forward, shrugging off", -"item.simplyswords.ribboncleaversworditem.tooltip6": "the next few incoming hits,", -"item.simplyswords.ribboncleaversworditem.tooltip7": "gaining knockback resistance,", -"item.simplyswords.ribboncleaversworditem.tooltip8": "and causing your next attack", -"item.simplyswords.ribboncleaversworditem.tooltip9": "to deal +95% damage to a", -"item.simplyswords.ribboncleaversworditem.tooltip10": "single target.", - -"item.simplyswords.magiscythesworditem.tooltip1": "Уникальный эффект: Magistorm", -"item.simplyswords.magiscythesworditem.tooltip2": "Attacking enemies while", -"item.simplyswords.magiscythesworditem.tooltip3": "Magistorm is active grants a", -"item.simplyswords.magiscythesworditem.tooltip4": "chance to repair an equipped", -"item.simplyswords.magiscythesworditem.tooltip5": "item.", -"item.simplyswords.magiscythesworditem.tooltip6": "A localised magical storm", -"item.simplyswords.magiscythesworditem.tooltip7": "manifests above you, dealing", -"item.simplyswords.magiscythesworditem.tooltip8": "damage to nearby enemies.", -"item.simplyswords.magiscythesworditem.tooltip9": "Each time the storm strikes,", -"item.simplyswords.magiscythesworditem.tooltip10": "it has a chance to refresh its", -"item.simplyswords.magiscythesworditem.tooltip11": "duration and increases its", -"item.simplyswords.magiscythesworditem.tooltip12": "severity.", - -"item.simplyswords.enigmasworditem.tooltip1": "Уникальный эффект: Galeforce", -"item.simplyswords.enigmasworditem.tooltip2": "While you are near to your", -"item.simplyswords.enigmasworditem.tooltip3": "twister, gain Haste.", -"item.simplyswords.enigmasworditem.tooltip4": "Summon a twister that chases", -"item.simplyswords.enigmasworditem.tooltip5": "down nearby enemies, dealing", -"item.simplyswords.enigmasworditem.tooltip6": "increased damage the longer", -"item.simplyswords.enigmasworditem.tooltip7": "an enemy remains trapped", -"item.simplyswords.enigmasworditem.tooltip8": "within.", - -"item.simplyswords.magibladesworditem.tooltip1": "Уникальный эффект: Magisonic", -"item.simplyswords.magibladesworditem.tooltip2": "The Magiblade occasionally", -"item.simplyswords.magibladesworditem.tooltip3": "detects and repels approaching", -"item.simplyswords.magibladesworditem.tooltip4": "enemies.", -"item.simplyswords.magibladesworditem.tooltip5": "After a short delay, your", -"item.simplyswords.magibladesworditem.tooltip6": "Magiblade releases a sonic", -"item.simplyswords.magibladesworditem.tooltip7": "boom in front of you, dealing", -"item.simplyswords.magibladesworditem.tooltip8": "damage to enemies caught in", -"item.simplyswords.magibladesworditem.tooltip9": "its path.", - -"item.simplyswords.magispearsworditem.tooltip1": "Уникальный эффект: Magislam", -"item.simplyswords.magispearsworditem.tooltip2": "When attacking enemies,", -"item.simplyswords.magispearsworditem.tooltip3": "you have a chance to deal", -"item.simplyswords.magispearsworditem.tooltip4": "additional magic damage.", -"item.simplyswords.magispearsworditem.tooltip5": "Powered by the Magispear,", -"item.simplyswords.magispearsworditem.tooltip6": "you perform a forward leap,", -"item.simplyswords.magispearsworditem.tooltip7": "followed by a slam attack,", -"item.simplyswords.magispearsworditem.tooltip8": "damaging nearby enemies.", -"item.simplyswords.magispearsworditem.tooltip9": "You are immune while leaping.", - -"item.simplyswords.caelestissworditem.tooltip1": "Уникальный эффект: Astral Shift", -"item.simplyswords.caelestissworditem.tooltip2": "While wielded, grants a chance", -"item.simplyswords.caelestissworditem.tooltip3": "to completely avoid incoming", -"item.simplyswords.caelestissworditem.tooltip4": "damage.", -"item.simplyswords.caelestissworditem.tooltip5": "Briefly step into the astral plane,", -"item.simplyswords.caelestissworditem.tooltip6": "becoming immune to damage for", -"item.simplyswords.caelestissworditem.tooltip7": "%ds", -"item.simplyswords.caelestissworditem.tooltip8": "Upon leaving the astral plane,", -"item.simplyswords.caelestissworditem.tooltip9": "release a violent explosion,", -"item.simplyswords.caelestissworditem.tooltip10": "dealing area damage relative", -"item.simplyswords.caelestissworditem.tooltip11": "to the damage negated while", -"item.simplyswords.caelestissworditem.tooltip12": "in the astral plane.", +"item.simplyswords.shadowmistsworditem.tooltip3": "урон, зависящий от значения брони целей.", +"item.simplyswords.shadowmistsworditem.tooltip4": "Создайте мрачный туман под ногами, скрывающий Вас,", +"item.simplyswords.shadowmistsworditem.tooltip5": "и переместитесь на короткое расстояние сквозь тень.", + +"item.simplyswords.harbingersworditem.tooltip1": "Уникальный эффект: Знамя бездны", +"item.simplyswords.harbingersworditem.tooltip2": "Шанс нанести слабость при ударе.", +"item.simplyswords.harbingersworditem.tooltip3": "Вызывает Боевое знамя бездны, которое", +"item.simplyswords.harbingersworditem.tooltip4": "притягивает, замедляет и наносит урон врагам.", +"item.simplyswords.harbingersworditem.tooltip5": "Одновременно знамя периодически наделяет", +"item.simplyswords.harbingersworditem.tooltip6": "союзников спешкой в зоне своей окружности.", + +"item.simplyswords.sunfiresworditem.tooltip1": "Уникальный эффект: Праведное знамя", +"item.simplyswords.sunfiresworditem.tooltip2": "Шанс восстановить здоровье при ударе.", +"item.simplyswords.sunfiresworditem.tooltip3": "Вызывает Боевое праведное знамя, которое", +"item.simplyswords.sunfiresworditem.tooltip4": "поджигает, замедляет и наносит урон врагам.", +"item.simplyswords.sunfiresworditem.tooltip5": "Одновременно знамя периодически наделяет союзников", +"item.simplyswords.sunfiresworditem.tooltip6": "силой и здоровьем в зоне своей окружности.", + +"item.simplyswords.whisperwindsworditem.tooltip1": "Уникальный эффект: Смертоносная вспышка", +"item.simplyswords.whisperwindsworditem.tooltip2": "Шанс обновить перезарядку способности при ударе.", +"item.simplyswords.whisperwindsworditem.tooltip3": "Совершите стремительный рывок вперёд, получая", +"item.simplyswords.whisperwindsworditem.tooltip4": "эффект «Сопротивления» и «Поглощения». Враги,", +"item.simplyswords.whisperwindsworditem.tooltip5": "оказавшиеся на Вашем пути, поражаются Эхо.", +"item.simplyswords.whisperwindsworditem.tooltip6": "А каждая цель, попавшая под удар рывка,", +"item.simplyswords.whisperwindsworditem.tooltip7": "увеличивает количество, наносимого Вами урон от Эхо.", + +"item.simplyswords.emberlashsworditem.tooltip1": "Уникальный эффект: Зола", +"item.simplyswords.emberlashsworditem.tooltip2": "Ваши атаки наносят Тление.", +"item.simplyswords.emberlashsworditem.tooltip3": "Атака врагов накладывает Тление, что", +"item.simplyswords.emberlashsworditem.tooltip4": "заставляет Вас наносить дополнительно", +"item.simplyswords.emberlashsworditem.tooltip5": "%d урона за суммирование (заряд).", +"item.simplyswords.emberlashsworditem.tooltip6": "Уклоняясь, Вы прижигаете свои", +"item.simplyswords.emberlashsworditem.tooltip7": "раны, восстанавливая %d%% от Максимального здоровья.", + +"item.simplyswords.waxweaversworditem.tooltip1": "Уникальный эффект: Выработка воска", +"item.simplyswords.waxweaversworditem.tooltip2": "Атака подожжённых врагов наделяет", +"item.simplyswords.waxweaversworditem.tooltip3": "Вас эффектами «Сила» и «Спешка».", +"item.simplyswords.waxweaversworditem.tooltip4": "Находясь на грани смерты, Вы", +"item.simplyswords.waxweaversworditem.tooltip5": "насыщаетесь полностью регенерирующим", +"item.simplyswords.waxweaversworditem.tooltip6": "Вас воском, что исцеляет и наделяет", +"item.simplyswords.waxweaversworditem.tooltip7": "эффектом «Сопротивление» на короткий период", +"item.simplyswords.waxweaversworditem.tooltip8": "времени. Этот эффект происходит лишь", +"item.simplyswords.waxweaversworditem.tooltip9": "раз каждые %d секунд. Только для основной руки.", + +"item.simplyswords.hiveheartsworditem.tooltip1": "Уникальный эффект: Коллективный разум", +"item.simplyswords.hiveheartsworditem.tooltip2": "Выпускайте злых пчёл при ударе,", +"item.simplyswords.hiveheartsworditem.tooltip3": "жалящих Вашу цель, пока не", +"item.simplyswords.hiveheartsworditem.tooltip4": "исчезнут.", +"item.simplyswords.hiveheartsworditem.tooltip5": "Этот эффект происходит лишь", +"item.simplyswords.hiveheartsworditem.tooltip6": "раз каждые %d секунд.", +"item.simplyswords.hiveheartsworditem.tooltip7": "Ваши пчёлы концентрируются на выработке", +"item.simplyswords.hiveheartsworditem.tooltip8": "регенерирующего воска, постепенно", +"item.simplyswords.hiveheartsworditem.tooltip9": "исцеляя Вас, однако ставит способность", +"item.simplyswords.hiveheartsworditem.tooltip10": "«Коллективный разум» на перезарядку.", + +"item.simplyswords.starsedgesworditem.tooltip1": "Уникальный эффект: Звёздная кромка", +"item.simplyswords.starsedgesworditem.tooltip2": "Днём, Ваши атаки наносят %s", +"item.simplyswords.starsedgesworditem.tooltip3": "дополнительного урона. Ночью,", +"item.simplyswords.starsedgesworditem.tooltip4": "Ваши атаки получают эффект «Похищение", +"item.simplyswords.starsedgesworditem.tooltip5": "жизни». Уклонитесь назад, чтобы при этом", +"item.simplyswords.starsedgesworditem.tooltip6": "получить эффект «Скорость». Активируйте", +"item.simplyswords.starsedgesworditem.tooltip7": "второй раз, чтобы совершить рывок, наделяющий", +"item.simplyswords.starsedgesworditem.tooltip8": "Вас эффектом «Сопротивление» и «Спешка».", + +"item.simplyswords.wickpiercersworditem.tooltip1": "Уникальный эффект: Вспышка гнева", +"item.simplyswords.wickpiercersworditem.tooltip2": "Наполните свой разум гневом,", +"item.simplyswords.wickpiercersworditem.tooltip3": "получая существенный бонус", +"item.simplyswords.wickpiercersworditem.tooltip4": "к скорости атаки, позволяющий", +"item.simplyswords.wickpiercersworditem.tooltip5": "с каждым ударом наносить двойной", +"item.simplyswords.wickpiercersworditem.tooltip6": "удар Фитильным пронзателем в течение %d секунд.", + +"item.simplyswords.tempestsworditem.tooltip1": "Уникальный эффект: Вихрь", +"item.simplyswords.tempestsworditem.tooltip2": "Ваши атаки притягивают стихийную", +"item.simplyswords.tempestsworditem.tooltip3": "энергию к цели, постепенно", +"item.simplyswords.tempestsworditem.tooltip4": "нанося ей урон и характерные", +"item.simplyswords.tempestsworditem.tooltip5": "стихийные отрицательные эффекты.", +"item.simplyswords.tempestsworditem.tooltip6": "Этот эффект суммируется.", +"item.simplyswords.tempestsworditem.tooltip7": "Верните себе все ближайшие элементы,", +"item.simplyswords.tempestsworditem.tooltip8": "образуя вокруг Вас вихрь", +"item.simplyswords.tempestsworditem.tooltip9": "стихийной энергии, нанося урон", +"item.simplyswords.tempestsworditem.tooltip10": "близлежащим врагам и", +"item.simplyswords.tempestsworditem.tooltip11": "увеличивающийся в размерах.", + +"item.simplyswords.dreadtidesworditem.tooltip1": "Уникальный эффект: Призыватель бездны", +"item.simplyswords.dreadtidesworditem.tooltip2": "Пассивно генерирует суммирования (заряды)", +"item.simplyswords.dreadtidesworditem.tooltip3": "эффекта «Плащ пустоты», увеличивающий", +"item.simplyswords.dreadtidesworditem.tooltip4": "скорость атаки и понижающий входящий", +"item.simplyswords.dreadtidesworditem.tooltip5": "урон на 10% за суммирование (заряд).", +"item.simplyswords.dreadtidesworditem.tooltip6": "Получение урона сбивает суммирование (заряд).", +"item.simplyswords.dreadtidesworditem.tooltip7": "Макс. 1 суммирование за 20 порчи.", +"item.simplyswords.dreadtidesworditem.tooltip8": "Высвободите Плащ пустоты и", +"item.simplyswords.dreadtidesworditem.tooltip9": "направьте мистическую энергию прямо к", +"item.simplyswords.dreadtidesworditem.tooltip10": "самому близлежащему врагу,", +"item.simplyswords.dreadtidesworditem.tooltip11": "нанося ему быстрый урон.", +"item.simplyswords.dreadtidesworditem.tooltip12": "При владении этим оружием Вы подвергаетесь", +"item.simplyswords.dreadtidesworditem.tooltip13": "порчей в течение долгого времени.", + +"item.simplyswords.flamewindsworditem.tooltip1": "Уникальный эффект: Бушующее пламя", +"item.simplyswords.flamewindsworditem.tooltip2": "Когда взрывается Огненное семя, Вы", +"item.simplyswords.flamewindsworditem.tooltip3": "получаете эффект «Спешка».", +"item.simplyswords.flamewindsworditem.tooltip4": "Посадите Огненное семя в", +"item.simplyswords.flamewindsworditem.tooltip5": "самого ближайшего врага, чтобы", +"item.simplyswords.flamewindsworditem.tooltip6": "в течение долгого времени наносить ему урон.", +"item.simplyswords.flamewindsworditem.tooltip7": "После окончания срока действия, семя", +"item.simplyswords.flamewindsworditem.tooltip8": "взрывается, нанося областной", +"item.simplyswords.flamewindsworditem.tooltip9": "урон и распространяя эффект", +"item.simplyswords.flamewindsworditem.tooltip10": "близлежащим врагам.", +"item.simplyswords.flamewindsworditem.tooltip11": "Распространяется до %d раз.", + +"item.simplyswords.ribboncleaversworditem.tooltip1": "Уникальный эффект: Ленточная ярость", +"item.simplyswords.ribboncleaversworditem.tooltip2": "При владении Ленточным тесаком Ваша ", +"item.simplyswords.ribboncleaversworditem.tooltip3": "скорость передвижения снижается на 5%, но", +"item.simplyswords.ribboncleaversworditem.tooltip4": "получаемый урон уменьшается на 15%.", +"item.simplyswords.ribboncleaversworditem.tooltip5": "Совершив рывок, Вы избегаете несколько", +"item.simplyswords.ribboncleaversworditem.tooltip6": "следующих входящих ударов,", +"item.simplyswords.ribboncleaversworditem.tooltip7": "получаете эффект «Сопротивление", +"item.simplyswords.ribboncleaversworditem.tooltip8": "отбрасыванию» и заставляете свою", +"item.simplyswords.ribboncleaversworditem.tooltip9": "следующую атаку наносить +95%", +"item.simplyswords.ribboncleaversworditem.tooltip10": "урона по одиночной цели.", + +"item.simplyswords.magiscythesworditem.tooltip1": "Уникальный эффект: Магическая буря", +"item.simplyswords.magiscythesworditem.tooltip2": "Атака врагов, когда активна", +"item.simplyswords.magiscythesworditem.tooltip3": "Магическая буря даёт", +"item.simplyswords.magiscythesworditem.tooltip4": "шанс починить оснащённый", +"item.simplyswords.magiscythesworditem.tooltip5": "предмет.", +"item.simplyswords.magiscythesworditem.tooltip6": "Над Вами материализуется", +"item.simplyswords.magiscythesworditem.tooltip7": "Магическая буря, что наносит", +"item.simplyswords.magiscythesworditem.tooltip8": "урон близлежащим врагам.", +"item.simplyswords.magiscythesworditem.tooltip9": "Всякий раз, когда буря наносит", +"item.simplyswords.magiscythesworditem.tooltip10": "урон, у неё есть шанс обновить", +"item.simplyswords.magiscythesworditem.tooltip11": "свою длительность и увеличить", +"item.simplyswords.magiscythesworditem.tooltip12": "свою опасность.", + +"item.simplyswords.enigmasworditem.tooltip1": "Уникальный эффект: Сила шторма", +"item.simplyswords.enigmasworditem.tooltip2": "Когда Вы находитесь рядом со", +"item.simplyswords.enigmasworditem.tooltip3": "смерчем, Вы получаете эффект «Спешка».", +"item.simplyswords.enigmasworditem.tooltip4": "Вызывайте Смерч, что будет гнаться", +"item.simplyswords.enigmasworditem.tooltip5": "за врагами неподалёку, нанося им", +"item.simplyswords.enigmasworditem.tooltip6": "повышенный урон, чем дольше", +"item.simplyswords.enigmasworditem.tooltip7": "враг находится внутри", +"item.simplyswords.enigmasworditem.tooltip8": "ловушки.", + +"item.simplyswords.magibladesworditem.tooltip1": "Уникальный эффект: Магическая звуковая скорость", +"item.simplyswords.magibladesworditem.tooltip2": "Иногда Магический клинок", +"item.simplyswords.magibladesworditem.tooltip3": "обнаруживает и отражает наступающих", +"item.simplyswords.magibladesworditem.tooltip4": "врагов.", +"item.simplyswords.magibladesworditem.tooltip5": "После небольшой задержки, Ваш", +"item.simplyswords.magibladesworditem.tooltip6": "Магический клинок выпускает звуковой", +"item.simplyswords.magibladesworditem.tooltip7": "удар перед Вами, нанося", +"item.simplyswords.magibladesworditem.tooltip8": "урон врагам, попавших", +"item.simplyswords.magibladesworditem.tooltip9": "на его пути.", + +"item.simplyswords.magispearsworditem.tooltip1": "Уникальный эффект: Магический удар", +"item.simplyswords.magispearsworditem.tooltip2": "При атаке врагов у Вас", +"item.simplyswords.magispearsworditem.tooltip3": "есть шанс нанести", +"item.simplyswords.magispearsworditem.tooltip4": "дополнительный магический урон.", +"item.simplyswords.magispearsworditem.tooltip5": "При поддержке Магического копья,", +"item.simplyswords.magispearsworditem.tooltip6": "Вы выполняете рывок, после", +"item.simplyswords.magispearsworditem.tooltip7": "которого следует ударная атака,", +"item.simplyswords.magispearsworditem.tooltip8": "наносящая урон близлежащим врагам.", +"item.simplyswords.magispearsworditem.tooltip9": "Вы невосприимчивы во время скачка.", + +"item.simplyswords.caelestissworditem.tooltip1": "Уникальный эффект: Астральный сдвиг", +"item.simplyswords.caelestissworditem.tooltip2": "При владении мечом предоставляется", +"item.simplyswords.caelestissworditem.tooltip3": "шанс полностью избежать", +"item.simplyswords.caelestissworditem.tooltip4": "входящий урон.", +"item.simplyswords.caelestissworditem.tooltip5": "Вступите в астральный мир", +"item.simplyswords.caelestissworditem.tooltip6": "на некоторое время, становясь неуязвимым", +"item.simplyswords.caelestissworditem.tooltip7": "к урону в течение %d секунд.", +"item.simplyswords.caelestissworditem.tooltip8": "При выходе с астрального мира", +"item.simplyswords.caelestissworditem.tooltip9": "Вы высвобождаете мощный взрыв,", +"item.simplyswords.caelestissworditem.tooltip10": "наносящий областной урон относительно", +"item.simplyswords.caelestissworditem.tooltip11": "нейтрализованного урона, пока Вы находились", +"item.simplyswords.caelestissworditem.tooltip12": "в астральном мире.", "item.simplyswords.dormantrelicsworditem.tooltip2": "Кажется, изнутри исходит слабая сила.", "item.simplyswords.poweredrelicsworditem.tooltip2": "Похоже, изнутри исходит растущая сила.", -"item.simplyswords.levitationsworditem.tooltip1": "Рунический Power: Float", -"item.simplyswords.uniquesworditem.runefused_power.float": "[ Runefused: Float ]", -"item.simplyswords.levitationsworditem.tooltip2": "Chance on hit to reverse the effects", -"item.simplyswords.levitationsworditem.tooltip3": "of gravity on your target.", -"item.simplyswords.speedsworditem.tooltip1": "Рунический Power: Swiftness", -"item.simplyswords.uniquesworditem.runefused_power.swiftness": "[ Runefused: Swiftness ]", -"item.simplyswords.speedsworditem.tooltip2": "Chance on hit to increase the wielders", -"item.simplyswords.speedsworditem.tooltip3": "movespeed for a duration.", -"item.simplyswords.slownesssworditem.tooltip1": "Рунический Power: Slow", -"item.simplyswords.uniquesworditem.runefused_power.slow": "[ Runefused: Slow ]", -"item.simplyswords.slownesssworditem.tooltip2": "Chance on hit to slow the target", -"item.simplyswords.slownesssworditem.tooltip3": "for a duration.", -"item.simplyswords.freezesworditem.tooltip1": "Рунная сила: Заморозка", -"item.simplyswords.uniquesworditem.runefused_power.freeze": "[ Runefused: Freeze ]", +"item.simplyswords.levitationsworditem.tooltip1": "Талант рун: Левитация", +"item.simplyswords.uniquesworditem.runefused_power.float": "[ Наполненный руной: Левитация ]", +"item.simplyswords.levitationsworditem.tooltip2": "Шанс при ударе обратить эффекты", +"item.simplyswords.levitationsworditem.tooltip3": "гравитации на своей цели.", +"item.simplyswords.speedsworditem.tooltip1": "Талант рун: Проворство", +"item.simplyswords.uniquesworditem.runefused_power.swiftness": "[ Наполненный руной: Проворство ]", +"item.simplyswords.speedsworditem.tooltip2": "Шанс при ударе увеличить скорость", +"item.simplyswords.speedsworditem.tooltip3": "передвижения владельцев в течение всего срока.", +"item.simplyswords.slownesssworditem.tooltip1": "Талант рун: Замедление", +"item.simplyswords.uniquesworditem.runefused_power.slow": "[ Наполненный руной: Замедление ]", +"item.simplyswords.slownesssworditem.tooltip2": "Шанс при ударе замедлить цель", +"item.simplyswords.slownesssworditem.tooltip3": "в течение всего срока.", +"item.simplyswords.freezesworditem.tooltip1": "Талант рун: Заморозка", +"item.simplyswords.uniquesworditem.runefused_power.freeze": "[ Наполненный руной: Заморозка ]", "item.simplyswords.freezesworditem.tooltip2": "Шанс застудить или заморозить цель при ударе.", -"item.simplyswords.wildfiresworditem.tooltip1": "Рунический Power: Wildfire", -"item.simplyswords.uniquesworditem.runefused_power.wildfire": "[ Runefused: Wildfire ]", -"item.simplyswords.wildfiresworditem.tooltip2": "Chance on hit to ignite all nearby ", -"item.simplyswords.wildfiresworditem.tooltip3": "entities of the same type as your target.", -"item.simplyswords.zephyrsworditem.tooltip1": "Рунический Power: Zephyr", -"item.simplyswords.uniquesworditem.runefused_power.zephyr": "[ Runefused: Zephyr ]", -"item.simplyswords.zephyrsworditem.tooltip2": "Chance on hit to gain attack and move", -"item.simplyswords.zephyrsworditem.tooltip3": "speed.", -"item.simplyswords.shieldingsworditem.tooltip1": "Рунический Power: Shielding", -"item.simplyswords.uniquesworditem.runefused_power.shielding": "[ Runefused: Shielding ]", -"item.simplyswords.shieldingsworditem.tooltip2": "Chance on hit to gain", -"item.simplyswords.shieldingsworditem.tooltip3": "absorption.", -"item.simplyswords.stoneskinsworditem.tooltip1": "Рунический Power: Stoneskin", -"item.simplyswords.uniquesworditem.runefused_power.stoneskin": "[ Runefused: Stoneskin ]", -"item.simplyswords.stoneskinsworditem.tooltip2": "Chance on hit to increase your", -"item.simplyswords.stoneskinsworditem.tooltip3": "resistance at the cost of speed.", -"item.simplyswords.trailblazesworditem.tooltip1": "Рунический Power: Trailblaze", -"item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Runefused: Trailblaze] ", -"item.simplyswords.trailblazesworditem.tooltip2": "Chance on hit to gain speed and ", -"item.simplyswords.trailblazesworditem.tooltip3": "ignite yourself.", -"item.simplyswords.weakensworditem.tooltip1": "Рунический Power: Weaken", -"item.simplyswords.uniquesworditem.runefused_power.weaken": "[ Runefused: Weaken ]", -"item.simplyswords.weakensworditem.tooltip2": "Chance on hit to slow and", -"item.simplyswords.weakensworditem.tooltip3": "weaken your target.", -"item.simplyswords.unstablesworditem.tooltip1": "Рунический Power: Unstable", -"item.simplyswords.uniquesworditem.runefused_power.unstable": "[ Runefused: Unstable ]", -"item.simplyswords.unstablesworditem.tooltip2": "Regularly apply random effects", -"item.simplyswords.unstablesworditem.tooltip3": "to the wielder.", -"item.simplyswords.activedefencesworditem.tooltip1": "Рунический Power: Active Defence", -"item.simplyswords.uniquesworditem.runefused_power.active_defence": "[ Runefused: Active defence ]", -"item.simplyswords.activedefencesworditem.tooltip2": "Regularly fires arrows at nearby", -"item.simplyswords.activedefencesworditem.tooltip3": "enemies (Requires Arrows).", -"item.simplyswords.frostwardsworditem.tooltip1": "Рунический Power: Frost Ward", -"item.simplyswords.uniquesworditem.runefused_power.frost_ward": "[ Runefused: Frost Ward ]", -"item.simplyswords.frostwardsworditem.tooltip2": "Regularly fires movement impairing", -"item.simplyswords.frostwardsworditem.tooltip3": "snowballs at all nearby enemies.", -"item.simplyswords.momentumsworditem.tooltip1": "Рунический Power: Momentum", -"item.simplyswords.momentumsworditem.tooltip2": "Gain a brief moment of strong", -"item.simplyswords.momentumsworditem.tooltip3": "forward momentum.", -"item.simplyswords.imbuedsworditem.tooltip1": "Рунический Power: Imbued", -"item.simplyswords.uniquesworditem.runefused_power.imbued": "[ Runefused: Imbued ]", -"item.simplyswords.imbuedsworditem.tooltip2": "Chance on hit to deal additional", -"item.simplyswords.imbuedsworditem.tooltip3": "magic damage, scaling with durability.", -"item.simplyswords.pincushionsworditem.tooltip1": "Рунический Power: Pincushion", -"item.simplyswords.uniquesworditem.runefused_power.pincushion": "[ Runefused: Pincushion ]", -"item.simplyswords.pincushionsworditem.tooltip2": "Deal additional damage for each", -"item.simplyswords.pincushionsworditem.tooltip3": "arrow stuck in your body.", -"item.simplyswords.wardsworditem.tooltip1": "Рунический Power: Ward", -"item.simplyswords.wardsworditem.tooltip2": "Sacrifice half your current HP to gain", -"item.simplyswords.wardsworditem.tooltip3": "pulsing absorption relative to your", -"item.simplyswords.wardsworditem.tooltip4": "remaining HP for 6 seconds.", -"item.simplyswords.immolationsworditem.tooltip1": "Рунический Power: Immolation", -"item.simplyswords.immolationsworditem.tooltip2": "Gain an aura of immolation, periodically", -"item.simplyswords.immolationsworditem.tooltip3": "damaging you and nearby foes. Outgoing ", -"item.simplyswords.immolationsworditem.tooltip4": "damage scales with your current HP.", -"item.simplyswords.unidentifiedsworditem.tooltip1": "Рунический Power: ????", -"item.simplyswords.netherfused_gem.tooltip1": "Незерский Power: ????", -"item.simplyswords.unidentifiedsworditem.tooltip2": "Click to identify.", -"item.simplyswords.runic_tablet.tooltip": "Can be used to craft and", -"item.simplyswords.runic_tablet.tooltip2": "re-roll Рунический weapons.", -"item.simplyswords.runic_tablet.tooltip3": "Can also be used to repair", -"item.simplyswords.runic_tablet.tooltip4": "Unique weapons.", +"item.simplyswords.wildfiresworditem.tooltip1": "Талант рун: Дикий огонь", +"item.simplyswords.uniquesworditem.runefused_power.wildfire": "[ Наполненный руной: Дикий огонь ]", +"item.simplyswords.wildfiresworditem.tooltip2": "Шанс при ударе поджечь всех поблизости", +"item.simplyswords.wildfiresworditem.tooltip3": "существ того же типа, что и Ваша цель.", +"item.simplyswords.zephyrsworditem.tooltip1": "Талант рун: Зефир", +"item.simplyswords.uniquesworditem.runefused_power.zephyr": "[ Наполненный руной: Зефир ]", +"item.simplyswords.zephyrsworditem.tooltip2": "Шанс при ударе получить скорость", +"item.simplyswords.zephyrsworditem.tooltip3": "к атаке и передвижению.", +"item.simplyswords.shieldingsworditem.tooltip1": "Талант рун: Щит", +"item.simplyswords.uniquesworditem.runefused_power.shielding": "[ Наполненный руной: Щит ]", +"item.simplyswords.shieldingsworditem.tooltip2": "Шанс при ударе получить", +"item.simplyswords.shieldingsworditem.tooltip3": "эффект «Поглощения».", +"item.simplyswords.stoneskinsworditem.tooltip1": "Талант рун: Каменная кожа", +"item.simplyswords.uniquesworditem.runefused_power.stoneskin": "[ Наполненный руной: Каменная кожа ]", +"item.simplyswords.stoneskinsworditem.tooltip2": "Шанс при ударе увеличить эффект", +"item.simplyswords.stoneskinsworditem.tooltip3": "«Сопротивление», ценой скорости.", +"item.simplyswords.trailblazesworditem.tooltip1": "Талант рун: Горящий след", +"item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Наполненный руной: Горящий след ] ", +"item.simplyswords.trailblazesworditem.tooltip2": "Шанс при ударе получить скорость", +"item.simplyswords.trailblazesworditem.tooltip3": "и самоподжечься.", +"item.simplyswords.weakensworditem.tooltip1": "Талант рун: Ослабление", +"item.simplyswords.uniquesworditem.runefused_power.weaken": "[ Наполненный руной: Ослабление ]", +"item.simplyswords.weakensworditem.tooltip2": "Шанс при ударе замедлить и", +"item.simplyswords.weakensworditem.tooltip3": "ослабить свою цель.", +"item.simplyswords.unstablesworditem.tooltip1": "Талант рун: Нестабильность", +"item.simplyswords.uniquesworditem.runefused_power.unstable": "[ Наполненный руной: Нестабильность ]", +"item.simplyswords.unstablesworditem.tooltip2": "На владельца постоянно накладываются", +"item.simplyswords.unstablesworditem.tooltip3": "случайные эффекты.", +"item.simplyswords.activedefencesworditem.tooltip1": "Талант рун: Активная защита", +"item.simplyswords.uniquesworditem.runefused_power.active_defence": "[ Наполненный руной: Активная защита ]", +"item.simplyswords.activedefencesworditem.tooltip2": "Постоянно выпускает стрелы на", +"item.simplyswords.activedefencesworditem.tooltip3": "близлежащих врагов (Необходимы стрелы).", +"item.simplyswords.frostwardsworditem.tooltip1": "Талант рун: Защита от магии льда", +"item.simplyswords.uniquesworditem.runefused_power.frost_ward": "[ Наполненный руной: Защита от магии льда ]", +"item.simplyswords.frostwardsworditem.tooltip2": "Периодически выпускает снежки, замедляющие", +"item.simplyswords.frostwardsworditem.tooltip3": "передвижение на всех близлежащих врагов.", +"item.simplyswords.momentumsworditem.tooltip1": "Талант рун: Импульс", +"item.simplyswords.momentumsworditem.tooltip2": "Получение кратковременного периода", +"item.simplyswords.momentumsworditem.tooltip3": "силы поступательного импульса.", +"item.simplyswords.imbuedsworditem.tooltip1": "Талант рун: Усиление", +"item.simplyswords.uniquesworditem.runefused_power.imbued": "[ Наполненный руной: Усиление]", +"item.simplyswords.imbuedsworditem.tooltip2": "Шанс при ударе нанести дополнительный магический", +"item.simplyswords.imbuedsworditem.tooltip3": "урон, увеличивающийся в зависимости от прочности.", +"item.simplyswords.pincushionsworditem.tooltip1": "Талант рун: Игольница", +"item.simplyswords.uniquesworditem.runefused_power.pincushion": "[ Наполненный руной: Игольница]", +"item.simplyswords.pincushionsworditem.tooltip2": "Нанесение дополнительного урона за", +"item.simplyswords.pincushionsworditem.tooltip3": "каждую воткнутую стрелу на Вашем теле.", +"item.simplyswords.wardsworditem.tooltip1": "Талант рун: Оберег", +"item.simplyswords.wardsworditem.tooltip2": "Жертвуйте половиной свого текущего здоровья", +"item.simplyswords.wardsworditem.tooltip3": "для получения пульсирующего поглощения относительно", +"item.simplyswords.wardsworditem.tooltip4": "оставшегося Вашего здоровья на 6 секунд.", +"item.simplyswords.immolationsworditem.tooltip1": "Талант рун: Обжигающий жар", +"item.simplyswords.immolationsworditem.tooltip2": "Получение ауры обжигающего жара, что", +"item.simplyswords.immolationsworditem.tooltip3": "периодически наносит по Вам урон и ближайшим врагам.", +"item.simplyswords.immolationsworditem.tooltip4": "Исходящий урон увеличивается в зависимости от Вашего текущего здоровья.", +"item.simplyswords.unidentifiedsworditem.tooltip1": "Талант рун: ???", +"item.simplyswords.netherfused_gem.tooltip1": "Талант Незера: ???", +"item.simplyswords.unidentifiedsworditem.tooltip2": "Нажать — определить.", +"item.simplyswords.runic_tablet.tooltip": "Может быть использовано для создания", +"item.simplyswords.runic_tablet.tooltip2": "и обновления таланта Рунического оружия.", +"item.simplyswords.runic_tablet.tooltip3": "Может также быть использовано для", +"item.simplyswords.runic_tablet.tooltip4": "починки Уникального оружия.", "item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Netherfused: Echo ]", "item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Your weapon swings echo, dealing", @@ -1061,9 +1062,9 @@ "item.simplyswords.common.showtooltip": "- Удерживание §2ALT§7 — просмотреть to view gem sockets -", "item.simplyswords.common.showtooltip.info": "- Удерживание §2ALT§7 для подробной информации -", "item.simplyswords.compat.mythicmetals.regrowth": "Regrowth", -"item.simplyswords.compat.mythicmetals.looting": "Bonus Looting", +"item.simplyswords.compat.mythicmetals.looting": "Бонус к добыче", -"entity.simplyswords.battlestandard.name": "%d's Battle Standard", +"entity.simplyswords.battlestandard.name": "Боевое знамя %d", "item.simplyswords.compat.scaleFire": "§7Ability scales with §6Fire§7 spell power", "item.simplyswords.compat.scaleFrost": "§7Ability scales with §bFrost§7 spell power", From 8ee57574f03c986045791f4814eede794847b989 Mon Sep 17 00:00:00 2001 From: Heimdallr-1 Date: Tue, 24 Dec 2024 18:33:52 +0500 Subject: [PATCH 37/37] Update ru_ru.json --- .../assets/simplyswords/lang/ru_ru.json | 1277 +++++++++-------- 1 file changed, 639 insertions(+), 638 deletions(-) diff --git a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json index 9817fc59..4098b418 100644 --- a/common/src/main/resources/assets/simplyswords/lang/ru_ru.json +++ b/common/src/main/resources/assets/simplyswords/lang/ru_ru.json @@ -90,7 +90,7 @@ "item.simplyswords.twisted_blade": "Спиральный клинок", "item.simplyswords.twilight": "Полумрак", "item.simplyswords.soulkeeper": "Хранитель душ", -"item.simplyswords.soulstealer": "Душекрад", +"item.simplyswords.soulstealer": "Похититель душ", "item.simplyswords.soulrender": "Воздаятель душ", "item.simplyswords.soulpyre": "Костёр душ", "item.simplyswords.frostfall": "Морозная гибель", @@ -126,10 +126,10 @@ "item.simplyswords.caelestis": "Небесный", "item.simplyswords.runic_tablet": "Руническая скрижаль", -"item.simplyswords.runefused_gem": "Насыщенные руной самоцвет", -"item.simplyswords.netherfused_gem": "Сплавленный незером самоцвет", +"item.simplyswords.runefused_gem": "Наполненный руной самоцвет", +"item.simplyswords.netherfused_gem": "Наполненный Незером самоцвет", "item.simplyswords.empowered_remnant": "Усиленные остатки", -"item.simplyswords.contained_remnant": "Contained остатки", +"item.simplyswords.contained_remnant": "Сдержанные остатки", "item.simplyswords.tampered_remnant": "Искажённые остатки", "item.simplyswords.mythicmetals_compat.adamantite.adamantite_claymore": "Адамантитовый клеймор", @@ -491,7 +491,7 @@ "item.simplyswords.contained_remnant_description3": "Похоже, находясь рядом с Вами", "item.simplyswords.contained_remnant_description4": "его форма меняется.", "item.simplyswords.contained_remnant_description5": "Держа этот предмет в своём инвентаре,", -"item.simplyswords.contained_remnant_description6": "можете получить дополнительные неочевидные знания.", +"item.simplyswords.contained_remnant_description6": "можете получить дополнительные не очевидные знания.", "item.simplyswords.contained_remnant_description7": "Будучи исследуя Энд, сохраните это", "item.simplyswords.contained_remnant_description8": "в своём инвентаре подле", "item.simplyswords.contained_remnant_description9": "Рунической скрижали.", @@ -516,8 +516,8 @@ "effect.simplyswords.wildfire": "Дикий огонь", "effect.simplyswords.echo": "Эхо", "effect.simplyswords.ward": "Оберег", -"effect.simplyswords.immolation": "Жертвоприношение", -"effect.simplyswords.onslaught": "Сильный натиск", +"effect.simplyswords.immolation": "Обжигающий жар", +"effect.simplyswords.onslaught": "Натиск", "effect.simplyswords.smouldering": "Тление", "effect.simplyswords.frenzy": "Неистовство", "effect.simplyswords.voidcloak": "Плащ пустоты", @@ -533,7 +533,7 @@ "effect.simplyswords.battle_fatigue": "Боевой психоз", "effect.simplyswords.pain": "Боль", "effect.simplyswords.spore_swarm": "Спороносное скопище", -"effect.simplyswords.magistorm": "Магическая буря", +"effect.simplyswords.magistorm": "Магическая гроза", "effect.simplyswords.magislam": "Магический удар", "effect.simplyswords.astral_shift": "Астральная изворотливость", "effect.simplyswords.fatal_flicker": "Смертоносная вспышка", @@ -569,8 +569,8 @@ "item.simplyswords.watchersworditem.tooltip7": "врагов, излечивая владельца при каждом ударе.", "item.simplyswords.plaguesworditem.tooltip1": "Уникальный эффект: Чума", -"item.simplyswords.plaguesworditem.tooltip2": "Шанс при ударе преобразовать положительные", -"item.simplyswords.plaguesworditem.tooltip3": "эффекты в их пагубный аналог.", +"item.simplyswords.plaguesworditem.tooltip2": "Шанс при ударе преобразовать", +"item.simplyswords.plaguesworditem.tooltip3": "усиления в их пагубный аналог.", "item.simplyswords.emberiresworditem.tooltip1": "Уникальный эффект: Тлеющая ярость", "item.simplyswords.emberiresworditem.tooltip2": "Сконцентрируйте энергию в клинке.", @@ -580,7 +580,7 @@ "item.simplyswords.emberiresworditem.tooltip6": "во время долгого направления. Если Вы", "item.simplyswords.emberiresworditem.tooltip7": "отпустите энергию в последний момент будет", "item.simplyswords.emberiresworditem.tooltip8": "выпущена дополнительная. часть шрапнели.", -"item.simplyswords.emberiresworditem.tooltip9": "При отпускании шрапнеля есть шанс,", +"item.simplyswords.emberiresworditem.tooltip9": "При отпускании шрапнели есть шанс,", "item.simplyswords.emberiresworditem.tooltip10": "относительного времени направления,", "item.simplyswords.emberiresworditem.tooltip11": "получить эффекты: «Скорость», «Спешку» и «Силу».", @@ -588,8 +588,8 @@ "item.simplyswords.volcanicfurysworditem.tooltip2": "Шанс поджечь и отбросить своего врага", "item.simplyswords.volcanicfurysworditem.tooltip3": "при ударе. Направьте ярость, обменивая", "item.simplyswords.volcanicfurysworditem.tooltip4": "здоровье на сопротивление, вызывая", -"item.simplyswords.volcanicfurysworditem.tooltip5": "землетрясение, которое потрясает против", -"item.simplyswords.volcanicfurysworditem.tooltip6": "ников перед Вами. Завершив направление,", +"item.simplyswords.volcanicfurysworditem.tooltip5": "землетрясение, которое потрясает противников", +"item.simplyswords.volcanicfurysworditem.tooltip6": "перед Вами. Завершив направление,", "item.simplyswords.volcanicfurysworditem.tooltip7": "высвободите ярость, нанося значительный", "item.simplyswords.volcanicfurysworditem.tooltip8": "урон поджигая врагов и швыряя их", "item.simplyswords.volcanicfurysworditem.tooltip9": "при долгом направлении.", @@ -599,14 +599,14 @@ "item.simplyswords.ferocitysworditem.tooltip3": "атаки. Эффект суммируется до 15 раз.", "item.simplyswords.ferocitysworditem.tooltip4": "Потратив всё суммирование (заряды) Вы", "item.simplyswords.ferocitysworditem.tooltip5": "получите силу на длительность, равную", -"item.simplyswords.ferocitysworditem.tooltip6": "числу потраченных суммирований (зарядов).", +"item.simplyswords.ferocitysworditem.tooltip6": "числу потраченных суммирования (зарядов).", "item.simplyswords.rendsworditem.tooltip1": "Уникальный эффект: Раздирание души", "item.simplyswords.rendsworditem.tooltip2": "Шанс при ударе наложить суммирующие", "item.simplyswords.rendsworditem.tooltip3": "ослабляющие эффекты на врага.", "item.simplyswords.rendsworditem.tooltip4": "Потратив всё суммирования (заряды) из окружающих врагов,", "item.simplyswords.rendsworditem.tooltip5": "Вы наносите им урон и исцеляете себя, в зависимости", -"item.simplyswords.rendsworditem.tooltip6": "от количества использованных суммирований (зарядов).", +"item.simplyswords.rendsworditem.tooltip6": "от количества использованных суммирования (зарядов).", "item.simplyswords.soulsworditem.tooltip1": "Уникальный эффект: Слияние с душой", "item.simplyswords.soulsworditem.tooltip2": "Шанс при ударе поглотить души ближайших", @@ -680,7 +680,7 @@ "item.simplyswords.thunderbrandsworditem.tooltip6": "спешку и наносите сокрушительный урон врагам", "item.simplyswords.thunderbrandsworditem.tooltip7": "на своём пути.", -"item.simplyswords.stormsedgesworditem.tooltip1": "Уникальный эффект: Удар бури", +"item.simplyswords.stormsedgesworditem.tooltip1": "Уникальный эффект: Грозовой удар", "item.simplyswords.stormsedgesworditem.tooltip2": "Шанс обновить перезарядку способности при ударе.", "item.simplyswords.stormsedgesworditem.tooltip3": "Молниеносный рывок вперёд, сразу", "item.simplyswords.stormsedgesworditem.tooltip4": "делает Вас неуязвимым, а также", @@ -693,7 +693,7 @@ "item.simplyswords.lichbladesworditem.tooltip3": "поражающие близлежащих врагов.", "item.simplyswords.lichbladesworditem.tooltip4": "Приказывайте душами, направляя их", "item.simplyswords.lichbladesworditem.tooltip5": "на удалённую цель, чтобы нанести быстрый", -"item.simplyswords.lichbladesworditem.tooltip6": "урон и с шансом выссосать здоровье.", +"item.simplyswords.lichbladesworditem.tooltip6": "урон и с шансом высосать здоровье.", "item.simplyswords.lichbladesworditem.tooltip7": "После атаки души возвращаются к Вам и", "item.simplyswords.lichbladesworditem.tooltip8": "перед тем, как они доберутся до Вас:", "item.simplyswords.lichbladesworditem.tooltip9": "получите эффект «Поглощение».", @@ -707,7 +707,7 @@ "item.simplyswords.stormbringersworditem.tooltip7": "парируется, нанося урон и отбрасывая", "item.simplyswords.stormbringersworditem.tooltip8": "соперника, но в то же время", "item.simplyswords.stormbringersworditem.tooltip9": "сокращая перезарядку способности.", -"item.simplyswords.stormbringersworditem.tooltip10": "Серия успешных парирований увеличивает,", +"item.simplyswords.stormbringersworditem.tooltip10": "Серия успешных парирования увеличивает,", "item.simplyswords.stormbringersworditem.tooltip11": "урон способности и перезарядку.", "item.simplyswords.shadowmistsworditem.tooltip1": "Уникальный эффект: Теневой туман", @@ -734,8 +734,8 @@ "item.simplyswords.whisperwindsworditem.tooltip2": "Шанс обновить перезарядку способности при ударе.", "item.simplyswords.whisperwindsworditem.tooltip3": "Совершите стремительный рывок вперёд, получая", "item.simplyswords.whisperwindsworditem.tooltip4": "эффект «Сопротивления» и «Поглощения». Враги,", -"item.simplyswords.whisperwindsworditem.tooltip5": "оказавшиеся на Вашем пути, поражаются Эхо.", -"item.simplyswords.whisperwindsworditem.tooltip6": "А каждая цель, попавшая под удар рывка,", +"item.simplyswords.whisperwindsworditem.tooltip5": "оказавшиеся на Вашем пути, поражаются Эхо,", +"item.simplyswords.whisperwindsworditem.tooltip6": "а каждая цель, попавшая под удар рывка,", "item.simplyswords.whisperwindsworditem.tooltip7": "увеличивает количество, наносимого Вами урон от Эхо.", "item.simplyswords.emberlashsworditem.tooltip1": "Уникальный эффект: Зола", @@ -749,7 +749,7 @@ "item.simplyswords.waxweaversworditem.tooltip1": "Уникальный эффект: Выработка воска", "item.simplyswords.waxweaversworditem.tooltip2": "Атака подожжённых врагов наделяет", "item.simplyswords.waxweaversworditem.tooltip3": "Вас эффектами «Сила» и «Спешка».", -"item.simplyswords.waxweaversworditem.tooltip4": "Находясь на грани смерты, Вы", +"item.simplyswords.waxweaversworditem.tooltip4": "Находясь на грани смерти, Вы", "item.simplyswords.waxweaversworditem.tooltip5": "насыщаетесь полностью регенерирующим", "item.simplyswords.waxweaversworditem.tooltip6": "Вас воском, что исцеляет и наделяет", "item.simplyswords.waxweaversworditem.tooltip7": "эффектом «Сопротивление» на короткий период", @@ -771,7 +771,7 @@ "item.simplyswords.starsedgesworditem.tooltip2": "Днём, Ваши атаки наносят %s", "item.simplyswords.starsedgesworditem.tooltip3": "дополнительного урона. Ночью,", "item.simplyswords.starsedgesworditem.tooltip4": "Ваши атаки получают эффект «Похищение", -"item.simplyswords.starsedgesworditem.tooltip5": "жизни». Уклонитесь назад, чтобы при этом", +"item.simplyswords.starsedgesworditem.tooltip5": "жизни». Уклонитесь назад, чтобы", "item.simplyswords.starsedgesworditem.tooltip6": "получить эффект «Скорость». Активируйте", "item.simplyswords.starsedgesworditem.tooltip7": "второй раз, чтобы совершить рывок, наделяющий", "item.simplyswords.starsedgesworditem.tooltip8": "Вас эффектом «Сопротивление» и «Спешка».", @@ -803,9 +803,9 @@ "item.simplyswords.dreadtidesworditem.tooltip6": "Получение урона сбивает суммирование (заряд).", "item.simplyswords.dreadtidesworditem.tooltip7": "Макс. 1 суммирование за 20 порчи.", "item.simplyswords.dreadtidesworditem.tooltip8": "Высвободите Плащ пустоты и", -"item.simplyswords.dreadtidesworditem.tooltip9": "направьте мистическую энергию прямо к", -"item.simplyswords.dreadtidesworditem.tooltip10": "самому близлежащему врагу,", -"item.simplyswords.dreadtidesworditem.tooltip11": "нанося ему быстрый урон.", +"item.simplyswords.dreadtidesworditem.tooltip9": "направьте мистическую энергию", +"item.simplyswords.dreadtidesworditem.tooltip10": "прямо к самому близлежащему", +"item.simplyswords.dreadtidesworditem.tooltip11": "врагу, нанося ему быстрый урон.", "item.simplyswords.dreadtidesworditem.tooltip12": "При владении этим оружием Вы подвергаетесь", "item.simplyswords.dreadtidesworditem.tooltip13": "порчей в течение долгого времени.", @@ -922,13 +922,13 @@ "item.simplyswords.stoneskinsworditem.tooltip2": "Шанс при ударе увеличить эффект", "item.simplyswords.stoneskinsworditem.tooltip3": "«Сопротивление», ценой скорости.", "item.simplyswords.trailblazesworditem.tooltip1": "Талант рун: Горящий след", -"item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Наполненный руной: Горящий след ] ", +"item.simplyswords.uniquesworditem.runefused_power.trailblaze": "[ Наполненный руной: Горящий след ]", "item.simplyswords.trailblazesworditem.tooltip2": "Шанс при ударе получить скорость", "item.simplyswords.trailblazesworditem.tooltip3": "и самоподжечься.", "item.simplyswords.weakensworditem.tooltip1": "Талант рун: Ослабление", "item.simplyswords.uniquesworditem.runefused_power.weaken": "[ Наполненный руной: Ослабление ]", -"item.simplyswords.weakensworditem.tooltip2": "Шанс при ударе замедлить и", -"item.simplyswords.weakensworditem.tooltip3": "ослабить свою цель.", +"item.simplyswords.weakensworditem.tooltip2": "Шанс при ударе замедлить", +"item.simplyswords.weakensworditem.tooltip3": "и ослабить свою цель.", "item.simplyswords.unstablesworditem.tooltip1": "Талант рун: Нестабильность", "item.simplyswords.uniquesworditem.runefused_power.unstable": "[ Наполненный руной: Нестабильность ]", "item.simplyswords.unstablesworditem.tooltip2": "На владельца постоянно накладываются", @@ -940,7 +940,7 @@ "item.simplyswords.frostwardsworditem.tooltip1": "Талант рун: Защита от магии льда", "item.simplyswords.uniquesworditem.runefused_power.frost_ward": "[ Наполненный руной: Защита от магии льда ]", "item.simplyswords.frostwardsworditem.tooltip2": "Периодически выпускает снежки, замедляющие", -"item.simplyswords.frostwardsworditem.tooltip3": "передвижение на всех близлежащих врагов.", +"item.simplyswords.frostwardsworditem.tooltip3": "передвижение всех близлежащих врагов.", "item.simplyswords.momentumsworditem.tooltip1": "Талант рун: Импульс", "item.simplyswords.momentumsworditem.tooltip2": "Получение кратковременного периода", "item.simplyswords.momentumsworditem.tooltip3": "силы поступательного импульса.", @@ -953,7 +953,7 @@ "item.simplyswords.pincushionsworditem.tooltip2": "Нанесение дополнительного урона за", "item.simplyswords.pincushionsworditem.tooltip3": "каждую воткнутую стрелу на Вашем теле.", "item.simplyswords.wardsworditem.tooltip1": "Талант рун: Оберег", -"item.simplyswords.wardsworditem.tooltip2": "Жертвуйте половиной свого текущего здоровья", +"item.simplyswords.wardsworditem.tooltip2": "Жертвуйте половиной своего текущего здоровья", "item.simplyswords.wardsworditem.tooltip3": "для получения пульсирующего поглощения относительно", "item.simplyswords.wardsworditem.tooltip4": "оставшегося Вашего здоровья на 6 секунд.", "item.simplyswords.immolationsworditem.tooltip1": "Талант рун: Обжигающий жар", @@ -964,114 +964,114 @@ "item.simplyswords.netherfused_gem.tooltip1": "Талант Незера: ???", "item.simplyswords.unidentifiedsworditem.tooltip2": "Нажать — определить.", "item.simplyswords.runic_tablet.tooltip": "Может быть использовано для создания", -"item.simplyswords.runic_tablet.tooltip2": "и обновления таланта Рунического оружия.", +"item.simplyswords.runic_tablet.tooltip2": "и изменения таланта Рунического оружия.", "item.simplyswords.runic_tablet.tooltip3": "Может также быть использовано для", "item.simplyswords.runic_tablet.tooltip4": "починки Уникального оружия.", -"item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Netherfused: Echo ]", -"item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Your weapon swings echo, dealing", -"item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "additional unmitigated damage ", -"item.simplyswords.uniquesworditem.netherfused_power.echo.description3": "after a short delay.", - -"item.simplyswords.uniquesworditem.netherfused_power.berserk": "[ Netherfused: Berserk ]", -"item.simplyswords.uniquesworditem.netherfused_power.berserk.description": "When you have an armour value less", -"item.simplyswords.uniquesworditem.netherfused_power.berserk.description2": "than 10, your weapon swings siphon ", -"item.simplyswords.uniquesworditem.netherfused_power.berserk.description3": "health from the target.", - -"item.simplyswords.uniquesworditem.netherfused_power.radiance": "[ Netherfused: Radiance ]", -"item.simplyswords.uniquesworditem.netherfused_power.radiance.description": "When hitting a target afflicted", -"item.simplyswords.uniquesworditem.netherfused_power.radiance.description2": "with weakness, gain Immolation", -"item.simplyswords.uniquesworditem.netherfused_power.radiance.description3": "for a short duration.", - -"item.simplyswords.uniquesworditem.netherfused_power.onslaught": "[ Netherfused: Onslaught ]", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description": "When hitting a target afflicted", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2": "with slowness, gain Onslaught", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3": "for a short duration.", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4": "(Onslaught grants you pulsing", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5": "haste, but inflicts you with", -"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6": "weakness when it expires).", - -"item.simplyswords.uniquesworditem.netherfused_power.nullification": "[ Netherfused: Nullification ]", -"item.simplyswords.uniquesworditem.netherfused_power.nullification.description": "Summons a Battle Standard on hit", -"item.simplyswords.uniquesworditem.netherfused_power.nullification.description2": "that periodically cleanses", -"item.simplyswords.uniquesworditem.netherfused_power.nullification.description3": "debuffs from allied players,", -"item.simplyswords.uniquesworditem.netherfused_power.nullification.description4": "while stripping buffs from", -"item.simplyswords.uniquesworditem.netherfused_power.nullification.description5": "enemies within its vicinity.", - -"item.simplyswords.uniquesworditem.netherfused_power.precise": "[ Netherfused: Precise ]", -"item.simplyswords.uniquesworditem.netherfused_power.precise.description": "Chance to gain several stacks", -"item.simplyswords.uniquesworditem.netherfused_power.precise.description2": "of Precision when activating", -"item.simplyswords.uniquesworditem.netherfused_power.precise.description3": "a signature ability.", - -"item.simplyswords.uniquesworditem.netherfused_power.mighty": "[ Netherfused: Mighty ]", -"item.simplyswords.uniquesworditem.netherfused_power.mighty.description": "Chance to gain several stacks", -"item.simplyswords.uniquesworditem.netherfused_power.mighty.description2": "of Might when activating", -"item.simplyswords.uniquesworditem.netherfused_power.mighty.description3": "a signature ability.", - -"item.simplyswords.uniquesworditem.netherfused_power.stealthy": "[ Netherfused: Stealthy ]", -"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description": "Chance to gain Stealth when", -"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description2": "activating a signature ability.", - -"item.simplyswords.uniquesworditem.netherfused_power.renewed": "[ Netherfused: Renewed ]", -"item.simplyswords.uniquesworditem.netherfused_power.renewed.description": "When activating a signature", -"item.simplyswords.uniquesworditem.netherfused_power.renewed.description2": "ability, you have a chance", -"item.simplyswords.uniquesworditem.netherfused_power.renewed.description3": "to significantly reduce its", -"item.simplyswords.uniquesworditem.netherfused_power.renewed.description4": "cooldown.", - -"item.simplyswords.uniquesworditem.netherfused_power.accelerant": "[ Netherfused: Accelerant ]", -"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description": "Berserkers Berserking signature", -"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description2": "ability no longer grants you", -"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description3": "berserking, but its cooldown", -"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description4": "is reduced significantly.", - -"item.simplyswords.uniquesworditem.netherfused_power.leaping": "[ Netherfused: Leaping ]", -"item.simplyswords.uniquesworditem.netherfused_power.leaping.description": "When landing a Leap Slam", -"item.simplyswords.uniquesworditem.netherfused_power.leaping.description2": "you have a chance to", -"item.simplyswords.uniquesworditem.netherfused_power.leaping.description3": "immediately leap again.", - -"item.simplyswords.uniquesworditem.netherfused_power.spellshield": "[ Netherfused: Spellshield ]", -"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description": "Chance on spell cast to gain", -"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description2": "Barrier.", - -"item.simplyswords.uniquesworditem.netherfused_power.spellforged": "[ Netherfused: Spellforged ]", -"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description": "While in your mainhand, this", -"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description2": "weapon grants you increased", -"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description3": "spell power.", - -"item.simplyswords.uniquesworditem.netherfused_power.soulshock": "[ Netherfused: Soulshock ]", -"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description": "While held, this weapon grants", -"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description2": "you increased Soul & Lightning", -"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description3": "spell power.", - -"item.simplyswords.uniquesworditem.netherfused_power.spellstandard": "[ Netherfused: Spell Standard ]", -"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description": "Chance on spell hit to drop a ", -"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description2": "Spell Standard that grants", -"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description3": "Precision & Spellforged.", - -"item.simplyswords.uniquesworditem.netherfused_power.warstandard": "[ Netherfused: War Standard ]", -"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description": "When using a forward charge ability,", -"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description2": "drop a War Standard that grants", -"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description3": "Might, and Reveals nearby enemies.", - -"item.simplyswords.uniquesworditem.netherfused_power.deception": "[ Netherfused: Deception ]", -"item.simplyswords.uniquesworditem.netherfused_power.deception.description": "When you evade an attack using", -"item.simplyswords.uniquesworditem.netherfused_power.deception.description2": "Evasion Mastery, you have a", -"item.simplyswords.uniquesworditem.netherfused_power.deception.description3": "chance to cleanse Revealed.", +"item.simplyswords.uniquesworditem.netherfused_power.echo": "[ Наполненный Незером: Эхо ]", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description": "Ваше оружие машет эффектом «Эхо»,", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description2": "нанося дополнительный невообразимый", +"item.simplyswords.uniquesworditem.netherfused_power.echo.description3": "урон после короткой задержки.", + +"item.simplyswords.uniquesworditem.netherfused_power.berserk": "[ Наполненный Незером: Берсерк ]", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description": "Когда у Вас меньше 10 ед.", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description2": "брони, Ваши взмахи оружия", +"item.simplyswords.uniquesworditem.netherfused_power.berserk.description3": "высасывают здоровье со цели.", + +"item.simplyswords.uniquesworditem.netherfused_power.radiance": "[ Наполненный Незером: Сияние ]", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description": "При ударе по цели, поражённой", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description2": "эффектом слабости, Вы получаете эффект", +"item.simplyswords.uniquesworditem.netherfused_power.radiance.description3": "«Обжигающий жар» в течение короткого срока.", + +"item.simplyswords.uniquesworditem.netherfused_power.onslaught": "[ Наполненный Незером: Натиск ]", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description": "При ударе по цели, поражённой эффектом", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description2": "замедления, Вы получаете эффект «Натиск»", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description3": "в течение короткого срока. (Натиск даёт", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description4": "Вам пульсирующий эффект «Спешка»,", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description5": "однако при истечении срока действия", +"item.simplyswords.uniquesworditem.netherfused_power.onslaught.description6": "эффекта на Вас накладывается эффект «Слабость»).", + +"item.simplyswords.uniquesworditem.netherfused_power.nullification": "[ Наполненный Незером: Очистка ]", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description": "При ударе вызывает боевое знамя,", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description2": "периодически очищающее", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description3": "негативные эффекты с союзников и", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description4": "при этом отнимающее усиления", +"item.simplyswords.uniquesworditem.netherfused_power.nullification.description5": "с врагов в зоне своей окружности.", + +"item.simplyswords.uniquesworditem.netherfused_power.precise": "[ Наполненный Незером: Точность ]", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description": "Шанс получить несколько суммирования", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description2": "(зарядов) эффекта «Точность» при", +"item.simplyswords.uniquesworditem.netherfused_power.precise.description3": "активации характерной способности.", + +"item.simplyswords.uniquesworditem.netherfused_power.mighty": "[ Наполненный Незером: Мощь ]", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description": "Шанс получить несколько суммирования", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description2": "(зарядов) эффекта «Мощь» при", +"item.simplyswords.uniquesworditem.netherfused_power.mighty.description3": "активации характерной способности.", + +"item.simplyswords.uniquesworditem.netherfused_power.stealthy": "[ Наполненный Незером: Незаметность ]", +"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description": "Шанс получить эффект «Незаметность»", +"item.simplyswords.uniquesworditem.netherfused_power.stealthy.description2": "при активации характерной способности.", + +"item.simplyswords.uniquesworditem.netherfused_power.renewed": "[ Наполненный Незером: Обновлённый ]", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description": "При активации характерной", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description2": "способности, у Вас есть шанс", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description3": "заметно понизить", +"item.simplyswords.uniquesworditem.netherfused_power.renewed.description4": "перезарядку способности.", + +"item.simplyswords.uniquesworditem.netherfused_power.accelerant": "[ Наполненный Незером: Инициатор ]", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description": "Характерная способность «Берсерк»", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description2": "теперь больше не будет предоставлять", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description3": "эффект «Берсерк». Однако его", +"item.simplyswords.uniquesworditem.netherfused_power.accelerant.description4": "перезарядка значительно снизится.", + +"item.simplyswords.uniquesworditem.netherfused_power.leaping": "[ Наполненный Незером: Скачок ]", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description": "При падении с наскоком", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description2": "у Вас есть шанс ещё раз совершить", +"item.simplyswords.uniquesworditem.netherfused_power.leaping.description3": "скачок, без промедления.", + +"item.simplyswords.uniquesworditem.netherfused_power.spellshield": "[ Наполненный Незером: Магический щит ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description": "Шанс при использовании заклинания", +"item.simplyswords.uniquesworditem.netherfused_power.spellshield.description2": "получить эффект «Барьер».", + +"item.simplyswords.uniquesworditem.netherfused_power.spellforged": "[ Наполненный Незером: Ковщик чар ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description": "Будучи в основной руке, это", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description2": "оружие даёт Вам повышенную", +"item.simplyswords.uniquesworditem.netherfused_power.spellforged.description3": "силу заклинания.", + +"item.simplyswords.uniquesworditem.netherfused_power.soulshock": "[ Наполненный Незером: Шок души ]", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description": "При удержании, это оружие предоставляет", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description2": "Вам увеличение к силе заклинания", +"item.simplyswords.uniquesworditem.netherfused_power.soulshock.description3": "Души и Грозы.", + +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard": "[ Наполненный Незером: Чародейское знамя ]", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description": "Шанс при попадании заклинанием сбросить", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description2": "Чародейское знамя, которое наделяет эффектами", +"item.simplyswords.uniquesworditem.netherfused_power.spellstandard.description3": "«Точность» и «Ковщик чар».", + +"item.simplyswords.uniquesworditem.netherfused_power.warstandard": "[ Наполненный Незером: Боевое знамя ]", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description": "При использовании способности «Рывок»,", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description2": "выбрасывает Боевое знамя, которое наделяет", +"item.simplyswords.uniquesworditem.netherfused_power.warstandard.description3": "Мощью, и раскрывает близлежащих врагов.", + +"item.simplyswords.uniquesworditem.netherfused_power.deception": "[ Наполненный Незером: Обман ]", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description": "Когда Вы уклоняетесь от атаки с помощью", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description2": "навыка «Освоение уклонения», у Вас есть", +"item.simplyswords.uniquesworditem.netherfused_power.deception.description3": "шанс очистить навык «Раскрытие».", "item.simplyswords.common.blacklisteffect": "СПОСОБНОСТЬ ОТКЛЮЧЕНА", -"item.simplyswords.common.showtooltip": "- Удерживание §2ALT§7 — просмотреть to view gem sockets -", +"item.simplyswords.common.showtooltip": "- Удерживание §2ALT§7 — просмотреть гнёзда для самоцветов -", "item.simplyswords.common.showtooltip.info": "- Удерживание §2ALT§7 для подробной информации -", -"item.simplyswords.compat.mythicmetals.regrowth": "Regrowth", +"item.simplyswords.compat.mythicmetals.regrowth": "Восстановление", "item.simplyswords.compat.mythicmetals.looting": "Бонус к добыче", "entity.simplyswords.battlestandard.name": "Боевое знамя %d", -"item.simplyswords.compat.scaleFire": "§7Ability scales with §6Fire§7 spell power", -"item.simplyswords.compat.scaleFrost": "§7Ability scales with §bFrost§7 spell power", -"item.simplyswords.compat.scaleLightning": "§7Ability scales with §eLightning§7 spell power", -"item.simplyswords.compat.scaleArcane": "§7Ability scales with §dArcane§7 spell power", -"item.simplyswords.compat.scaleSoul": "§7Ability scales with §9Soul§7 spell power", -"item.simplyswords.compat.scaleHealing": "§7Ability scales with §aHealing§7 spell power", +"item.simplyswords.compat.scaleFire": "§7Урон способности зависит от силы §6Огненного§7 заклинания.", +"item.simplyswords.compat.scaleFrost": "§7Урон способности зависит от силы §bЛедяного§7 заклинания.", +"item.simplyswords.compat.scaleLightning": "§7Урон способности зависит от силы §eГрозового§7 заклинания.", +"item.simplyswords.compat.scaleArcane": "§7Урон способности зависит от силы §dМистического§7 заклинания.", +"item.simplyswords.compat.scaleSoul": "§7Урон способности зависит от силы заклинания §9Души§7.", +"item.simplyswords.compat.scaleHealing": "§7Урон способности зависит от силы §aИсцеляющего§7 заклинания.", "simplyswords.general": "Основные", "simplyswords.gem_powers": "Эффекты от самоцвета", @@ -1080,514 +1080,515 @@ "simplyswords.unique_effects": "Уникальные эффекты", "simplyswords.weapon_attributes": "Атрибуты оружия", -"simplyswords.weapon_attributes.typeDamageModifier": "§a[Weapon Modifiers]§7", -"simplyswords.weapon_attributes.typeDamageModifier.desc": "The damage values of weapons can be modified by adjusting their weights.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: vanilla tool material damage + base_modifier + modifier = actual modifier.\nChanges require game restart to take effect.\n\n§a[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon type by 3.", -"simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Модификатор урона Полуторного меча", -"simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Модификатор урона Парного клинка", -"simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Модификатор урона рапиры", -"simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Модификатор урона Катаны", -"simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Модификатор урона Саи", -"simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Модификатор урона Копья", -"simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Модификатор урона Глефы", -"simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Модификатор урона Боевого клинка", -"simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Модификатор урона Абордажной сабли", -"simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Модификатор урона Клеймора", -"simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Модификатор урона Большого топора", -"simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Модификатор урона Большого молота", -"simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Модификатор урона Чакры", -"simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Модификатор урона Косы", -"simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Модификатор урона Алебарды", - -"simplyswords.weapon_attributes.materialDamageModifier": "§a[Material Modifiers]§7", -"simplyswords.weapon_attributes.materialDamageModifier.desc": "Damage modifiers scale off these base values.", -"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals": "Requires Mythic Metals", -"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals.failTitle": "Disabled", -"simplyswords.weapon_attributes.materialDamageModifier.gobber2": "Requires Gobber", -"simplyswords.weapon_attributes.materialDamageModifier.gobber2.failTitle": "Disabled", -"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end": "Requires Eldritch End", -"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end.failTitle": "Disabled", -"simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Iron base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Gold base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Diamond base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Netherite base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Runic base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Adamantite base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Aquarium base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Banglum base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Carmot base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Kyber base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Mythril base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Orichalcum base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Durasteel base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Osmium base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Prometheum base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Quadrillum base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Runite base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Platinum base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Bronze base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Copper base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Steel base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Palladium base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Stormyx base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Celestium base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Metallurgium base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Gobber base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Gobber Nether base damage modifier", -"simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Gobber End base damage modifier", - -"simplyswords.weapon_attributes.typeAttackSpeed": "§a[Attack Speed Modifiers]", -"simplyswords.weapon_attributes.typeAttackSpeed.desc": "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", -"simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Longsword attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Twinblade attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Rapier attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Katana attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Sai attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Spear attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Glaive attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Warglaive attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Cutlass attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Claymore attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Greataxe attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Greathammer damage modifier", -"simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Chakram attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Scythe attack speed", -"simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Halberd attack speed", - -"simplyswords.weapon_attributes.uniqueDamageModifier": "§6[Unique Modifiers]", -"simplyswords.weapon_attributes.uniqueDamageModifier.desc": "Uniques scale a little bit differently and only require one modifier.\nThis is not the outputted damage value you see in game, but it affects it directly.\nCalculation: Vanilla netherite tool damage + damage_modifier = actual modifier.\n\n§6[Damage Modifiers]§7\nExample use-case: Adding 3 to a value below will INCREASE the in-game damage of that weapon by 3.", -"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end": "Requires Eldritch End", -"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle": "Disabled", -"simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "§6Brimstone§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "§6The Watcher§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "§6Storm's Edge§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "§6Stormbringer§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "§6Sword on a Stick§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "§6Bramblethorn§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "§6Watching Warglaive§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "§6Longsword of The Plague§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "§6Emberblade§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "§6Hearthflame§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "§6Soulkeeper§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "§6Twisted Blade§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "§6Soulstealer§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "§6Soulrender§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "§6Mjolnir§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "§6Soulpyre§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "§6Frostfall§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "§6Molten Edge§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "§6Livyatan§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "§6Icewhisper§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "§6Arcanethyst§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "§6Thunderbrand§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "§6Lichblade§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "§6Shadowsting§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "§6Sunfire§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "§6Harbinger§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "§6Whisperwind§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "§6Emberlash§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "§6Waxweaver§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "§6Hiveheart§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "§6Star's Edge§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "§6Wickpiercer§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "§6Dreadtide§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "§6Tempest§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "§6Flamewind§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "§6Ribboncleaver§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "§6Magiscythe§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "§6Enigma§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "§6Magispear§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "§6Magiblade§7 damage modifier", -"simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "§6Caelestis§7 damage modifier", - -"simplyswords.weapon_attributes.uniqueAttackSpeed": "§6[Unique Attack Speed Modifiers]", -"simplyswords.weapon_attributes.uniqueAttackSpeed.desc": "Recommended range: -1.0 to -3.7, with -1.0 being fast and -3.7 being slow.", -"simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "§6Brimstone§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "§6The Watcher§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "§6Storm's Edge§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "§6Stormbringer§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "§6Sword on a Stick§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "§6Bramblethorn§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "§6Watching Warglaive§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "§6Longsword of The Plague§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "§6Emberblade§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "§6Hearthflame§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "§6Soulkeeper§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "§6Twisted Blade§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "§6Soulstealer§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "§6Soulrender§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "§6Mjolnir§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "§6Soulpyre§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "§6Frostfall§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "§6Molten Edge§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "§6Livyatan§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "§6Icewhisper§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "§6Arcanethyst§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "§6Thunderbrand§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "§6Lichblade§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "§6Shadowsting§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "§6Sunfire§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "§6Harbinger§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "§6Whisperwind§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "§6Emberlash§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "§6Waxweaver§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "§6Hiveheart§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "§6Star's Edge§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "§6Wickpiercer§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "§6Dreadtide§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "§6Tempest§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "§6Flamewind§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "§6Ribboncleaver§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "§6Magiscythe§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "§6Enigma§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "§6Magispear§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "§6Magiblade§7 attack speed", -"simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "§6Caelestis§7 attack speed", - -"simplyswords.loot.enableLootDrops": "Enable loot drops", -"simplyswords.loot.enableLootDrops.desc": "Disabling this setting will prevent Simply Swords from generating loot in chests.", -"simplyswords.loot.enableLootInVillages": "Enable loot drops in villages", -"simplyswords.loot.enableLootInVillages.desc": "When enabled, Simply Swords loot can spawn in village chests.", -"simplyswords.loot.standardLootTableWeight": "Standard loot chance", -"simplyswords.loot.standardLootTableWeight.desc": "Chance for Iron > Gold weapons to appear in chests. 1.00 = 100%.", -"simplyswords.loot.rareLootTableWeight": "Rare loot chance", -"simplyswords.loot.rareLootTableWeight.desc": "Chance for Diamond weapons to appear in chests. 1.00 = 100%.", -"simplyswords.loot.runicLootTableWeight": "Runic loot chance", -"simplyswords.loot.runicLootTableWeight.desc": "Chance for Runic Tablets to appear in chests. 1.00 = 100%.", -"simplyswords.loot.uniqueLootTableWeight": "Unique loot chance", -"simplyswords.loot.uniqueLootTableWeight.desc": "Chance for Unique weapons to appear in chests. 1.00 = 100%.", - -"simplyswords.loot.uniqueLootTableOptions": "Unique Weapon Loot Tables", -"simplyswords.loot.uniqueLootTableOptions.desc": "Specific loot tables that unique weapons will appear in, and the chance they appear in that table", - -"simplyswords.loot.disabledUniqueWeaponLoot": "Disabled Unique Weapon Loot Drops", -"simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Loot Blacklisting]§7\nIncluding the id of any unique sword will prevent that item from generating in loot.\nThe item will still exist in the creative menu, but will be unobtainable through ordinary survival gameplay.", - -"simplyswords.loot.enableContainedRemnants.condition": "Requires unique loot drop weight > 0f", -"simplyswords.loot.enableContainedRemnants.failTitle": "Disabled", -"simplyswords.loot.enableContainedRemnants": "Enable Contained Remnants", -"simplyswords.loot.enableContainedRemnants.desc": "Whether contained remnants change form or not. Disable this if you disable unique weapon drops.", -"simplyswords.general": "General Settings", -"simplyswords.general.enableWeaponImpactSounds": "Enable weapon impact sounds", -"simplyswords.general.weaponImpactSoundsVolume": "Weapon impact sounds volume", -"simplyswords.general.enableWeaponFootfalls": "Enable weapon footfalls", -"simplyswords.general.enablePassiveParticles": "Enable passive particles", -"simplyswords.general.enableUniqueGemSockets": "Enable Unique gem sockets", -"simplyswords.general.enableUniqueGemSockets.desc": "If disabled, gem slots will no longer appear on freshly generated Unique weapons. Not retroactive.", -"simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Compat]§7 Enable Gobber unbreakable End weapons", -"simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Requires Gobber", -"simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle": "Disabled", -"simplyswords.general.compatEnableSpellPowerScaling": "§a[Compat]§7 Enable Spell Power scaling", - -"simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[When Spell Power is installed]§7\nIf enabled, some weapon effects will scale with Spell Power attributes.", -"simplyswords.general.compatEnableSpellPowerScaling.condition": "Requires Spell Power", -"simplyswords.general.compatEnableSpellPowerScaling.failTitle": "Disabled", - -"simplyswords.unique_effects.abilityAbsorptionCap": "Absorption cap", -"simplyswords.unique_effects.abilityAbsorptionCap.desc": "Abilities cannot give the user more absorption than this value", - -"simplyswords.unique_effects.watcher": "§6[The Watcher & Watching Warglaives]§7", -"simplyswords.unique_effects.watcher.watcherChance": "Watcher chance", -"simplyswords.unique_effects.watcher.watcherRadius": "Watcher radius", -"simplyswords.unique_effects.watcher.watcherRestoreAmount": "Watcher restore amount", -"simplyswords.unique_effects.watcher.omenAbsorptionCap": "Omen absorption cap", -"simplyswords.unique_effects.watcher.omenChance": "Omen chance", -"simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Omen instant-kill threshold", - -"simplyswords.unique_effects.steal": "§6[Soulstealer]§7", -"simplyswords.unique_effects.steal.chance": "Steal chance", -"simplyswords.unique_effects.steal.duration": "Steal duration", -"simplyswords.unique_effects.steal.radius": "Steal radius", -"simplyswords.unique_effects.steal.spellScaling": "Steal Spell Power DMG multi", -"simplyswords.unique_effects.steal.blindDuration": "Steal Blind duration", -"simplyswords.unique_effects.steal.invisDuration": "Steal Invisible duration", - -"simplyswords.unique_effects.soulkeeper": "§6[Soulkeeper]§7", -"simplyswords.unique_effects.soulkeeper.chance": "Soulmeld chance", -"simplyswords.unique_effects.soulkeeper.duration": "Soulmeld duration", -"simplyswords.unique_effects.soulkeeper.radius": "Soulmeld radius", - -"simplyswords.unique_effects.soulRend": "§6[Soulrender]§7", -"simplyswords.unique_effects.soulRend.chance": "Soulrend chance", -"simplyswords.unique_effects.soulRend.duration": "Soulrend duration", -"simplyswords.unique_effects.soulRend.maxStacks": "Soulrend max stacks", -"simplyswords.unique_effects.soulRend.radius": "Soulrend radius", -"simplyswords.unique_effects.soulRend.damageMulti": "Soulrend damage multiplier", -"simplyswords.unique_effects.soulRend.healMulti": "Soulrend heal multiplier", -"simplyswords.unique_effects.soulRend.spellScaling": "Soulrend Spell Power DMG multi", - -"simplyswords.unique_effects.ferocity": "§6[Twisted Blade]§7", -"simplyswords.unique_effects.ferocity.chance": "Ferocity chance", -"simplyswords.unique_effects.ferocity.duration": "Ferocity duration", -"simplyswords.unique_effects.ferocity.maxStacks": "Ferocity max stacks", -"simplyswords.unique_effects.ferocity.strengthTier": "Ferocity strength amplifier", - -"simplyswords.unique_effects.emberIre": "§6[Emberblade]§7", -"simplyswords.unique_effects.emberIre.chance": "Ember Ire chance", -"simplyswords.unique_effects.emberIre.duration": "Ember Ire duration", - -"simplyswords.unique_effects.volcanicFury": "§6[Hearthflame]§7", -"simplyswords.unique_effects.volcanicFury.chance": "Volcanic Fury chance", -"simplyswords.unique_effects.volcanicFury.cooldown": "Volcanic Fury cooldown", -"simplyswords.unique_effects.volcanicFury.damage": "Volcanic Fury damage", -"simplyswords.unique_effects.volcanicFury.radius": "Volcanic Fury radius", -"simplyswords.unique_effects.volcanicFury.spellScaling": "Volcanic Fury Spell Power DMG multi", - -"simplyswords.unique_effects.storm": "§6[Mjolnir]§7", -"simplyswords.unique_effects.storm.chance": "Storm chance", -"simplyswords.unique_effects.storm.cooldown": "Storm cooldown", -"simplyswords.unique_effects.storm.duration": "Storm duration", -"simplyswords.unique_effects.storm.frequency": "Storm frequency", -"simplyswords.unique_effects.storm.radius": "Storm radius", - -"simplyswords.unique_effects.plague": "§6[Longsword of The Plague]§7", -"simplyswords.unique_effects.plague.chance": "Plague chance", - -"simplyswords.unique_effects.brimstone": "§6[Brimstone Claymore]§7", -"simplyswords.unique_effects.brimstone.chance": "Brimstone chance", - -"simplyswords.unique_effects.bramble": "§6[Bramblethorn]§7", -"simplyswords.unique_effects.bramble.Chance": "Bramble chance", - -"simplyswords.unique_effects.soultether": "§6[Soulpyre]§7", -"simplyswords.unique_effects.soultether.duration": "Soultether duration", -"simplyswords.unique_effects.soultether.range": "Soultether range", -"simplyswords.unique_effects.soultether.radius": "Soultether radius", -"simplyswords.unique_effects.soultether.duration": "Soultether duration", -"simplyswords.unique_effects.soultether.igniteDuration": "Soultether Ignite duration", -"simplyswords.unique_effects.soultether.resistanceDuration": "Soultether Resistance duration", -"simplyswords.unique_effects.frostFury": "§6[Frostfall]§7", -"simplyswords.unique_effects.frostFury.chance": "Frost Fury chance", -"simplyswords.unique_effects.frostFury.cooldown": "Frost Fury cooldown", -"simplyswords.unique_effects.frostFury.damage": "Frost Fury damage", -"simplyswords.unique_effects.frostFury.duration": "Frost Fury duration", -"simplyswords.unique_effects.frostFury.radius": "Frost Fury radius", -"simplyswords.unique_effects.frostFury.spellScaling": "Frost Fury Spell Power DMG multi", - -"simplyswords.unique_effects.moltenRoar": "§6[Molten Edge]§7", -"simplyswords.unique_effects.moltenRoar.chance": "Molten Roar chance", -"simplyswords.unique_effects.moltenRoar.cooldown": "Molten Roar cooldown", -"simplyswords.unique_effects.moltenRoar.duration": "Molten Roar duration", -"simplyswords.unique_effects.moltenRoar.knockbackStrength": "Molten Roar Knockback strength", -"simplyswords.unique_effects.moltenRoar.radius": "Molten Roar radius", - -"simplyswords.unique_effects.frostShatter": "§6[Livyatan]§7", -"simplyswords.unique_effects.frostShatter.chance": "Frost Shatter chance", -"simplyswords.unique_effects.frostShatter.damage": "Frost Shatter damage", -"simplyswords.unique_effects.frostShatter.duration": "Frost Shatter duration", -"simplyswords.unique_effects.frostShatter.radius": "Frost Shatter radius", -"simplyswords.unique_effects.frostShatter.spellScaling": "Frost Shatter Spell Power DMG multi", - -"simplyswords.unique_effects.permafrost": "§6[Icewhisper]§7", -"simplyswords.unique_effects.permafrost.cooldown": "Permafrost cooldown", -"simplyswords.unique_effects.permafrost.damage": "Permafrost damage", -"simplyswords.unique_effects.permafrost.duration": "Permafrost duration", -"simplyswords.unique_effects.permafrost.radius": "Permafrost radius", -"simplyswords.unique_effects.permafrost.spellScaling": "Permafrost Spell Power DMG multi", - -"simplyswords.unique_effects.arcaneAssault": "§6[Arcanethyst]§7", -"simplyswords.unique_effects.arcaneAssault.chance": "Arcane Assault chance", -"simplyswords.unique_effects.arcaneAssault.cooldown": "Arcane Assault cooldown", -"simplyswords.unique_effects.arcaneAssault.damage": "Arcane Assault damage", -"simplyswords.unique_effects.arcaneAssault.duration": "Arcane Assault duration", -"simplyswords.unique_effects.arcaneAssault.radius": "Arcane Assault radius", -"simplyswords.unique_effects.arcaneAssault.spellScaling": "Arcane Assault Spell Power DMG multi", - -"simplyswords.unique_effects.thunderBlitz": "§6[Thunderbrand]§7", -"simplyswords.unique_effects.thunderBlitz.chance": "Thunder Blitz chance", -"simplyswords.unique_effects.thunderBlitz.cooldown": "Thunder Blitz cooldown", -"simplyswords.unique_effects.thunderBlitz.damage": "Thunder Blitz damage", -"simplyswords.unique_effects.thunderBlitz.radius": "Thunder Blitz radius", -"simplyswords.unique_effects.thunderBlitz.spellScaling": "Thunder Blitz Spell Power DMG multi", - -"simplyswords.unique_effects.stormJolt": "§6[Storm's Edge]§7", -"simplyswords.unique_effects.stormJolt.chance": "Storm Jolt chance", -"simplyswords.unique_effects.stormJolt.cooldown": "Storm Jolt cooldown", - -"simplyswords.unique_effects.soulAnguish": "§6[Lichblade]§7", -"simplyswords.unique_effects.soulAnguish.absorptionCap": "Soul Anguish absorption cap", -"simplyswords.unique_effects.soulAnguish.cooldown": "Soul Anguish cooldown", -"simplyswords.unique_effects.soulAnguish.damage": "Soul Anguish damage", -"simplyswords.unique_effects.soulAnguish.duration": "Soul Anguish duration", -"simplyswords.unique_effects.soulAnguish.heal": "Soul Anguish heal", -"simplyswords.unique_effects.soulAnguish.radius": "Soul Anguish radius", -"simplyswords.unique_effects.soulAnguish.range": "Soul Anguish range", -"simplyswords.unique_effects.soulAnguish.spellScaling": "Soul Anguish Spell Power DMG multi", - -"simplyswords.unique_effects.shockDeflect": "§6[Stormbringer]§7", -"simplyswords.unique_effects.shockDeflect.Cooldown": "Shock Deflect cooldown", -"simplyswords.unique_effects.shockDeflect.Damage": "Shock Deflect damage", -"simplyswords.unique_effects.shockDeflect.SpellScaling": "Shock Deflect Spell Power DMG multi", -"simplyswords.unique_effects.shockDeflect.BlockDuration": "Shock Deflect radius", -"simplyswords.unique_effects.shockDeflect.ParryDuration": "Shock Deflect chance", - -"simplyswords.unique_effects.shadowmist": "§6[Shadowsting]§7", -"simplyswords.unique_effects.shadowmist.chance": "Shadowmist chance", -"simplyswords.unique_effects.shadowmist.cooldown": "Shadowmist cooldown", -"simplyswords.unique_effects.shadowmist.damageMulti": "Shadowmist damage multiplier", -"simplyswords.unique_effects.shadowmist.radius": "Shadowmist radius", -"simplyswords.unique_effects.shadowmist.blindDuration": "Shadowmist Blind duration", - -"simplyswords.unique_effects.abyssalStandard": "§6[Abyssal Standard]§7", -"simplyswords.unique_effects.abyssalStandard.chance": "Abyssal Standard chance", -"simplyswords.unique_effects.abyssalStandard.cooldown": "Abyssal Standard cooldown", -"simplyswords.unique_effects.abyssalStandard.damage": "Abyssal Standard damage", -"simplyswords.unique_effects.abyssalStandard.spellScaling": "Abyssal Standard Spell Power DMG multi", - -"simplyswords.unique_effects.righteousStandard": "§6[Righteous Standard]§7", -"simplyswords.unique_effects.righteousStandard.chance": "Righteous Standard chance", -"simplyswords.unique_effects.righteousStandard.cooldown": "Righteous Standard cooldown", -"simplyswords.unique_effects.righteousStandard.damage": "Righteous Standard damage", -"simplyswords.unique_effects.righteousStandard.spellScaling": "Righteous Standard Spell Power DMG multi", -"simplyswords.unique_effects.righteousStandard.spellScalingHeal": "Righteous Standard Spell Power HEAL multi", - -"simplyswords.unique_effects.fatalFlicker": "§6[Whisperwind]§7", -"simplyswords.unique_effects.fatalFlicker.chance": "Fatal Flicker chance", -"simplyswords.unique_effects.fatalFlicker.cooldown": "Fatal Flicker cooldown", -"simplyswords.unique_effects.fatalFlicker.maxStacks": "Fatal Flicker max stacks", -"simplyswords.unique_effects.fatalFlicker.radius": "Fatal Flicker radius", -"simplyswords.unique_effects.fatalFlicker.dashVelocity": "Fatal Flicker dash velocity", - -"simplyswords.unique_effects.smoulder": "§6[Emberlash]§7", -"simplyswords.unique_effects.smoulder.cooldown": "Smoulder cooldown", -"simplyswords.unique_effects.smoulder.heal": "Smoulder heal percent", -"simplyswords.unique_effects.smoulder.maxStacks": "Smoulder max stacks", -"simplyswords.unique_effects.smoulder.spellScaling": "Smoulder Spell Power DMG multi", - -"simplyswords.unique_effects.waxweave": "§6[Waxweaver]§7", -"simplyswords.unique_effects.waxweave.cooldown": "Waxweave cooldown", -"simplyswords.unique_effects.waxweave.maxStacks": "Waxweave max stacks", - -"simplyswords.unique_effects.hivemind": "§6[Hiveheart]§7", -"simplyswords.unique_effects.hivemind.cooldown": "Hivemind cooldown", -"simplyswords.unique_effects.hivemind.damage": "Hivemind damage modifier", -"simplyswords.unique_effects.hivemind.duration": "Hivemind duration", - -"simplyswords.unique_effects.celestialSurge": "§6[Star's Edge]§7", -"simplyswords.unique_effects.celestialSurge.cooldown": "Celestial Surge cooldown", -"simplyswords.unique_effects.celestialSurge.duration": "Celestial Surge duration", -"simplyswords.unique_effects.celestialSurge.damageModifier": "Celestial Surge Damage modifier", -"simplyswords.unique_effects.celestialSurge.lifestealModifier": "Celestial Surge Lifesteal modifier", -"simplyswords.unique_effects.celestialSurge.stacks": "Celestial Surge Haste stacks", - -"simplyswords.unique_effects.flickerFury": "§6[Wickpiercer]§7", -"simplyswords.unique_effects.flickerFury.cooldown": "Flicker Fury cooldown", -"simplyswords.unique_effects.flickerFury.damage": "Flicker Fury damage modifier", -"simplyswords.unique_effects.flickerFury.duration": "Flicker Fury duration", - -"simplyswords.unique_effects.vortex": "§6[Tempest]§7", -"simplyswords.unique_effects.vortex.duration": "Vortex duration", -"simplyswords.unique_effects.vortex.maxSize": "Vortex max size", -"simplyswords.unique_effects.vortex.maxStacks": "Vortex max stacks", -"simplyswords.unique_effects.vortex.spellScaling": "Vortex Spell Power DMG multi", - -"simplyswords.unique_effects.voidcaller": "§6[Dreadtide]§7", -"simplyswords.unique_effects.voidcaller.compat": "Requires Eldritch End", -"simplyswords.unique_effects.voidcaller.compat.failTitle": "Disabled", -"simplyswords.unique_effects.voidcaller.damageModifier": "Voidcaller damage modifier", -"simplyswords.unique_effects.voidcaller.duration": "Voidcaller duration", -"simplyswords.unique_effects.voidcaller.startingTickFrequency": "Voidcaller starting tick frequency", -"simplyswords.unique_effects.voidcaller.corruptionFrequency": "Voidcaller Corruption frequency", -"simplyswords.unique_effects.voidcaller.corruptionPerTick": "Voidcaller Corruption per tick", -"simplyswords.unique_effects.voidcaller.corruptionDuration": "Voidcaller Corruption duration", -"simplyswords.unique_effects.voidcaller.corruptionMax": "Voidcaller Corruption max", - -"simplyswords.unique_effects.emberstorm": "§6[Flamewind]§7", -"simplyswords.unique_effects.emberstorm.cooldown": "Emberstorm cooldown", -"simplyswords.unique_effects.emberstorm.damage": "Emberstorm damage", -"simplyswords.unique_effects.emberstorm.spellScaling": "Emberstorm Spell Power DMG multi", -"simplyswords.unique_effects.emberstorm.detonationDamage": "Emberstorm detonation damage", -"simplyswords.unique_effects.emberstorm.maxHaste": "Emberstorm Haste max", -"simplyswords.unique_effects.emberstorm.spreadCap": "Emberstorm spread cap", - -"simplyswords.unique_effects.ribbonwrath": "§6[Ribboncleaver]§7", -"simplyswords.unique_effects.ribbonwrath.cooldown": "Ribbonwrath cooldown", -"simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Ribbonwrath damage bonus percent", -"simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Ribbonwrath resilience amplifier", - -"simplyswords.unique_effects.magistorm": "§6[Magiscythe]§7", -"simplyswords.unique_effects.magistorm.cooldown": "Magiscythe cooldown", -"simplyswords.unique_effects.magistorm.damage": "Magistorm damage", -"simplyswords.unique_effects.magistorm.duration": "Magistorm duration", -"simplyswords.unique_effects.magistorm.radius": "Magistorm radius", -"simplyswords.unique_effects.magistorm.repairChance": "Magistorm repair chance", -"simplyswords.unique_effects.magistorm.spellScaling": "Magistorm Spell Power DMG multi", - -"simplyswords.unique_effects.enigma": "§6[Enigma]§7", -"simplyswords.unique_effects.enigma.cooldown": "Enigma cooldown", -"simplyswords.unique_effects.enigma.chaseRadius": "Enigma chase radius", -"simplyswords.unique_effects.enigma.decayRate": "Enigma decay rate", - -"simplyswords.unique_effects.magiblade": "§6[Magiblade]§7", -"simplyswords.unique_effects.magiblade.cooldown": "Magisonic cooldown", -"simplyswords.unique_effects.magiblade.damageModifier": "Magisonic damage modifier", -"simplyswords.unique_effects.magiblade.repelChance": "Magisonic repel chance", -"simplyswords.unique_effects.magiblade.repelRadius": "Magisonic repel radius", -"simplyswords.unique_effects.magiblade.sonicDistance": "Magisonic sonic distance", - -"simplyswords.unique_effects.magislam": "§6[Magispear]§7", -"simplyswords.unique_effects.magislam.cooldown": "Magislam cooldown", -"simplyswords.unique_effects.magislam.damageModifier": "Magislam damage modifier", -"simplyswords.unique_effects.magislam.radius": "Magislam radius", -"simplyswords.unique_effects.magislam.magicChance": "Magislam magic chance", -"simplyswords.unique_effects.magislam.magicModifier": "Magislam magic modifier", - -"simplyswords.unique_effects.astralShift": "§6[Caelestis]§7", -"simplyswords.unique_effects.astralShift.chance": "Astral Shift avoidance chance", -"simplyswords.unique_effects.astralShift.cooldown": "Astral Shift cooldown", -"simplyswords.unique_effects.astralShift.damageMax": "Astral Shift damage max", -"simplyswords.unique_effects.astralShift.damageModifier": "Astral Shift damage modifier", -"simplyswords.unique_effects.astralShift.duration": "Astral Shift duration", - -"simplyswords.gem_powers": "Runic and Fused Gem Powers", -"simplyswords.gem_powers.disabledPowers": "Disabled Gem Powers", -"simplyswords.gem_powers.disabledPowers.desc": "§a[Runic Power Blacklisting]§7\nAdding a power to this list will prevent that runic power from being obtainable.", -"simplyswords.gem_powers.swiftness": "§b[Swiftness]§7", -"simplyswords.gem_powers.slow": "§b[Slow]§7", -"simplyswords.gem_powers.poison": "§b[Poison]§7", -"simplyswords.gem_powers.freeze": "§b[Freeze]§7", -"simplyswords.gem_powers.wildfire": "§b[Wildfire]§7", -"simplyswords.gem_powers.floating": "§b[Float]§7", -"simplyswords.gem_powers.zephyr": "§b[Zephyr]§7", -"simplyswords.gem_powers.shielding": "§b[Shielding]§7", -"simplyswords.gem_powers.stoneskin": "§b[Stoneskin]§7", -"simplyswords.gem_powers.trailblaze": "§b[Trailblaze]§7", -"simplyswords.gem_powers.weaken": "§b[Weaken]§7", -"simplyswords.gem_powers.unstable": "§b[Unstable]§7", -"simplyswords.gem_powers.activeDefence": "§b[Active Defence]§7", -"simplyswords.gem_powers.frostWard": "§b[Frost Ward]§7", -"simplyswords.gem_powers.momentum": "§b[Momentum]§7", -"simplyswords.gem_powers.imbued": "§b[Imbued]§7", -"simplyswords.gem_powers.simplySkills": "Simply Skills Powers", -"simplyswords.gem_powers.simplySkills.desc": "§6[Simply Skills Compatibility Gems]§7\nThese gems can only be acquired when Simply Skills is installed.", -"simplyswords.gem_powers.simplySkills.condition": "Requires Simply Skills", -"simplyswords.gem_powers.simplySkills.failTitle": "Disabled", -"simplyswords.gem_powers.simplySkills.preciseChance": "Precise chance", -"simplyswords.gem_powers.simplySkills.mightyChance": "Mighty chance", -"simplyswords.gem_powers.simplySkills.stealthyChance": "Stealthy chance", -"simplyswords.gem_powers.simplySkills.renewedChance": "Renewed chance", -"simplyswords.gem_powers.simplySkills.leapingChance": "Leaping chance", -"simplyswords.gem_powers.simplySkills.spellshieldChance": "Spellshield chance", - -"simplyswords_main.option.status_effects.echoDamage": "Echo base damage", - -"simplyswords.config.basic_settings.chance": "Chance", -"simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", -"simplyswords.config.basic_settings.duration": "Duration", -"simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", -"simplyswords.config.basic_settings.radius": "Radius", -"simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", -"simplyswords.config.basic_settings.frequency": "Frequency", -"simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs 'once per X ticks'", -"simplyswords.config.basic_settings.cooldown": "Cooldown", -"simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" -"simplyswords.config.basic_settings.chance": "Chance", -"simplyswords.config.basic_settings.chance.desc": "Percent chance the effect occurs", -"simplyswords.config.basic_settings.duration": "Duration", -"simplyswords.config.basic_settings.duration.desc": "Duration of the effect in ticks", -"simplyswords.config.basic_settings.radius": "Radius", -"simplyswords.config.basic_settings.radius.desc": "Radius of the effect in blocks", -"simplyswords.config.basic_settings.frequency": "Frequency", -"simplyswords.config.basic_settings.frequency.desc": "How often the effect occurs; 'once per X ticks'", -"simplyswords.config.basic_settings.cooldown": "Cooldown", -"simplyswords.config.basic_settings.cooldown.desc": "Delay in ticks after activating the effect" +"simplyswords.weapon_attributes.typeDamageModifier": "§a[Модификаторы оружия]§7", +"simplyswords.weapon_attributes.typeDamageModifier.desc": "Отрегулировав весовые значения показателей урона от оружия им можно изменить урон.\nВидимое Вами значение выдаваемого урона не является таковым, однако воздействует напрямую.\nРасчёт: урон материала ванильного инструмента + base_modifier + модификатор = действительный модификатор.\nЧтобы изменения вступили в силу, требуется перезапуск игры.\n\n§a[Модификаторы урона]§7\nПример варианта использования: Добавление 3 в нижеуказанное значение ПОВЫСИТ внутриигровой урон на 3 данному типу оружия.", +"simplyswords.weapon_attributes.typeDamageModifier.longsword_damageModifier": "Модификатор урона для Полуторного меча", +"simplyswords.weapon_attributes.typeDamageModifier.twinblade_damageModifier": "Модификатор урона для Парного клинка", +"simplyswords.weapon_attributes.typeDamageModifier.rapier_damageModifier": "Модификатор урона для Рапиры", +"simplyswords.weapon_attributes.typeDamageModifier.katana_damageModifier": "Модификатор урона для Катаны", +"simplyswords.weapon_attributes.typeDamageModifier.sai_damageModifier": "Модификатор урона для Саи", +"simplyswords.weapon_attributes.typeDamageModifier.spear_damageModifier": "Модификатор урона для Копья", +"simplyswords.weapon_attributes.typeDamageModifier.glaive_damageModifier": "Модификатор урона для Глефы", +"simplyswords.weapon_attributes.typeDamageModifier.warglaive_damageModifier": "Модификатор урона для Боевого клинка", +"simplyswords.weapon_attributes.typeDamageModifier.cutlass_damageModifier": "Модификатор урона для Абордажной сабли", +"simplyswords.weapon_attributes.typeDamageModifier.claymore_damageModifier": "Модификатор урона для Клеймора", +"simplyswords.weapon_attributes.typeDamageModifier.greataxe_damageModifier": "Модификатор урона для Большого топора", +"simplyswords.weapon_attributes.typeDamageModifier.greathammer_damageModifier": "Модификатор урона для Большого молота", +"simplyswords.weapon_attributes.typeDamageModifier.chakram_damageModifier": "Модификатор урона для Чакры", +"simplyswords.weapon_attributes.typeDamageModifier.scythe_damageModifier": "Модификатор урона для Косы", +"simplyswords.weapon_attributes.typeDamageModifier.halberd_damageModifier": "Модификатор урона для Алебарды", + +"simplyswords.weapon_attributes.materialDamageModifier": "§a[Модификаторы материалов]§7", +"simplyswords.weapon_attributes.materialDamageModifier.desc": "Модификаторы урона измеряются по этим базовым значениям.", +"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals": "Требуется мод: Mythic Metals", +"simplyswords.weapon_attributes.materialDamageModifier.mythicmetals.failTitle": "Недоступен", +"simplyswords.weapon_attributes.materialDamageModifier.gobber2": "Требуется мод: Gobber", +"simplyswords.weapon_attributes.materialDamageModifier.gobber2.failTitle": "Недоступен", +"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end": "Требуется мод: Eldritch End", +"simplyswords.weapon_attributes.materialDamageModifier.eldritch_end.failTitle": "Недоступен", +"simplyswords.weapon_attributes.materialDamageModifier.iron_damageModifier": "Модификатор базового урона: Железо", +"simplyswords.weapon_attributes.materialDamageModifier.gold_damageModifier": "Модификатор базового урона: Золото", +"simplyswords.weapon_attributes.materialDamageModifier.diamond_damageModifier": "Модификатор базового урона: Алмаз", +"simplyswords.weapon_attributes.materialDamageModifier.netherite_damageModifier": "Модификатор базового урона: Незерит", +"simplyswords.weapon_attributes.materialDamageModifier.runic_damageModifier": "Модификатор базового урона: Рунический", +"simplyswords.weapon_attributes.materialDamageModifier.adamantite_damageModifier": "Модификатор базового урона: Адамантит", +"simplyswords.weapon_attributes.materialDamageModifier.aquarium_damageModifier": "Модификатор базового урона: Акварий", +"simplyswords.weapon_attributes.materialDamageModifier.banglum_damageModifier": "Модификатор базового урона: Банглум", +"simplyswords.weapon_attributes.materialDamageModifier.carmot_damageModifier": "Модификатор базового урона: Кармот", +"simplyswords.weapon_attributes.materialDamageModifier.kyber_damageModifier": "Модификатор базового урона: Кайбер", +"simplyswords.weapon_attributes.materialDamageModifier.mythril_damageModifier": "Модификатор базового урона: Мифрил", +"simplyswords.weapon_attributes.materialDamageModifier.orichalcum_damageModifier": "Модификатор базового урона: Орихалк", +"simplyswords.weapon_attributes.materialDamageModifier.durasteel_damageModifier": "Модификатор базового урона: Дюрасталь", +"simplyswords.weapon_attributes.materialDamageModifier.osmium_damageModifier": "Модификатор базового урона: Осмий", +"simplyswords.weapon_attributes.materialDamageModifier.prometheum_damageModifier": "Модификатор базового урона: Прометий", +"simplyswords.weapon_attributes.materialDamageModifier.quadrillum_damageModifier": "Модификатор базового урона: Квадрий", +"simplyswords.weapon_attributes.materialDamageModifier.runite_damageModifier": "Модификатор базового урона: Рунит", +"simplyswords.weapon_attributes.materialDamageModifier.starPlatinum_damageModifier": "Star Модификатор базового урона: Платина", +"simplyswords.weapon_attributes.materialDamageModifier.bronze_damageModifier": "Модификатор базового урона: Бронза", +"simplyswords.weapon_attributes.materialDamageModifier.copper_damageModifier": "Модификатор базового урона: Медь", +"simplyswords.weapon_attributes.materialDamageModifier.steel_damageModifier": "Модификатор базового урона: Сталь", +"simplyswords.weapon_attributes.materialDamageModifier.palladium_damageModifier": "Модификатор базового урона: Палладий", +"simplyswords.weapon_attributes.materialDamageModifier.stormyx_damageModifier": "Модификатор базового урона: Штормикс", +"simplyswords.weapon_attributes.materialDamageModifier.celestium_damageModifier": "Модификатор базового урона: Целестий", +"simplyswords.weapon_attributes.materialDamageModifier.metallurgium_damageModifier": "Модификатор базового урона: Металлургий", +"simplyswords.weapon_attributes.materialDamageModifier.gobber_damageModifier": "Модификатор базового урона: Гоббер", +"simplyswords.weapon_attributes.materialDamageModifier.gobberNether_damageModifier": "Модификатор базового урона: Незерский Гоббер", +"simplyswords.weapon_attributes.materialDamageModifier.gobberEnd_damageModifier": "Модификатор базового урона: Гоббер Энда", + +"simplyswords.weapon_attributes.typeAttackSpeed": "§a[Модификаторы скорости атаки]", +"simplyswords.weapon_attributes.typeAttackSpeed.desc": "Рекомендуемая область значений: с -1.0 до -3.7, -1.0 быстрая, а -3.7 медленная.", +"simplyswords.weapon_attributes.typeAttackSpeed.longsword_attackSpeed": "Скорость атаки Полуторного меча", +"simplyswords.weapon_attributes.typeAttackSpeed.twinblade_attackSpeed": "Скорость атаки Парного клинка", +"simplyswords.weapon_attributes.typeAttackSpeed.rapier_attackSpeed": "Скорость атаки Рапиры", +"simplyswords.weapon_attributes.typeAttackSpeed.katana_attackSpeed": "Скорость атаки Катаны", +"simplyswords.weapon_attributes.typeAttackSpeed.sai_attackSpeed": "Скорость атаки Саи", +"simplyswords.weapon_attributes.typeAttackSpeed.spear_attackSpeed": "Скорость атаки Копья", +"simplyswords.weapon_attributes.typeAttackSpeed.glaive_attackSpeed": "Скорость атаки Глефы", +"simplyswords.weapon_attributes.typeAttackSpeed.warglaive_attackSpeed": "Скорость атаки Боевого клинка", +"simplyswords.weapon_attributes.typeAttackSpeed.cutlass_attackSpeed": "Скорость атаки Абордажной сабли", +"simplyswords.weapon_attributes.typeAttackSpeed.claymore_attackSpeed": "Скорость атаки Клеймора", +"simplyswords.weapon_attributes.typeAttackSpeed.greataxe_attackSpeed": "Скорость атаки Большого топора", +"simplyswords.weapon_attributes.typeAttackSpeed.greathammer_attackSpeed": "Модификатор урона Большого молота", +"simplyswords.weapon_attributes.typeAttackSpeed.chakram_attackSpeed": "Скорость атаки Чакры", +"simplyswords.weapon_attributes.typeAttackSpeed.scythe_attackSpeed": "Скорость атаки Косы", +"simplyswords.weapon_attributes.typeAttackSpeed.halberd_attackSpeed": "Скорость атаки Алебарды", + +"simplyswords.weapon_attributes.uniqueDamageModifier": "§6[Уникальные модификаторы]", +"simplyswords.weapon_attributes.uniqueDamageModifier.desc": "Урон уникальных модификаторов определяется немного по-другому и требуют только 1 модификатор.\nВидимое Вами значение выдаваемого урона не является таковым, однако воздействует напрямую.\nРасчёт: Урон ванильного незеритового инструмента + damage_modifier = действительный модификатор.\n\n§6[Модификаторы урона]§7\nПример варианта использования: Добавление 3 в нижеуказанное значение ПОВЫСИТ внутриигровой урон на 3 данному типу оружия.", +"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end": "Требуется мод: Eldritch End", +"simplyswords.weapon_attributes.uniqueDamageModifier.eldritch_end.failTitle": "Недоступен", +"simplyswords.weapon_attributes.uniqueDamageModifier.brimstone_damageModifier": "Модификатор урона: §6Серный клеймор§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.thewatcher_damageModifier": "Модификатор урона: §6Смотритель§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.stormsedge_damageModifier": "Модификатор урона: §6Клинок Бури§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.stormbringer_damageModifier": "Модификатор урона: §6Буревестник§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.swordonastick_damageModifier": "Модификатор урона: §6Меч на палке§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.bramblethorn_damageModifier": "Модификатор урона: §6Терновый шип§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.watchingwarglaive_damageModifier": "Модификатор урона §6Боевой клинок смотрителя§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.longswordofplague_damageModifier": "Модификатор урона §6Полуторный меч чумы§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.emberblade_damageModifier": "Модификатор урона: §6Янтарный клинок§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.hearthflame_damageModifier": "Модификатор урона: §6Пламенное сердце§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulkeeper_damageModifier": "Модификатор урона: §6Хранитель душ§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.twistedblade_damageModifier": "Модификатор урона: §6Спиральный клинок§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulstealer_damageModifier": "Модификатор урона: §6Похититель душ§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulrender_damageModifier": "Модификатор урона: §6Воздаятель душ§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.mjolnir_damageModifier": "Модификатор урона: §6Мьёльнир§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.soulpyre_damageModifier": "Модификатор урона: §6Костёр душ§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.frostfall_damageModifier": "Модификатор урона: §6Морозная гибель§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.moltenedge_damageModifier": "Модификатор урона: §6Расплавленный клинок§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.livyatan_damageModifier": "Модификатор урона: §6Левиафан§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.icewhisper_damageModifier": "Модификатор урона: §6Шепчущий лёд§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.arcanethyst_damageModifier": "Модификатор урона: §6Миститист§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.thunderbrand_damageModifier": "Модификатор урона: §6Громовой меч§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.lichblade_damageModifier": "Модификатор урона: §6Пьющий клинок§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.shadowsting_damageModifier": "Модификатор урона: §6Теневое жало§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.sunfire_damageModifier": "Модификатор урона: §6Солнечный огонь§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.harbinger_damageModifier": "Модификатор урона: §6Предвестник§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.whisperwind_damageModifier": "Модификатор урона: §6Шепчущий лёд§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.emberlash_damageModifier": "Модификатор урона: §6Янтарная плеть§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.waxweaver_damageModifier": "Модификатор урона: §6Воскоплёт§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.hiveheart_damageModifier": "Модификатор урона: §6Сердце улья§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.starsedge_damageModifier": "Модификатор урона: §6Клинок звезды§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.wickpiercer_damageModifier": "Модификатор урона: §6Фитильный пронзатель§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.dreadtide_damageModifier": "Модификатор урона: §6Прилив ужаса§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.tempest_damageModifier": "Модификатор урона: §6Буря§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.flamewind_damageModifier": "Модификатор урона: §6Огненный ветер§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.ribboncleaver_damageModifier": "Модификатор урона: §6Ленточный тесак§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.magiscythe_damageModifier": "Модификатор урона: §6Магическая коса§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.enigma_damageModifier": "Модификатор урона: §6Загадка§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.magispear_damageModifier": "Модификатор урона: §6Магическое копьё§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.magiblade_damageModifier": "Модификатор урона: §6Магический клинок§7", +"simplyswords.weapon_attributes.uniqueDamageModifier.caelestis_damageModifier": "Модификатор урона: §6Небесный§7", + +"simplyswords.weapon_attributes.uniqueAttackSpeed": "§6[Модификаторы скорости атаки уникальных]", +"simplyswords.weapon_attributes.uniqueAttackSpeed.desc": "Рекомендуемая область значений: с -1.0 до -3.7, -1.0 быстрая, а -3.7 медленная.", +"simplyswords.weapon_attributes.uniqueAttackSpeed.brimstone_attackSpeed": "Скорость атаки: §6Серный клеймор§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.thewatcher_attackSpeed": "Скорость атаки: §6Смотрителя§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.stormsedge_attackSpeed": "Скорость атаки: §6Клинок бури§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.stormbringer_attackSpeed": "Скорость атаки: §6Буревестник§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.swordonastick_attackSpeed": "Скорость атаки: §6Меч на палке§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.bramblethorn_attackSpeed": "Скорость атаки: §6Терновый шип§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.watchingwarglaive_attackSpeed": "Скорость атаки: §6Боевой клинок смотрителя§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.longswordofplague_attackSpeed": "Скорость атаки: §6Полуторный меч чумы§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.emberblade_attackSpeed": "Скорость атаки: §6Янтарный клинок§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.hearthflame_attackSpeed": "Скорость атаки: §6Пламенное сердце§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulkeeper_attackSpeed": "Скорость атаки: §6Хранитель душ§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.twistedblade_attackSpeed": "Скорость атаки: §6Спиральный клинок§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulstealer_attackSpeed": "Скорость атаки: §6Похититель душ§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulrender_attackSpeed": "Скорость атаки: §6Воздаятель душ§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.mjolnir_attackSpeed": "Скорость атаки: §6Мьёльнир§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.soulpyre_attackSpeed": "Скорость атаки: §6Костёр душ§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.frostfall_attackSpeed": "Скорость атаки: §6Морозная гибель§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.moltenedge_attackSpeed": "Скорость атаки: §6Расплавленный клинок§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.livyatan_attackSpeed": "Скорость атаки: §6Левиафан§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.icewhisper_attackSpeed": "Скорость атаки: §6Шепчущий лёд§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.arcanethyst_attackSpeed": "Скорость атаки: §6Миститист§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.thunderbrand_attackSpeed": "Скорость атаки: §6Громовой меч§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.lichblade_attackSpeed": "Скорость атаки: §6Пьющий клинок§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.shadowsting_attackSpeed": "Скорость атаки: §6Теневое жало§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.sunfire_attackSpeed": "Скорость атаки: §6Солнечный огонь§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.harbinger_attackSpeed": "Скорость атаки: §6Предвестник§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.whisperwind_attackSpeed": "Скорость атаки: §6Шепчущий лёд§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.emberlash_attackSpeed": "Скорость атаки: §6Янтарная плеть§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.waxweaver_attackSpeed": "Скорость атаки: §6Воскоплёт§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.hiveheart_attackSpeed": "Скорость атаки: §6Сердце улья§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.starsedge_attackSpeed": "Скорость атаки: §6Клинок звезды§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.wickpiercer_attackSpeed": "Скорость атаки: §6Фитильный пронзатель§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.dreadtide_attackSpeed": "Скорость атаки: §6Прилив ужаса§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.tempest_attackSpeed": "Скорость атаки: §6Буря§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.flamewind_attackSpeed": "Скорость атаки: §6Огненный ветер§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.ribboncleaver_attackSpeed": "Скорость атаки: §6Ленточный тесак§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magiscythe_attackSpeed": "Скорость атаки: §6Магическая коса§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.enigma_attackSpeed": "Скорость атаки: §6Загадка§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magispear_attackSpeed": "Скорость атаки: §6Магическое копьё§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.magiblade_attackSpeed": "Скорость атаки: §6Магический клинок§7", +"simplyswords.weapon_attributes.uniqueAttackSpeed.caelestis_attackSpeed": "Скорость атаки: §6Небесный§7", + +"simplyswords.loot.enableLootDrops": "Включить выпадение добычи", +"simplyswords.loot.enableLootDrops.desc": "Отключение этого параметра запретит Simply Swords генерировать добычу в сундуках.", +"simplyswords.loot.enableLootInVillages": "Включить выпадение добычи в деревнях", +"simplyswords.loot.enableLootInVillages.desc": "При включении добыча из Simply Swords может появиться в сундуках в деревнях.", +"simplyswords.loot.standardLootTableWeight": "Шанс добычи знамени", +"simplyswords.loot.standardLootTableWeight.desc": "Шанс появления от Железного до Золотого оружия в сундуках. 1.00 = 100%.", +"simplyswords.loot.rareLootTableWeight": "Шанс редкой добычи", +"simplyswords.loot.rareLootTableWeight.desc": "Шанс появления Алмазного оружия в сундуках. 1.00 = 100%.", +"simplyswords.loot.runicLootTableWeight": "Шанс добычи рун", +"simplyswords.loot.runicLootTableWeight.desc": "Шанс появления Рунических скрижалей в сундуках. 1.00 = 100%.", +"simplyswords.loot.uniqueLootTableWeight": "Шанс уникальной добычи", +"simplyswords.loot.uniqueLootTableWeight.desc": "Шанс появления Уникального оружия в сундуках. 1.00 = 100%.", + +"simplyswords.loot.uniqueLootTableOptions": "Таблица добычи уникального оружия", +"simplyswords.loot.uniqueLootTableOptions.desc": "Специальные таблицы добычи в которых будут отображаться уникальные оружия, а их шанс отображается в этой таблице.", + +"simplyswords.loot.disabledUniqueWeaponLoot": "Таблица добычи уникального оружия отключена", +"simplyswords.loot.disabledUniqueWeaponLoot.desc": "§6[Чёрный список добычи]§7\nЗанесение идентификатора любого уникального оружия запретит этому предмету генерироваться в Таблице добычи.\nПредмет всё ещё будет находиться в творческом меню, но будет недоступен в ходе заурядного геймплея в выживании.", + +"simplyswords.loot.enableContainedRemnants.condition": "Требуется весовое значение > 0f для выпадения уникальной добычи.", +"simplyswords.loot.enableContainedRemnants.failTitle": "Недоступен", +"simplyswords.loot.enableContainedRemnants": "Включить Сдержанные остатки", +"simplyswords.loot.enableContainedRemnants.desc": "Изменят ли форму сдержанные остатки. Отключите, если отключили выпадение уникального оружия.", +"simplyswords.general": "Общие настойки", +"simplyswords.general.enableWeaponImpactSounds": "Включить звуки ударов оружия", +"simplyswords.general.weaponImpactSoundsVolume": "Громкость звуков ударов оружия", +"simplyswords.general.enableWeaponFootfalls": "Включить звуки шагов с оснащённым оружием", +"simplyswords.general.enablePassiveParticles": "Включить пассивные частицы", +"simplyswords.general.enableUniqueGemSockets": "Включить уникальные гнёзда для самоцвета", +"simplyswords.general.enableUniqueGemSockets.desc": "Если отключено, слоты для самоцветов больше не будут отображаться на только что сгенерированных Уникального оружия. Не имеет обратной силы.", +"simplyswords.general.compatGobberEndWeaponsUnbreakable": "§a[Совместимость]§7 Включить нерушимые оружия из модов Гоббер и Энда", +"simplyswords.general.compatGobberEndWeaponsUnbreakable.condition": "Требуется мод: Gobber", +"simplyswords.general.compatGobberEndWeaponsUnbreakable.failTitle": "Недоступен", +"simplyswords.general.compatEnableSpellPowerScaling": "§a[Совместимость]§7 Включить шкалирование из мода Spell Power", + +"simplyswords.general.compatEnableSpellPowerScaling.desc": "§a[Если установлен мод Spell Power]§7\nЕсли включено, некоторые эффекты оружия будут шкалироваться вместе с атрибутами Spell Power.", +"simplyswords.general.compatEnableSpellPowerScaling.condition": "Требуется мод: Spell Power", +"simplyswords.general.compatEnableSpellPowerScaling.failTitle": "Недоступен", + +"simplyswords.unique_effects.abilityAbsorptionCap": "Предельное значение эффекта Поглощения", +"simplyswords.unique_effects.abilityAbsorptionCap.desc": "Способности не смогут давать пользователю эффект «Поглощения» сверх этого значения.", + +"simplyswords.unique_effects.watcher": "§6[Смотритель и Боевой клинок смотрителя]§7", +"simplyswords.unique_effects.watcher.watcherChance": "Шанс смотрителя", +"simplyswords.unique_effects.watcher.watcherRadius": "Радиус смотрителя", +"simplyswords.unique_effects.watcher.watcherRestoreAmount": "Количество восстановления Смотрителя", +"simplyswords.unique_effects.watcher.omenAbsorptionCap": "Предел поглощения Предвестия", +"simplyswords.unique_effects.watcher.omenChance": "Шанс Предвестия", +"simplyswords.unique_effects.watcher.omenInstantKillThreshold": "Порог мгновенного убийства Предвестия", + +"simplyswords.unique_effects.steal": "§6[Похититель душ]§7", +"simplyswords.unique_effects.steal.chance": "Шанс похищения", +"simplyswords.unique_effects.steal.duration": "Длительность похищения", +"simplyswords.unique_effects.steal.radius": "Радиус похищения", +"simplyswords.unique_effects.steal.spellScaling": "(Spell Power) множит. урона похищения", +"simplyswords.unique_effects.steal.blindDuration": "Длительность похищения/ослепления", +"simplyswords.unique_effects.steal.invisDuration": "Длительность похищения/невидимости", + +"simplyswords.unique_effects.soulkeeper": "§6[Хранитель душ]§7", +"simplyswords.unique_effects.soulkeeper.chance": "Шанс слияния душ", +"simplyswords.unique_effects.soulkeeper.duration": "Длительность слияния душ", +"simplyswords.unique_effects.soulkeeper.radius": "Радиус слияния душ", + +"simplyswords.unique_effects.soulRend": "§6[Воздаятель душ]§7", +"simplyswords.unique_effects.soulRend.chance": "Шанс раздирания души", +"simplyswords.unique_effects.soulRend.duration": "Длительность раздирания души", +"simplyswords.unique_effects.soulRend.maxStacks": "Макс. суммирования раздирания души", +"simplyswords.unique_effects.soulRend.radius": "Радиус раздирания души", +"simplyswords.unique_effects.soulRend.damageMulti": "Множитель урона раздирания души", +"simplyswords.unique_effects.soulRend.healMulti": "Множитель исцеления раздирания души", +"simplyswords.unique_effects.soulRend.spellScaling": "(Spell Power) множит. урона раздирания души", + +"simplyswords.unique_effects.ferocity": "§6[Спиральный клинок]§7", +"simplyswords.unique_effects.ferocity.chance": "Шанс свирепости", +"simplyswords.unique_effects.ferocity.duration": "Длительность свирепости", +"simplyswords.unique_effects.ferocity.maxStacks": "Макс. суммирования свирепости", +"simplyswords.unique_effects.ferocity.strengthTier": "Усилитель силы свирепости", + +"simplyswords.unique_effects.emberIre": "§6[Янтарный клинок]§7", +"simplyswords.unique_effects.emberIre.chance": "Шанс тлеющей ярости", +"simplyswords.unique_effects.emberIre.duration": "Длительность тлеющей ярости", + +"simplyswords.unique_effects.volcanicFury": "§6[Пламенное сердце]§7", +"simplyswords.unique_effects.volcanicFury.chance": "Шанс бурного пыла", +"simplyswords.unique_effects.volcanicFury.cooldown": "Перезарядка бурного пыла", +"simplyswords.unique_effects.volcanicFury.damage": "Урон бурного пыла", +"simplyswords.unique_effects.volcanicFury.radius": "Радиус бурного пыла", +"simplyswords.unique_effects.volcanicFury.spellScaling": "(Spell Power) множит. урона бурного пыла", + +"simplyswords.unique_effects.storm": "§6[Мьёльнир]§7", +"simplyswords.unique_effects.storm.chance": "Шанс грозы", +"simplyswords.unique_effects.storm.cooldown": "Перезарядка грозы", +"simplyswords.unique_effects.storm.duration": "Длительность грозы", +"simplyswords.unique_effects.storm.frequency": "Частота грозы", +"simplyswords.unique_effects.storm.radius": "Радиус грозы", + +"simplyswords.unique_effects.plague": "§6[Полуторный меч чумы]§7", +"simplyswords.unique_effects.plague.chance": "Шанс чумы", + +"simplyswords.unique_effects.brimstone": "§6[Серный клеймор]§7", +"simplyswords.unique_effects.brimstone.chance": "Шанс серы", + +"simplyswords.unique_effects.bramble": "§6[Терновый шип]§7", +"simplyswords.unique_effects.bramble.Chance": "Шанс тернового шипа", + +"simplyswords.unique_effects.soultether": "§6[Костёр душ]§7", +"simplyswords.unique_effects.soultether.duration": "Длительность узы души", +"simplyswords.unique_effects.soultether.range": "Дальность узы души", +"simplyswords.unique_effects.soultether.radius": "Радиус узы души", +"simplyswords.unique_effects.soultether.duration": "Длительность узы души", +"simplyswords.unique_effects.soultether.igniteDuration": "Длительность узы души/воспламенения", +"simplyswords.unique_effects.soultether.resistanceDuration": "Длительность узы души/сопротивление", + +"simplyswords.unique_effects.frostFury": "§6[Морозная гибель]§7", +"simplyswords.unique_effects.frostFury.chance": "Шанс ледяной ярости", +"simplyswords.unique_effects.frostFury.cooldown": "Перезарядка ледяной ярости", +"simplyswords.unique_effects.frostFury.damage": "Урон ледяной ярости", +"simplyswords.unique_effects.frostFury.duration": "Длительность ледяной ярости", +"simplyswords.unique_effects.frostFury.radius": "Радиус ледяной ярости", +"simplyswords.unique_effects.frostFury.spellScaling": "(Spell Power) множит. урона ледяной ярости", + +"simplyswords.unique_effects.moltenRoar": "§6[Расплавленный клинок]§7", +"simplyswords.unique_effects.moltenRoar.chance": "Шанс плавленного рёва", +"simplyswords.unique_effects.moltenRoar.cooldown": "Перезарядка плавленного рёва", +"simplyswords.unique_effects.moltenRoar.duration": "Длительность плавленного рёва", +"simplyswords.unique_effects.moltenRoar.knockbackStrength": "Сила отбрасывания плавленного рёва", +"simplyswords.unique_effects.moltenRoar.radius": "Радиус плавленного рёва", + +"simplyswords.unique_effects.frostShatter": "§6[Левиафан]§7", +"simplyswords.unique_effects.frostShatter.chance": "Шанс ледяных осколков", +"simplyswords.unique_effects.frostShatter.damage": "Урон ледяных осколков", +"simplyswords.unique_effects.frostShatter.duration": "Длительность ледяных осколков", +"simplyswords.unique_effects.frostShatter.radius": "Радиус ледяных осколков", +"simplyswords.unique_effects.frostShatter.spellScaling": "(Spell Power) множит. урона ледяных осколков", + +"simplyswords.unique_effects.permafrost": "§6[Шепчущий лёд]§7", +"simplyswords.unique_effects.permafrost.cooldown": "Перезарядка вечной мерзлоты", +"simplyswords.unique_effects.permafrost.damage": "Урон вечной мерзлоты", +"simplyswords.unique_effects.permafrost.duration": "Длительность вечной мерзлоты", +"simplyswords.unique_effects.permafrost.radius": "Радиус вечной мерзлоты", +"simplyswords.unique_effects.permafrost.spellScaling": "(Spell Power) множит. урона вечной мерзлоты", + +"simplyswords.unique_effects.arcaneAssault": "§6[Миститист]§7", +"simplyswords.unique_effects.arcaneAssault.chance": "Шанс чародейской атаки", +"simplyswords.unique_effects.arcaneAssault.cooldown": "Перезарядка чародейской атаки", +"simplyswords.unique_effects.arcaneAssault.damage": "Урон чародейской атаки", +"simplyswords.unique_effects.arcaneAssault.duration": "Длительность чародейской атаки", +"simplyswords.unique_effects.arcaneAssault.radius": "Радиус чародейской атаки", +"simplyswords.unique_effects.arcaneAssault.spellScaling": "(Spell Power) множит. урона чародейской атаки", + +"simplyswords.unique_effects.thunderBlitz": "§6[Громовой меч]§7", +"simplyswords.unique_effects.thunderBlitz.chance": "Шанс громового обстрела", +"simplyswords.unique_effects.thunderBlitz.cooldown": "Перезарядка громового обстрела", +"simplyswords.unique_effects.thunderBlitz.damage": "Урон громового обстрела", +"simplyswords.unique_effects.thunderBlitz.radius": "Радиус громового обстрела", +"simplyswords.unique_effects.thunderBlitz.spellScaling": "(Spell Power) множит. урона громового обстрела", + +"simplyswords.unique_effects.stormJolt": "§6[Клинок бури]§7", +"simplyswords.unique_effects.stormJolt.chance": "Шанс грозового удара", +"simplyswords.unique_effects.stormJolt.cooldown": "Перезарядка грозового удара", + +"simplyswords.unique_effects.soulAnguish": "§6[Пьющий клинок]§7", +"simplyswords.unique_effects.soulAnguish.absorptionCap": "Предел поглощения страдания души", +"simplyswords.unique_effects.soulAnguish.cooldown": "Перезарядка страдания души", +"simplyswords.unique_effects.soulAnguish.damage": "Урон страдания души", +"simplyswords.unique_effects.soulAnguish.duration": "Длительность страдания души", +"simplyswords.unique_effects.soulAnguish.heal": "Исцеление страдания души", +"simplyswords.unique_effects.soulAnguish.radius": "Радиус страдания души", +"simplyswords.unique_effects.soulAnguish.range": "Дальность страдания души", +"simplyswords.unique_effects.soulAnguish.spellScaling": "(Spell Power) множит. урона страдания души", + +"simplyswords.unique_effects.shockDeflect": "§6[Буревестник]§7", +"simplyswords.unique_effects.shockDeflect.Cooldown": "Перезарядка шокового отражения", +"simplyswords.unique_effects.shockDeflect.Damage": "Урон шокового отражения", +"simplyswords.unique_effects.shockDeflect.SpellScaling": "(Spell Power) множит. урона шокового отражения", +"simplyswords.unique_effects.shockDeflect.BlockDuration": "Радиус шокового отражения", +"simplyswords.unique_effects.shockDeflect.ParryDuration": "Шанс шокового отражения", + +"simplyswords.unique_effects.shadowmist": "§6[Теневое жало]§7", +"simplyswords.unique_effects.shadowmist.chance": "Шанс теневого тумана", +"simplyswords.unique_effects.shadowmist.cooldown": "Перезарядка теневого тумана", +"simplyswords.unique_effects.shadowmist.damageMulti": "Множитель урона теневого тумана", +"simplyswords.unique_effects.shadowmist.radius": "Радиус теневого тумана", +"simplyswords.unique_effects.shadowmist.blindDuration": "Длительность теневого тумана/ослепления", + +"simplyswords.unique_effects.abyssalStandard": "§6[Знамя бездны]§7", +"simplyswords.unique_effects.abyssalStandard.chance": "Шанс знамени бездны", +"simplyswords.unique_effects.abyssalStandard.cooldown": "Перезарядка знамени бездны", +"simplyswords.unique_effects.abyssalStandard.damage": "Урон знамени бездны", +"simplyswords.unique_effects.abyssalStandard.spellScaling": "(Spell Power) множит. урона знамени бездны", + +"simplyswords.unique_effects.righteousStandard": "§6[Праведное знамя]§7", +"simplyswords.unique_effects.righteousStandard.chance": "Шанс праведного знамени", +"simplyswords.unique_effects.righteousStandard.cooldown": "Перезарядка праведного знамени", +"simplyswords.unique_effects.righteousStandard.damage": "Урон праведного знамени", +"simplyswords.unique_effects.righteousStandard.spellScaling": "(Spell Power) множит. урона праведного знамени", +"simplyswords.unique_effects.righteousStandard.spellScalingHeal": "(Spell Power) множитель ИСЦЕЛЕНИЯ праведного знамени", + +"simplyswords.unique_effects.fatalFlicker": "§6[Шепчущий лёд]§7", +"simplyswords.unique_effects.fatalFlicker.chance": "Шанс смертоносной вспышки", +"simplyswords.unique_effects.fatalFlicker.cooldown": "Перезарядка смертоносной вспышки", +"simplyswords.unique_effects.fatalFlicker.maxStacks": "Макс. суммирования смертоносной вспышки", +"simplyswords.unique_effects.fatalFlicker.radius": "Радиус смертоносной вспышки", +"simplyswords.unique_effects.fatalFlicker.dashVelocity": "Скорость рывка смертоносной вспышки", + +"simplyswords.unique_effects.smoulder": "§6[Янтарная плеть]§7", +"simplyswords.unique_effects.smoulder.cooldown": "Перезарядка тления", +"simplyswords.unique_effects.smoulder.heal": "Процент исцеления тления", +"simplyswords.unique_effects.smoulder.maxStacks": "Макс. суммирования тления", +"simplyswords.unique_effects.smoulder.spellScaling": "(Spell Power) множитель урона тления", + +"simplyswords.unique_effects.waxweave": "§6[Воскоплёт]§7", +"simplyswords.unique_effects.waxweave.cooldown": "Перезарядка выработки воска", +"simplyswords.unique_effects.waxweave.maxStacks": "Макс. суммирования выработки воска", + +"simplyswords.unique_effects.hivemind": "§6[Сердце улья]§7", +"simplyswords.unique_effects.hivemind.cooldown": "Перезарядка коллективного разума", +"simplyswords.unique_effects.hivemind.damage": "Модификатор урона коллективного разума", +"simplyswords.unique_effects.hivemind.duration": "Длительность коллективного разума", + +"simplyswords.unique_effects.celestialSurge": "§6[Клинок звезды]§7", +"simplyswords.unique_effects.celestialSurge.cooldown": "Перезарядка небесного всплеска", +"simplyswords.unique_effects.celestialSurge.duration": "Длительность небесного всплеска", +"simplyswords.unique_effects.celestialSurge.damageModifier": "Множитель урона небесного всплеска", +"simplyswords.unique_effects.celestialSurge.lifestealModifier": "Модификатор небесного всплеска/похищения жизни", +"simplyswords.unique_effects.celestialSurge.stacks": "Суммирования небесного всплеска/спешки", + +"simplyswords.unique_effects.flickerFury": "§6[Фитильный пронзатель]§7", +"simplyswords.unique_effects.flickerFury.cooldown": "Перезарядка вспышки гнева", +"simplyswords.unique_effects.flickerFury.damage": "Модификатор урона вспышки гнева", +"simplyswords.unique_effects.flickerFury.duration": "Длительность вспышки гнева", + +"simplyswords.unique_effects.vortex": "§6[Буря]§7", +"simplyswords.unique_effects.vortex.duration": "Длительность вихря", +"simplyswords.unique_effects.vortex.maxSize": "Макс. размер вихря", +"simplyswords.unique_effects.vortex.maxStacks": "Макс. суммирования вихря", +"simplyswords.unique_effects.vortex.spellScaling": "(Spell Power) множитель урона вихря", + +"simplyswords.unique_effects.voidcaller": "§6[Прилив ужаса]§7", +"simplyswords.unique_effects.voidcaller.compat": "Требуется мод: Eldritch End", +"simplyswords.unique_effects.voidcaller.compat.failTitle": "Недоступен", +"simplyswords.unique_effects.voidcaller.damageModifier": "Модификатор урона призывателя бездны", +"simplyswords.unique_effects.voidcaller.duration": "Длительность призывателя бездны", +"simplyswords.unique_effects.voidcaller.startingTickFrequency": "Частота начала призывателя бездны в тактах", +"simplyswords.unique_effects.voidcaller.corruptionFrequency": "Частота порчи призывателя бездны", +"simplyswords.unique_effects.voidcaller.corruptionPerTick": "Порча в такт призывателя бездны", +"simplyswords.unique_effects.voidcaller.corruptionDuration": "Длительность порчи призывателя бездны", +"simplyswords.unique_effects.voidcaller.corruptionMax": "Макс. количество порчи призывателя бездны", + +"simplyswords.unique_effects.emberstorm": "§6[Огненный ветер]§7", +"simplyswords.unique_effects.emberstorm.cooldown": "Перезарядка бури углей", +"simplyswords.unique_effects.emberstorm.damage": "Урон бури углей", +"simplyswords.unique_effects.emberstorm.spellScaling": "(Spell Power) множитель урона бури углей", +"simplyswords.unique_effects.emberstorm.detonationDamage": "Урон от взрыва бури углей", +"simplyswords.unique_effects.emberstorm.maxHaste": "Макс. количество бури углей/спешки", +"simplyswords.unique_effects.emberstorm.spreadCap": "Предел распространения бури углей", + +"simplyswords.unique_effects.ribbonwrath": "§6[Ленточный тесак]§7", +"simplyswords.unique_effects.ribbonwrath.cooldown": "Перезарядка ленточной ярости", +"simplyswords.unique_effects.ribbonwrath.damageBonusPercent": "Процент бонуса к урону ленточной ярости", +"simplyswords.unique_effects.ribbonwrath.resilienceAmplifier": "Усилитель ленточная ярость/стойкость", + +"simplyswords.unique_effects.magistorm": "§6[Магическая коса]§7", +"simplyswords.unique_effects.magistorm.cooldown": "Перезарядка магической косы", +"simplyswords.unique_effects.magistorm.damage": "Урон магической грозы", +"simplyswords.unique_effects.magistorm.duration": "Длительность магической грозы", +"simplyswords.unique_effects.magistorm.radius": "Радису магической грозы", +"simplyswords.unique_effects.magistorm.repairChance": "Шанс восстановления магической грозы", +"simplyswords.unique_effects.magistorm.spellScaling": "(Spell Power) множитель урона магической грозы", + +"simplyswords.unique_effects.enigma": "§6[Загадка]§7", +"simplyswords.unique_effects.enigma.cooldown": "Перезарядка загадки", +"simplyswords.unique_effects.enigma.chaseRadius": "Радиус преследования загадки", +"simplyswords.unique_effects.enigma.decayRate": "Скорость гниения от загадки", + +"simplyswords.unique_effects.magiblade": "§6[Магический клинок]§7", +"simplyswords.unique_effects.magiblade.cooldown": "Перезарядка магической звуковой скорости", +"simplyswords.unique_effects.magiblade.damageModifier": "Множитель урона магической звуковой скорости", +"simplyswords.unique_effects.magiblade.repelChance": "Шанс отражения магической звуковой скорости", +"simplyswords.unique_effects.magiblade.repelRadius": "Радиус отражения магической звуковой скорости", +"simplyswords.unique_effects.magiblade.sonicDistance": "Расстояние магической звуковой скорости", + +"simplyswords.unique_effects.magislam": "§6[Магическое копьё]§7", +"simplyswords.unique_effects.magislam.cooldown": "Перезарядка магического удара", +"simplyswords.unique_effects.magislam.damageModifier": "Модификатор урона магического удара", +"simplyswords.unique_effects.magislam.radius": "Радиус магического удара", +"simplyswords.unique_effects.magislam.magicChance": "Шанс магии магического удара", +"simplyswords.unique_effects.magislam.magicModifier": "Модификатор магии магического удара", + +"simplyswords.unique_effects.astralShift": "§6[Небесный]§7", +"simplyswords.unique_effects.astralShift.chance": "Шанс избегания таланта: Астральный сдвиг", +"simplyswords.unique_effects.astralShift.cooldown": "Перезарядка таланта: Астральный сдвиг", +"simplyswords.unique_effects.astralShift.damageMax": "Макс. количество урона таланта: Астральный сдвиг", +"simplyswords.unique_effects.astralShift.damageModifier": "Модификатор урона таланта: Астральный сдвиг", +"simplyswords.unique_effects.astralShift.duration": "Продолжительность таланта: Астральный сдвиг", + +"simplyswords.gem_powers": "Рунические и Наполненные таланты самоцветов", +"simplyswords.gem_powers.disabledPowers": "Недоступные таланты самоцветов", +"simplyswords.gem_powers.disabledPowers.desc": "§a[Чёрный список талантов рун]§7\nДобавление таланта в этот перечень запретит доступность Таланта рун.", +"simplyswords.gem_powers.swiftness": "§b[Проворство]§7", +"simplyswords.gem_powers.slow": "§b[Замедление]§7", +"simplyswords.gem_powers.poison": "§b[Отравление]§7", +"simplyswords.gem_powers.freeze": "§b[Заморозка]§7", +"simplyswords.gem_powers.wildfire": "§b[Дикий огонь]§7", +"simplyswords.gem_powers.floating": "§b[Левитация]§7", +"simplyswords.gem_powers.zephyr": "§b[Зефир]§7", +"simplyswords.gem_powers.shielding": "§b[Щит]§7", +"simplyswords.gem_powers.stoneskin": "§b[Каменная кожа]§7", +"simplyswords.gem_powers.trailblaze": "§b[Горящий след]§7", +"simplyswords.gem_powers.weaken": "§b[Ослабление]§7", +"simplyswords.gem_powers.unstable": "§b[Нестабильность]§7", +"simplyswords.gem_powers.activeDefence": "§b[Активная защита]§7", +"simplyswords.gem_powers.frostWard": "§b[Защита от магии льда]§7", +"simplyswords.gem_powers.momentum": "§b[Импульс]§7", +"simplyswords.gem_powers.imbued": "§b[Усиление]§7", +"simplyswords.gem_powers.simplySkills": "Simply Skills: Таланты", +"simplyswords.gem_powers.simplySkills.desc": "§6[Simply Skills: Совместимость со самоцветами]§7\nЭти самоцветы доступны только когда установлен «Simply Skills».", +"simplyswords.gem_powers.simplySkills.condition": "Требуется мод: Simply Skills", +"simplyswords.gem_powers.simplySkills.failTitle": "Недоступен", +"simplyswords.gem_powers.simplySkills.preciseChance": "Шанс таланта: Точность", +"simplyswords.gem_powers.simplySkills.mightyChance": "Шанс таланта: Мощь", +"simplyswords.gem_powers.simplySkills.stealthyChance": "Шанс таланта: Незаметность", +"simplyswords.gem_powers.simplySkills.renewedChance": "Шанс таланта: Обновлённый", +"simplyswords.gem_powers.simplySkills.leapingChance": "Шанс таланта: Скачок", +"simplyswords.gem_powers.simplySkills.spellshieldChance": "Шанс таланта: Магический щит", + +"simplyswords_main.option.status_effects.echoDamage": "Базовый урон от Эхо", + +"simplyswords.config.basic_settings.chance": "Шанс", +"simplyswords.config.basic_settings.chance.desc": "Процентный шанс появления эффекта.", +"simplyswords.config.basic_settings.duration": "Продолжительность", +"simplyswords.config.basic_settings.duration.desc": "Продолжительность эффекта в тактах.", +"simplyswords.config.basic_settings.radius": "Дальность", +"simplyswords.config.basic_settings.radius.desc": "Дальность эффекта в блоках.", +"simplyswords.config.basic_settings.frequency": "Частота", +"simplyswords.config.basic_settings.frequency.desc": "Периодичность появления эффекта '1 раз за Н/Д тактов'", +"simplyswords.config.basic_settings.cooldown": "Перезарядка", +"simplyswords.config.basic_settings.cooldown.desc": "Задержка в тактах после активации эффекта." +"simplyswords.config.basic_settings.chance": "Шанс", +"simplyswords.config.basic_settings.chance.desc": "Процентный шанс появления эффекта.", +"simplyswords.config.basic_settings.duration": "Продолжительность", +"simplyswords.config.basic_settings.duration.desc": "Продолжительность эффекта в тактах.", +"simplyswords.config.basic_settings.radius": "Дальность", +"simplyswords.config.basic_settings.radius.desc": "Дальность эффекта в блоках.", +"simplyswords.config.basic_settings.frequency": "Частота", +"simplyswords.config.basic_settings.frequency.desc": "Периодичность появления эффекта '1 раз за Н/Д тактов'", +"simplyswords.config.basic_settings.cooldown": "Перезарядка", +"simplyswords.config.basic_settings.cooldown.desc": "Задержка в тактах после активации эффекта." }