Skip to content

Commit 1005721

Browse files
committed
i was drunk when i wrote this but it does work now
1 parent 33acf0e commit 1005721

File tree

5 files changed

+69
-20
lines changed

5 files changed

+69
-20
lines changed

Diff for: src/main/java/me/ryleu/armornerf/ArmorNerf.java

+20-17
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package me.ryleu.armornerf;
22

3-
import me.ryleu.armornerf.formula.FlatToughnessFormula;
4-
import me.ryleu.armornerf.formula.LargeToughnessFormula;
5-
import me.ryleu.armornerf.formula.ToughnessDisabledFormula;
6-
import me.ryleu.armornerf.formula.VanillaFormula;
3+
import me.ryleu.armornerf.formula.*;
74
import net.fabricmc.api.ModInitializer;
85
import org.slf4j.Logger;
96
import org.slf4j.LoggerFactory;
@@ -12,11 +9,12 @@
129

1310
public class ArmorNerf implements ModInitializer {
1411
public static final String MOD_ID = "armor-nerf";
15-
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
1612
public static final me.ryleu.armornerf.ArmorNerfConfig CONFIG = me.ryleu.armornerf.ArmorNerfConfig.createAndLoad();
1713

18-
static ArmorFormula armorFormula = new VanillaFormula();
19-
static HashMap<String, ArmorFormula> formulaRegistry = new HashMap<>();
14+
private static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
15+
16+
private static ArmorFormula armorFormula = new VanillaFormula();
17+
private static final HashMap<String, ArmorFormula> formulaRegistry = new HashMap<>();
2018

2119
public static ArmorFormula getToughnessFormula() {
2220
return armorFormula;
@@ -28,7 +26,7 @@ public static ArmorFormula getToughnessFormula() {
2826
* @return Whether it is registered
2927
*/
3028
public static boolean isRegistered(String id) {
31-
return formulaRegistry == null || formulaRegistry.containsKey(id);
29+
return formulaRegistry.containsKey(id);
3230
}
3331

3432
/**
@@ -46,15 +44,20 @@ public void onInitialize() {
4644
registerFormula("toughness_disabled", new ToughnessDisabledFormula());
4745
registerFormula("flat_toughness", new FlatToughnessFormula());
4846
registerFormula("large_toughness", new LargeToughnessFormula());
47+
registerFormula("debug", new DebugFormula());
48+
49+
setArmorFormula(CONFIG.armorFormula());
50+
51+
CONFIG.subscribeToArmorFormula(this::setArmorFormula);
52+
}
4953

50-
CONFIG.subscribeToArmorFormula((String newFormulaId) -> {
51-
ArmorFormula newFormula = formulaRegistry.get(newFormulaId);
52-
if (newFormula == null) {
53-
CONFIG.armorFormula("toughness_disabled");
54-
} else {
55-
armorFormula = newFormula;
56-
}
57-
});
58-
LOGGER.info("Armor and protection nerfed.");
54+
private void setArmorFormula(String newFormulaId) {
55+
ArmorFormula newFormula = formulaRegistry.get(newFormulaId);
56+
if (newFormula == null) {
57+
CONFIG.armorFormula("toughness_disabled");
58+
} else {
59+
LOGGER.info("Set formula to {}", newFormulaId);
60+
armorFormula = newFormula;
61+
}
5962
}
6063
}

Diff for: src/main/java/me/ryleu/armornerf/ConfigModel.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
import static me.ryleu.armornerf.ArmorNerf.MOD_ID;
66

7+
@SuppressWarnings("unused")
78
@Modmenu(modId = MOD_ID)
89
@Config(name = MOD_ID, wrapperName = "ArmorNerfConfig")
910
public class ConfigModel {
1011
@RangeConstraint(min = 0F, max = 1F)
11-
public float armorPercentage = 0.4F;
12+
public float armorPercentage = 0.5F;
1213

1314
// at 0.0625, full prot 4 would provide 100% damage reduction. realistically no one should be setting it that high
1415
@RangeConstraint(min = 0F, max = 0.0625F)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package me.ryleu.armornerf.formula;
2+
3+
import me.ryleu.armornerf.ArmorFormula;
4+
import net.minecraft.entity.LivingEntity;
5+
import net.minecraft.entity.damage.DamageSource;
6+
import net.minecraft.text.Text;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
public class DebugFormula extends ArmorFormula {
11+
private static final Logger LOGGER = LoggerFactory.getLogger(DebugFormula.class);
12+
13+
private final FlatToughnessFormula flatToughnessFormula = new FlatToughnessFormula();
14+
private final LargeToughnessFormula largeToughnessFormula = new LargeToughnessFormula();
15+
private final ToughnessDisabledFormula toughnessDisabledFormula = new ToughnessDisabledFormula();
16+
private final VanillaFormula vanillaFormula = new VanillaFormula();
17+
18+
@Override
19+
public float calculate(LivingEntity armorWearer, float damageAmount, DamageSource damageSource, float armor, float armorToughness) {
20+
Text name = armorWearer.getCustomName();
21+
LOGGER.debug(
22+
"!![{},{},{},{},{},{}]",
23+
name,
24+
damageAmount,
25+
flatToughnessFormula.calculate(armorWearer, damageAmount, damageSource, armor, armorToughness),
26+
largeToughnessFormula.calculate(armorWearer, damageAmount, damageSource, armor, armorToughness),
27+
toughnessDisabledFormula.calculate(armorWearer, damageAmount, damageSource, armor, armorToughness),
28+
vanillaFormula.calculate(armorWearer, damageAmount, damageSource, armor, armorToughness)
29+
);
30+
31+
return 0;
32+
}
33+
34+
public DebugFormula() {
35+
LOGGER.debug("!![name,none,flat,large,disabled,vanilla]");
36+
}
37+
}

Diff for: src/main/java/me/ryleu/armornerf/formula/VanillaFormula.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public float calculate(LivingEntity armorWearer, float damageAmount, DamageSourc
1212

1313
float adjustedToughness = 2.0F + armorToughness / 4.0F;
1414

15-
// calculate armor toughness effectiveness reduction\
15+
// calculate armor toughness effectiveness reduction
1616
float armorValue = Math.max(armor - damageAmount / adjustedToughness, armor * 0.2F);
1717

1818
// whether to cap armor at a full bar -- will make many modded armors far more effective

Diff for: src/main/java/me/ryleu/armornerf/mixin/DamageUtilMixin.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
package me.ryleu.armornerf.mixin;
22

3+
import me.ryleu.armornerf.ArmorFormula;
34
import me.ryleu.armornerf.ArmorNerf;
45
import net.minecraft.entity.DamageUtil;
56
import net.minecraft.entity.LivingEntity;
67
import net.minecraft.entity.damage.DamageSource;
78
import net.minecraft.util.math.MathHelper;
9+
import org.slf4j.LoggerFactory;
10+
import org.slf4j.Logger;
811
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.Unique;
913
import org.spongepowered.asm.mixin.injection.At;
1014
import org.spongepowered.asm.mixin.injection.Inject;
1115
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1216

1317
@SuppressWarnings("unused")
1418
@Mixin(DamageUtil.class)
1519
public class DamageUtilMixin {
20+
@Unique
21+
private static final Logger LOGGER = LoggerFactory.getLogger(DamageUtilMixin.class);
22+
1623
@Inject(
1724
at = @At(value = "RETURN"),
1825
method = "getDamageLeft(Lnet/minecraft/entity/LivingEntity;FLnet/minecraft/entity/damage/DamageSource;FF)F",
@@ -21,7 +28,8 @@ public class DamageUtilMixin {
2128
private static void modifyGetDamageLeft(
2229
LivingEntity armorWearer, float damageAmount, DamageSource damageSource, float armor, float armorToughness, CallbackInfoReturnable<Float> cir
2330
) {
24-
cir.setReturnValue(Math.max(0F, ArmorNerf.getToughnessFormula().calculate(armorWearer, damageAmount, damageSource, armor, armorToughness)));
31+
ArmorFormula formula = ArmorNerf.getToughnessFormula();
32+
cir.setReturnValue(Math.max(0F, formula.calculate(armorWearer, damageAmount, damageSource, armor, armorToughness)));
2533
}
2634

2735
@Inject(

0 commit comments

Comments
 (0)