Skip to content

Commit

Permalink
Attempted Exploit Fix (#209), Adjusted Innate Enchantments, Req Rever…
Browse files Browse the repository at this point in the history
…sion, Version Bump

- Attempted to fix Repair Cost Exploit with Broken and Mechanized Sawblades (#209)
- Adjusted Innate Enchantments in the following ways to bring content more in line with the current iteration of Minecraft Dungeons
 - Added Accelerate I to Purple Storm
 - Added Freezing I to the Snow Bow and Winter's touch
 - Added Fuse Shot I to Firebolt Thrower, Imploding Crossbow
 - Added Gravity I to the Anchor, Wind Bow, Echo of the Valley and Burst Gale Bow
 - Added Knockback I to Boneclub, Bone Cudgel, Claymore, Broadsword, Frost Slayer, Great Axeblade and Heartstealer
 - Added Multishot II to Harp Crossbow
 - Added Power I to Power Bow, Master's Bow, Sabrewing, Red Snake, Slayer Crossbow and Doom Crossbow
 - Added Power II to Elite Power Bow and Guardian Bow
 - Added Punch I to Heavy Crossbow, Harpoon Crossbow and Nautical Crossbow
 - Added Ricochet I to Trick Bow and Green Menace
 - Added Rushdown I to Chill Gale Knife and Tempest Knife
 - Added Thundering I to Lightning Harp Crossbow (originates from crossbow, not arrow. This is intended)
 - Added Wild Rage I to Love Spell Bow
 - Removed Bonus Shot I from Auto Crossbow
 - Removed Radiance I from Love Spell Bow
- Removed explicit breaking with Pehkui, for now
  • Loading branch information
chronosacaria committed Oct 23, 2023
1 parent 78ee090 commit 63bed2f
Show file tree
Hide file tree
Showing 16 changed files with 94 additions and 39 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
loader_version=0.14.21

# Mod Properties
mod_version=8.0.5
mod_version=8.1.0
maven_group=chronosacaria
archives_base_name=mcdw

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ public interface IMcdwEnchantedArrow {
int mcdw$getTempoTheftLevel();
void mcdw$setTempoTheftLevel(int tempoTheftLevel);

int mcdw$getThunderingLevel();
void mcdw$setThunderingLevel(int thunderingLevel);

int mcdw$getVoidShotLevel();
void mcdw$setVoidShotLevel(int voidShotLevel);

Expand Down
13 changes: 13 additions & 0 deletions src/main/java/chronosacaria/mcdw/effects/EnchantmentEffects.java
Original file line number Diff line number Diff line change
Expand Up @@ -761,6 +761,19 @@ public static void applyTempoTheft(LivingEntity tempoEntity, LivingEntity target
}
}

public static void applyThunderingShot(LivingEntity shooter, PersistentProjectileEntity ppe){
int thunderingLevel = ((IMcdwEnchantedArrow)ppe).mcdw$getThunderingLevel();

if (thunderingLevel > 0) {

if (CleanlinessHelper.percentToOccur(CONFIG_CHANCE.get(EnchantmentsID.THUNDERING))) {
electrocuteNearbyEnemies(shooter,
5 * thunderingLevel, 5,
Integer.MAX_VALUE);
}
}
}

public static void applyWildRage(MobEntity ragingEntity, PersistentProjectileEntity ppe) {
int wildRageLevel = ((IMcdwEnchantedArrow)ppe).mcdw$getWildRageLevel();
if (wildRageLevel > 0) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/chronosacaria/mcdw/enums/AxesID.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case AXE_ANCHOR, AXE_AXE -> null;
case AXE_ANCHOR -> Map.of(EnchantsRegistry.GRAVITY, 1);
case AXE_AXE -> null;
case AXE_ENCRUSTED_ANCHOR -> Map.of(EnchantsRegistry.GRAVITY, 1, EnchantsRegistry.JUNGLE_POISON, 1);
case AXE_FIREBRAND -> Map.of(Enchantments.FIRE_ASPECT, 1);
case AXE_HIGHLAND -> Map.of(EnchantsRegistry.STUNNING, 1);
Expand Down
16 changes: 10 additions & 6 deletions src/main/java/chronosacaria/mcdw/enums/BowsID.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,21 +153,25 @@ public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case BOW_ANCIENT_BOW -> Map.of(EnchantsRegistry.DYNAMO, 1);
case BOW_BONEBOW -> Map.of(EnchantsRegistry.GROWING, 1);
case BOW_BUBBLE_BOW, BOW_SNOW_BOW, BOW_SOUL_BOW, BOW_TRICKBOW, BOW_TWISTING_VINE_BOW, BOW_WEEPING_VINE_BOW, BOW_WIND_BOW, BOW_WINTERS_TOUCH, BOW_POWER_BOW, BOW_HUNTING_BOW -> null;
case BOW_BUBBLE_BURSTER, BOW_ECHO_OF_THE_VALLEY -> Map.of(EnchantsRegistry.RICOCHET, 1);
case BOW_BURST_GALE_BOW -> Map.of(EnchantsRegistry.CHARGE, 1);
case BOW_BUBBLE_BOW, BOW_SOUL_BOW, BOW_TWISTING_VINE_BOW, BOW_WEEPING_VINE_BOW, BOW_HUNTING_BOW -> null;
case BOW_SNOW_BOW, BOW_WINTERS_TOUCH -> Map.of(EnchantsRegistry.FREEZING, 1);
case BOW_BUBBLE_BURSTER, BOW_TRICKBOW -> Map.of(EnchantsRegistry.RICOCHET, 1);
case BOW_ECHO_OF_THE_VALLEY -> Map.of(EnchantsRegistry.GRAVITY, 1, EnchantsRegistry.RICOCHET, 1);
case BOW_BURST_GALE_BOW -> Map.of(EnchantsRegistry.CHARGE, 1, EnchantsRegistry.GRAVITY, 1);
case BOW_CALL_OF_THE_VOID -> Map.of(EnchantsRegistry.FUSE_SHOT, 1, EnchantsRegistry.VOID_SHOT, 1);
case BOW_ELITE_POWER_BOW, BOW_MASTERS_BOW -> Map.of(Enchantments.POWER, 1);
case BOW_GREEN_MENACE -> Map.of(EnchantsRegistry.POISON_CLOUD, 1);
case BOW_ELITE_POWER_BOW -> Map.of(Enchantments.POWER, 2);
case BOW_GREEN_MENACE -> Map.of(EnchantsRegistry.RICOCHET, 1, EnchantsRegistry.POISON_CLOUD, 1);
case BOW_HAUNTED_BOW, BOW_TWIN_BOW -> Map.of(EnchantsRegistry.BONUS_SHOT, 1);
case BOW_HUNTERS_PROMISE -> Map.of(EnchantsRegistry.REPLENISH, 1);
case BOW_LOST_SOULS -> Map.of(Enchantments.MULTISHOT, 1);
case BOW_NOCTURNAL_BOW, BOW_SHIVERING_BOW -> Map.of(EnchantsRegistry.TEMPO_THEFT, 1);
case BOW_PHANTOM_BOW -> Map.of(EnchantsRegistry.PHANTOMS_MARK, 1, Enchantments.POWER, 1);
case BOW_PINK_SCOUNDREL -> Map.of(EnchantsRegistry.RICOCHET, 1, EnchantsRegistry.WILD_RAGE, 1);
case BOW_SABREWING -> Map.of(EnchantsRegistry.RADIANCE, 1);
case BOW_POWER_BOW, BOW_MASTERS_BOW -> Map.of(Enchantments.POWER, 1);
case BOW_SABREWING -> Map.of(Enchantments.POWER, 1, EnchantsRegistry.RADIANCE, 1);
case BOW_VOID_BOW -> Map.of(EnchantsRegistry.VOID_SHOT, 1);
case BOW_WEB_BOW -> Map.of(EnchantsRegistry.COBWEB_SHOT, 1);
case BOW_WIND_BOW -> Map.of(EnchantsRegistry.GRAVITY, 1);
};
}

Expand Down
22 changes: 13 additions & 9 deletions src/main/java/chronosacaria/mcdw/enums/CrossbowsID.java
Original file line number Diff line number Diff line change
Expand Up @@ -150,21 +150,25 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case CROSSBOW_AUTO_CROSSBOW -> Map.of(EnchantsRegistry.ACCELERATE, 1, EnchantsRegistry.BONUS_SHOT, 1);
case CROSSBOW_AZURE_SEEKER, CROSSBOW_BURST_CROSSBOW, CROSSBOW_COG_CROSSBOW, CROSSBOW_DUAL_CROSSBOW, CROSSBOW_HARPOON_CROSSBOW, CROSSBOW_HEAVY_CROSSBOW, CROSSBOW_RAPID_CROSSBOW, CROSSBOW_SPELLBOUND_CROSSBOW -> null;
case CROSSBOW_AUTO_CROSSBOW -> Map.of(EnchantsRegistry.ACCELERATE, 1);
case CROSSBOW_AZURE_SEEKER, CROSSBOW_BURST_CROSSBOW, CROSSBOW_COG_CROSSBOW, CROSSBOW_DUAL_CROSSBOW, CROSSBOW_RAPID_CROSSBOW, CROSSBOW_SPELLBOUND_CROSSBOW -> null;
case CROSSBOW_BABY_CROSSBOW -> Map.of(EnchantsRegistry.GROWING, 1);
case CROSSBOW_BUTTERFLY_CROSSBOW -> Map.of(EnchantsRegistry.BONUS_SHOT, 1);
case CROSSBOW_CORRUPTED_CROSSBOW -> Map.of(EnchantsRegistry.DYNAMO, 1);
case CROSSBOW_DOOM_CROSSBOW -> Map.of(Enchantments.PUNCH, 1);
case CROSSBOW_DOOM_CROSSBOW -> Map.of(Enchantments.PUNCH, 1, Enchantments.POWER, 1);
case CROSSBOW_HARP_CROSSBOW -> Map.of(Enchantments.MULTISHOT, 2);
case CROSSBOW_HEAVY_CROSSBOW, CROSSBOW_HARPOON_CROSSBOW -> Map.of(Enchantments.PUNCH, 1);
case CROSSBOW_EXPLODING_CROSSBOW -> Map.of(EnchantsRegistry.FUSE_SHOT, 1);
case CROSSBOW_FERAL_SOUL_CROSSBOW, CROSSBOW_SOUL_CROSSBOW, CROSSBOW_SOUL_HUNTER_CROSSBOW -> Map.of(EnchantsRegistry.ENIGMA_RESONATOR, 1);
case CROSSBOW_FIREBOLT_THROWER -> Map.of(EnchantsRegistry.CHAIN_REACTION, 1);
case CROSSBOW_HARP_CROSSBOW, CROSSBOW_SCATTER_CROSSBOW -> Map.of(Enchantments.MULTISHOT, 1);
case CROSSBOW_IMPLODING_CROSSBOW, CROSSBOW_VOIDCALLER_CROSSBOW -> Map.of(EnchantsRegistry.GRAVITY, 1);
case CROSSBOW_LIGHTNING_HARP_CROSSBOW -> Map.of(Enchantments.MULTISHOT, 1, EnchantsRegistry.RICOCHET, 1);
case CROSSBOW_NAUTICAL_CROSSBOW, CROSSBOW_PRIDE_OF_THE_PIGLINS, CROSSBOW_THE_SLICER -> Map.of(Enchantments.PIERCING, 1);
case CROSSBOW_FIREBOLT_THROWER -> Map.of(EnchantsRegistry.FUSE_SHOT, 1, EnchantsRegistry.CHAIN_REACTION, 1);
case CROSSBOW_SCATTER_CROSSBOW -> Map.of(Enchantments.MULTISHOT, 1);
case CROSSBOW_IMPLODING_CROSSBOW -> Map.of(EnchantsRegistry.FUSE_SHOT, 1, EnchantsRegistry.GRAVITY, 1);
case CROSSBOW_VOIDCALLER_CROSSBOW -> Map.of(EnchantsRegistry.GRAVITY, 1);
case CROSSBOW_LIGHTNING_HARP_CROSSBOW -> Map.of(Enchantments.MULTISHOT, 1, EnchantsRegistry.RICOCHET, 1, EnchantsRegistry.THUNDERING, 1);
case CROSSBOW_NAUTICAL_CROSSBOW -> Map.of(Enchantments.PIERCING, 1, Enchantments.PUNCH, 1);
case CROSSBOW_PRIDE_OF_THE_PIGLINS, CROSSBOW_THE_SLICER -> Map.of(Enchantments.PIERCING, 1);
case CROSSBOW_SHADOW_CROSSBOW -> Map.of(EnchantsRegistry.SHADOW_SHOT, 1);
case CROSSBOW_SLAYER_CROSSBOW -> Map.of(EnchantsRegistry.RICOCHET, 1);
case CROSSBOW_SLAYER_CROSSBOW -> Map.of(Enchantments.POWER, 1, EnchantsRegistry.RICOCHET, 1);
case CROSSBOW_VEILED_CROSSBOW -> Map.of(EnchantsRegistry.SHADOW_SHOT, 1, EnchantsRegistry.SHADOW_BARB, 1);
};
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/chronosacaria/mcdw/enums/DaggersID.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ public String[] getRepairIngredient() {
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case DAGGER_BACKSTABBER -> Map.of(EnchantsRegistry.AMBUSH, 1);
case DAGGER_CHILL_GALE_KNIFE, DAGGER_FANGS_OF_FROST -> Map.of(EnchantsRegistry.FREEZING, 1);
case DAGGER_DAGGER, DAGGER_TEMPEST_KNIFE -> null;
case DAGGER_CHILL_GALE_KNIFE -> Map.of(EnchantsRegistry.RUSHDOWN, 1, EnchantsRegistry.FREEZING, 1);
case DAGGER_FANGS_OF_FROST -> Map.of(EnchantsRegistry.FREEZING, 1);
case DAGGER_DAGGER -> null;
case DAGGER_TEMPEST_KNIFE -> Map.of(EnchantsRegistry.RUSHDOWN, 1);
case DAGGER_MOON -> Map.of(EnchantsRegistry.ENIGMA_RESONATOR, 1);
case DAGGER_RESOLUTE_TEMPEST_KNIFE -> Map.of(EnchantsRegistry.COMMITTED, 1 , EnchantsRegistry.RUSHDOWN, 1);
case DAGGER_SHEAR_DAGGER -> Map.of(EnchantsRegistry.SWIRLING, 1);
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/chronosacaria/mcdw/enums/HammersID.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import chronosacaria.mcdw.registries.EnchantsRegistry;
import chronosacaria.mcdw.registries.ItemsRegistry;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolMaterial;
Expand Down Expand Up @@ -111,9 +112,10 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case HAMMER_BONECLUB, HAMMER_GREAT_HAMMER, HAMMER_MACE -> null;
case HAMMER_BONECLUB -> Map.of(Enchantments.KNOCKBACK, 1);
case HAMMER_GREAT_HAMMER, HAMMER_MACE -> null;
case HAMMER_FLAIL -> Map.of(EnchantsRegistry.CHAINS, 1);
case HAMMER_BONE_CUDGEL -> Map.of(EnchantsRegistry.ILLAGERS_BANE, 1);
case HAMMER_BONE_CUDGEL -> Map.of(Enchantments.KNOCKBACK, 1, EnchantsRegistry.ILLAGERS_BANE, 1);
case HAMMER_GRAVITY -> Map.of(EnchantsRegistry.GRAVITY, 1);
case HAMMER_STORMLANDER -> Map.of(EnchantsRegistry.THUNDERING, 1);
case HAMMER_SUNS_GRACE -> Map.of(EnchantsRegistry.RADIANCE, 1);
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/chronosacaria/mcdw/enums/LongbowsID.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import chronosacaria.mcdw.registries.ItemsRegistry;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolMaterial;
Expand Down Expand Up @@ -123,8 +124,9 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case BOW_GUARDIAN_BOW, BOW_LONGBOW -> null;
case BOW_RED_SNAKE -> Map.of(EnchantsRegistry.FUSE_SHOT, 1);
case BOW_LONGBOW -> null;
case BOW_GUARDIAN_BOW -> Map.of(Enchantments.POWER, 2);
case BOW_RED_SNAKE -> Map.of(Enchantments.POWER, 1, EnchantsRegistry.FUSE_SHOT, 1);
};
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/chronosacaria/mcdw/enums/ShortbowsID.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case BOW_LOVE_SPELL_BOW -> Map.of(EnchantsRegistry.RADIANCE, 1);
case BOW_MECHANICAL_SHORTBOW -> Map.of(EnchantsRegistry.ACCELERATE, 1);
case BOW_PURPLE_STORM,BOW_SHORTBOW -> null;
case BOW_LOVE_SPELL_BOW -> Map.of(EnchantsRegistry.WILD_RAGE, 1);
case BOW_MECHANICAL_SHORTBOW, BOW_PURPLE_STORM -> Map.of(EnchantsRegistry.ACCELERATE, 1);
case BOW_SHORTBOW -> null;
};
}

Expand Down
12 changes: 7 additions & 5 deletions src/main/java/chronosacaria/mcdw/enums/SwordsID.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,14 +128,16 @@ public String[] getRepairIngredient() {
@Override
public Map<Enchantment, Integer> getInnateEnchantments() {
return switch (this) {
case SWORD_BEESTINGER, SWORD_BROKEN_SAWBLADE, SWORD_CLAYMORE, SWORD_CORAL_BLADE, SWORD_CUTLASS, SWORD_DIAMOND_SWORD_VAR, SWORD_IRON_SWORD_VAR, SWORD_KATANA, SWORD_OBSIDIAN_CLAYMORE, SWORD_RAPIER -> null;
case SWORD_BROADSWORD -> Map.of(EnchantsRegistry.SWIRLING, 1);
case SWORD_BEESTINGER, SWORD_BROKEN_SAWBLADE, SWORD_CORAL_BLADE, SWORD_CUTLASS, SWORD_DIAMOND_SWORD_VAR, SWORD_IRON_SWORD_VAR, SWORD_KATANA, SWORD_OBSIDIAN_CLAYMORE, SWORD_RAPIER -> null;
case SWORD_CLAYMORE -> Map.of(Enchantments.KNOCKBACK, 1);
case SWORD_BROADSWORD -> Map.of(Enchantments.KNOCKBACK, 1, EnchantsRegistry.SWIRLING, 1);
case SWORD_DANCERS_SWORD -> Map.of(EnchantsRegistry.RAMPAGING, 1);
case SWORD_DARK_KATANA -> Map.of(EnchantsRegistry.SMITING, 1);
case SWORD_FREEZING_FOIL, SWORD_FROST_SLAYER -> Map.of(EnchantsRegistry.FREEZING, 1);
case SWORD_GREAT_AXEBLADE -> Map.of(EnchantsRegistry.DYNAMO, 1);
case SWORD_FREEZING_FOIL -> Map.of(EnchantsRegistry.FREEZING, 1);
case SWORD_FROST_SLAYER -> Map.of(Enchantments.KNOCKBACK, 1, EnchantsRegistry.FREEZING, 1);
case SWORD_GREAT_AXEBLADE -> Map.of(Enchantments.KNOCKBACK, 1, EnchantsRegistry.DYNAMO, 1);
case SWORD_HAWKBRAND, SWORD_MASTERS_KATANA, SWORD_SINISTER -> Map.of(EnchantsRegistry.CRITICAL_HIT, 1);
case SWORD_HEARTSTEALER -> Map.of(EnchantsRegistry.LEECHING, 1);
case SWORD_HEARTSTEALER -> Map.of(Enchantments.KNOCKBACK, 1, EnchantsRegistry.LEECHING, 1);
case SWORD_MECHANIZED_SAWBLADE -> Map.of(Enchantments.FIRE_ASPECT, 1);
case SWORD_NAMELESS_BLADE -> Map.of(EnchantsRegistry.WEAKENING, 1);
case SWORD_SPONGE_STRIKER -> Map.of(EnchantsRegistry.ENIGMA_RESONATOR, 1);
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/chronosacaria/mcdw/mixin/mcdw/BowItemMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ public void setLivingEntity(LivingEntity livingEntity){
if (tempoTheftLevel > 0) {
((IMcdwEnchantedArrow)ppe).mcdw$setTempoTheftLevel(tempoTheftLevel);
}
//int thunderingLevel = EnchantmentHelper.getLevel(EnchantsRegistry.THUNDERING, stack);
//if (thunderingLevel > 0) {
// ((IMcdwEnchantedArrow)ppe).mcdw$setThunderingLevel(thunderingLevel);
//}
int voidShotLevel = EnchantmentHelper.getLevel(EnchantsRegistry.VOID_SHOT, stack);
if (voidShotLevel > 0) {
((IMcdwEnchantedArrow)ppe).mcdw$setVoidShotLevel(voidShotLevel);
Expand All @@ -162,16 +166,17 @@ public void setLivingEntity(LivingEntity livingEntity){
this.setLivingEntity(user);
}

@SuppressWarnings("lossy-conversions")
@ModifyArg(method = "onStoppedUsing", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BowItem;getPullProgress(I)F"), index = 0)
private int mcdw$acceleratedPullProgress(int value){
ItemStack bowStack = livingEntity.getActiveItem();

if (bowStack.getItem() instanceof McdwShortbow mcdwShortBow) {
value /= (int) (mcdwShortBow.getDrawSpeed() / 20);
value /= (mcdwShortBow.getDrawSpeed() / 20);
} else if (bowStack.getItem() instanceof McdwLongbow mcdwLongBow) {
value /= (int) (mcdwLongBow.getDrawSpeed() / 20);
value /= (mcdwLongBow.getDrawSpeed() / 20);
} else if (bowStack.getItem() instanceof McdwBow mcdwBow) {
value /= (int) (mcdwBow.getDrawSpeed() / 20);
value /= (mcdwBow.getDrawSpeed() / 20);
}

if (Mcdw.CONFIG.mcdwEnchantmentsConfig.ENABLE_ENCHANTMENTS.get(EnchantmentsID.ACCELERATE)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ public class CrossbowItemMixin {
if (tempoTheftLevel > 0) {
((IMcdwEnchantedArrow)ppe).mcdw$setTempoTheftLevel(tempoTheftLevel);
}
int thunderingLevel = EnchantmentHelper.getLevel(EnchantsRegistry.THUNDERING, crossbow);
if (thunderingLevel > 0) {
((IMcdwEnchantedArrow)ppe).mcdw$setThunderingLevel(thunderingLevel);
}
int voidShotLevel = EnchantmentHelper.getLevel(EnchantsRegistry.VOID_SHOT, crossbow);
if (voidShotLevel > 0) {
((IMcdwEnchantedArrow)ppe).mcdw$setVoidShotLevel(voidShotLevel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@ public abstract class ItemStackMixin {
if (itemStack.getItem() == ItemsRegistry.SWORD_ITEMS.get(SwordsID.SWORD_MECHANIZED_SAWBLADE) && getDamage() + amount >= getMaxDamage()) {
NbtList oldEnchantments = this.getEnchantments().copy();
ItemStack brokenSawblade = new ItemStack(ItemsRegistry.SWORD_ITEMS.get(SwordsID.SWORD_BROKEN_SAWBLADE));
int oldRepairCost = itemStack.getRepairCost();
brokenSawblade.setSubNbt(ItemStack.ENCHANTMENTS_KEY, oldEnchantments);
CleanlinessHelper.mcdw$dropItem(entity, brokenSawblade);
Map<Enchantment, Integer> brokenSawbladeEnchantments = EnchantmentHelper.get(brokenSawblade);
brokenSawbladeEnchantments.remove(Enchantments.FIRE_ASPECT);
EnchantmentHelper.set(brokenSawbladeEnchantments, brokenSawblade);
brokenSawblade.setRepairCost(oldRepairCost);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public abstract class PersistentProjectileEntityMixin implements IMcdwEnchantedA
@Unique
private int tempoTheftLevel = 0;
@Unique
private int thunderingLevel = 0;
@Unique
private int voidShotLevel = 0;
@Unique
private int wildRageLevel = 0;
Expand Down Expand Up @@ -244,6 +246,16 @@ public abstract class PersistentProjectileEntityMixin implements IMcdwEnchantedA
this.tempoTheftLevel = tempoTheftLevel;
}

@Override
public int mcdw$getThunderingLevel() {
return thunderingLevel;
}

@Override
public void mcdw$setThunderingLevel(int thunderingLevel) {
this.thunderingLevel = thunderingLevel;
}

@Override
public int mcdw$getVoidShotLevel() {
return voidShotLevel;
Expand Down Expand Up @@ -338,9 +350,11 @@ public abstract class PersistentProjectileEntityMixin implements IMcdwEnchantedA
EnchantmentEffects.applyRicochet(shooter, target, persProjEntity);
if (Mcdw.CONFIG.mcdwEnchantmentsConfig.ENABLE_ENCHANTMENTS.get(EnchantmentsID.TEMPO_THEFT))
EnchantmentEffects.applyTempoTheft(shooter, target, persProjEntity);
if (Mcdw.CONFIG.mcdwEnchantmentsConfig.ENABLE_ENCHANTMENTS.get(EnchantmentsID.THUNDERING))
EnchantmentEffects.applyThunderingShot(shooter, persProjEntity);
if (Mcdw.CONFIG.mcdwEnchantmentsConfig.ENABLE_ENCHANTMENTS.get(EnchantmentsID.WILD_RAGE)) {
if (!(target instanceof EnderDragonEntity || target instanceof WardenEntity) && target instanceof MobEntity mobEntity) {
EnchantmentEffects.applyWildRage(mobEntity, persProjEntity);
if (!(target instanceof EnderDragonEntity || target instanceof WardenEntity) && target instanceof MobEntity) {
EnchantmentEffects.applyWildRage((MobEntity) target, persProjEntity);
}
}
}
Expand Down
3 changes: 0 additions & 3 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,5 @@
"fabric": "*",
"minecraft": ">=1.20.0",
"cloth-config2": ">=11.0.0.1"
},
"breaks": {
"pehkui": "*"
}
}

0 comments on commit 63bed2f

Please sign in to comment.