1.21.9 support for treasures.yml, experience.yml, fishing_treasures.yml, and settings for mannequins and a fix for armor stands

This commit is contained in:
nossr50
2025-10-05 12:27:20 -07:00
parent c958a86aa3
commit 07d18e2eba
8 changed files with 77 additions and 12 deletions

View File

@@ -201,6 +201,10 @@ public class ExperienceConfig extends BukkitConfig {
return config.getBoolean("ExploitFix.PreventArmorStandInteraction", true);
}
public boolean isMannequinInteractionPrevented() {
return config.getBoolean("ExploitFix.PreventMannequinInteraction", true);
}
public boolean isFishingExploitingPrevented() {
return config.getBoolean("ExploitFix.Fishing", true);
}

View File

@@ -34,6 +34,7 @@ import com.gmail.nossr50.util.skills.CombatUtils;
import com.gmail.nossr50.util.skills.ProjectileUtils;
import com.gmail.nossr50.worldguard.WorldGuardManager;
import com.gmail.nossr50.worldguard.WorldGuardUtils;
import java.util.Locale;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -352,11 +353,13 @@ public class EntityListener implements Listener {
return;
}
// Don't process this event for marked entities, for players this is handled above,
// However, for entities, we do not wanna cancel this event to allow plugins to observe changes
// properly
if (ExperienceConfig.getInstance().isArmorStandInteractionPrevented()
&& attacker.getType().toString().toLowerCase(Locale.ENGLISH).equals("armor_stand")) {
return;
}
if (event.getEntity() instanceof ArmorStand) {
if (ExperienceConfig.getInstance().isMannequinInteractionPrevented()
&& attacker.getType().toString().toLowerCase(Locale.ENGLISH).equals("mannequin")) {
return;
}

View File

@@ -1408,6 +1408,7 @@ public class MaterialMapStore {
blackList.add("dropper");
blackList.add("hopper");
blackList.add("armor_stand");
blackList.add("mannequin");
}
private void fillAbilityBlackList() {

View File

@@ -58,7 +58,7 @@ import org.jetbrains.annotations.Nullable;
public final class CombatUtils {
private static final ThreadLocal<Boolean> IN_MCMO_DAMAGE
private static final ThreadLocal<Boolean> IN_MCMMO_DAMAGE
= ThreadLocal.withInitial(() -> false);
@@ -75,14 +75,14 @@ public final class CombatUtils {
*/
public static void safeDealDamage(@NotNull LivingEntity target, double amount,
@Nullable Entity attacker) {
boolean prev = IN_MCMO_DAMAGE.get();
boolean prev = IN_MCMMO_DAMAGE.get();
if (prev || target.isDead()) {
return;
}
try {
IN_MCMO_DAMAGE.set(true);
IN_MCMMO_DAMAGE.set(true);
if (!hasIgnoreDamageMetadata(target)) {
applyIgnoreDamageMetadata(target);
}
@@ -93,7 +93,7 @@ public final class CombatUtils {
target.damage(amount);
}
} finally {
IN_MCMO_DAMAGE.set(false);
IN_MCMMO_DAMAGE.set(false);
if (hasIgnoreDamageMetadata(target)) {
removeIgnoreDamageMetadata(target);
}

View File

@@ -30,6 +30,7 @@ ExploitFix:
PistonCheating: true
SnowGolemExcavation: true
PreventArmorStandInteraction: true
PreventMannequinInteraction: true
# This include NPCs from stuff like Citizens, this is not a setting for Vanilla Minecraft Villagers (Which can be considered NPCs)
# mcMMO normally doesn't process attacks against an Entity if it is an NPC from another plugin
# Of course, mcMMO doesn't know for sure whether something is an NPC, it checks a few known things, see our source code to see how
@@ -553,6 +554,7 @@ Experience_Values:
String: 1.8
Other: 1.5
Smelting:
Copper_Nugget: 85
Raw_Copper: 75
Deepslate_Redstone_Ore: 30
Deepslate_Copper_Ore: 100
@@ -683,3 +685,5 @@ Experience_Values:
Camel: 1.2
Bogged: 2.0
Breeze: 4.0
Armor_Stand: 0.0
Mannequin: 0.0

View File

@@ -63,6 +63,26 @@ Fishing:
Amount: 1
XP: 200
Rarity: UNCOMMON
COPPER_SWORD:
Amount: 1
XP: 200
Rarity: UNCOMMON
COPPER_SHOVEL:
Amount: 1
XP: 200
Rarity: UNCOMMON
COPPER_PICKAXE:
Amount: 1
XP: 200
Rarity: UNCOMMON
COPPER_AXE:
Amount: 1
XP: 200
Rarity: UNCOMMON
COPPER_HOE:
Amount: 1
XP: 200
Rarity: UNCOMMON
GOLDEN_SWORD:
Amount: 1
XP: 200
@@ -143,6 +163,22 @@ Fishing:
Amount: 1
XP: 200
Rarity: RARE
COPPER_BOOTS:
Amount: 1
XP: 200
Rarity: COMMON
COPPER_HELMET:
Amount: 1
XP: 200
Rarity: COMMON
COPPER_LEGGINGS:
Amount: 1
XP: 200
Rarity: COMMON
COPPER_CHESTPLATE:
Amount: 1
XP: 200
Rarity: COMMON
IRON_BOOTS:
Amount: 1
XP: 200

View File

@@ -296,3 +296,11 @@ Hylian_Luck:
Standard_Mode: 0
Retro_Mode: 0
Drops_From: [Pots]
COPPER_NUGGET:
Amount: 1
XP: 5
Drop_Chance: 100.0
Level_Requirement:
Standard_Mode: 0
Retro_Mode: 0
Drops_From: [Pots]