Skip to content

Commit d24cbc8

Browse files
Combatify 1.21.11 1.3.3 Fabric - Use config fixers to make the changes of this version seamless
1 parent 6231fd6 commit d24cbc8

4 files changed

Lines changed: 149 additions & 2 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ minecraft_version=1.21.11
1515
rhino_version=1.8.0
1616
jackson_version=2.18.2
1717
sodium_version=mc1.21.11-0.8.2-fabric
18-
atlas_core_version=1.1.2.beta.5-25w41a-Fabric
18+
atlas_core_version=1.1.3-1.21.11-Fabric
1919
defaulted_version=1.2.1-1.21.9-Fabric
2020
viafabricplus_version=4.4.1
2121
modmenu_version=17.0.0-beta.1

src/main/java/net/atlas/combatify/config/CombatifyGeneralConfig.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
import net.atlas.atlascore.util.ConfigRepresentable;
1515
import net.atlas.combatify.config.impl.crit.CTSCritImpl;
1616
import net.atlas.combatify.config.impl.crit.CritImpl;
17+
import net.atlas.combatify.config.impl.crit.fixer.CritImplFixer;
1718
import net.atlas.combatify.config.impl.food.CTSFoodImpl;
1819
import net.atlas.combatify.config.impl.food.FoodImpl;
20+
import net.atlas.combatify.config.impl.food.fixer.FoodImplFixer;
1921
import net.fabricmc.api.EnvType;
2022
import net.fabricmc.api.Environment;
2123
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
@@ -147,188 +149,251 @@ public void handleConfigInformation(AtlasCore.ClientInformPacket clientInformPac
147149
public void defineConfigHolders() {
148150
attackDecay = createObject("attackDecay", AttackDecay.DEFAULT, AttackDecay.class, AttackDecay.STREAM_CODEC, false);
149151
attackDecay.tieToCategory(melee);
152+
attackDecay.getFixer().addOldCategory("cts_booleans");
150153
attackReach = createBoolean("attackReach", true);
151154
attackReach.tieToCategory(melee);
152155
attackReach.setupTooltip(1);
156+
attackReach.getFixer().addOldCategory("cts_booleans");
153157
autoAttackAllowed = createBoolean("autoAttackAllowed", true);
154158
autoAttackAllowed.tieToCategory(client);
155159
autoAttackAllowed.setupTooltip(1);
160+
autoAttackAllowed.getFixer().addOldCategory("cts_booleans");
156161
bedrockBridging = createBoolean("bedrockBridging", false);
157162
bedrockBridging.tieToCategory(client);
158163
bedrockBridging.setupTooltip(1);
164+
bedrockBridging.getFixer().addOldCategory("cts_booleans");
159165
bedrockImpaling = createBoolean("bedrockImpaling", true);
160166
bedrockImpaling.tieToCategory(melee);
161167
bedrockImpaling.setupTooltip(1);
168+
bedrockImpaling.getFixer().addOldCategory("cts_booleans");
162169
bowFatigue = createBoolean("bowFatigue", true);
163170
bowFatigue.tieToCategory(ranged);
164171
bowFatigue.setupTooltip(4);
172+
bowFatigue.getFixer().addOldCategory("cts_booleans");
165173
canAttackEarly = createBoolean("canAttackEarly", false);
166174
canAttackEarly.tieToCategory(melee);
167175
canAttackEarly.setupTooltip(1);
176+
canAttackEarly.getFixer().addOldCategory("cts_booleans");
168177
canSweepOnMiss = createBoolean("canSweepOnMiss", true);
169178
canSweepOnMiss.tieToCategory(melee);
170179
canSweepOnMiss.setupTooltip(1);
180+
canSweepOnMiss.getFixer().addOldCategory("cts_booleans");
171181
chargedAttacks = createBoolean("chargedAttacks", true);
172182
chargedAttacks.tieToCategory(melee);
173183
chargedAttacks.setupTooltip(1);
184+
chargedAttacks.getFixer().addOldCategory("cts_booleans");
174185
chargedReach = createBoolean("chargedReach", true);
175186
chargedReach.tieToCategory(melee);
176187
chargedReach.setupTooltip(1);
188+
chargedReach.getFixer().addOldCategory("cts_booleans");
177189
creativeAttackReach = createBoolean("creativeAttackReach", false);
178190
creativeAttackReach.tieToCategory(melee);
179191
creativeAttackReach.setupTooltip(1);
192+
creativeAttackReach.getFixer().addOldCategory("cts_booleans");
180193
ctsMomentumPassedToProjectiles = createBoolean("ctsMomentumPassedToProjectiles", true);
181194
ctsMomentumPassedToProjectiles.tieToCategory(ranged);
182195
ctsMomentumPassedToProjectiles.setupTooltip(1);
196+
ctsMomentumPassedToProjectiles.getFixer().addOldCategory("cts_booleans");
183197
dispensableTridents = createBoolean("dispensableTridents", true);
184198
dispensableTridents.tieToCategory(ranged);
185199
dispensableTridents.setupTooltip(1);
200+
dispensableTridents.getFixer().addOldCategory("cts_booleans");
186201
hasMissTime = createBoolean("hasMissTime", false);
187202
hasMissTime.tieToCategory(melee);
188203
hasMissTime.setupTooltip(1);
204+
hasMissTime.getFixer().addOldCategory("cts_booleans");
189205
hasteFix = createBoolean("hasteFix", false);
190206
hasteFix.tieToCategory(fixes);
191207
hasteFix.setupTooltip(1);
208+
hasteFix.getFixer().addOldCategory("cts_booleans");
192209
iFramesBasedOnWeapon = createBoolean("iFramesBasedOnWeapon", true);
193210
iFramesBasedOnWeapon.tieToCategory(melee);
194211
iFramesBasedOnWeapon.setupTooltip(1);
212+
iFramesBasedOnWeapon.getFixer().addOldCategory("cts_booleans");
195213
missedAttackRecovery = createBoolean("missedAttackRecovery", true);
196214
missedAttackRecovery.tieToCategory(melee);
197215
missedAttackRecovery.setupTooltip(1);
216+
missedAttackRecovery.getFixer().addOldCategory("cts_booleans");
198217
percentageDamageEffects = createBoolean("percentageDamageEffects", true);
199218
percentageDamageEffects.tieToCategory(melee);
200219
percentageDamageEffects.setupTooltip(1);
220+
percentageDamageEffects.getFixer().addOldCategory("cts_booleans");
201221
projectilesHaveIFrames = createBoolean("projectilesHaveIFrames", false);
202222
projectilesHaveIFrames.tieToCategory(ranged);
203223
projectilesHaveIFrames.setupTooltip(1);
224+
projectilesHaveIFrames.getFixer().addOldCategory("cts_booleans");
204225
resetOnItemChange = createBoolean("resetOnItemChange", false);
205226
resetOnItemChange.tieToCategory(melee);
206227
resetOnItemChange.setupTooltip(1);
228+
resetOnItemChange.getFixer().addOldCategory("cts_booleans");
207229
snowballKB = createBoolean("snowballKB", true);
208230
snowballKB.tieToCategory(ranged);
209231
snowballKB.setupTooltip(1);
232+
snowballKB.getFixer().addOldCategory("cts_booleans");
210233
strengthAppliesToEnchants = createBoolean("strengthAppliesToEnchants", true);
211234
strengthAppliesToEnchants.tieToCategory(melee);
212235
strengthAppliesToEnchants.setupTooltip(1);
236+
strengthAppliesToEnchants.getFixer().addOldCategory("cts_booleans");
213237
sweepWithSweeping = createBoolean("sweepWithSweeping", true);
214238
sweepWithSweeping.tieToCategory(melee);
215239
sweepWithSweeping.setupTooltip(1);
240+
sweepWithSweeping.getFixer().addOldCategory("cts_booleans");
216241
swingThroughGrass = createBoolean("swingThroughGrass", true);
217242
swingThroughGrass.tieToCategory(melee);
218243
swingThroughGrass.setupTooltip(1);
244+
swingThroughGrass.getFixer().addOldCategory("cts_booleans");
219245
tierDamageNerf = createBoolean("tierDamageNerf", true);
220246
tierDamageNerf.tieToCategory(melee);
221247
tierDamageNerf.setupTooltip(1);
248+
tierDamageNerf.getFixer().addOldCategory("cts_booleans");
222249
tridentVoidReturn = createBoolean("tridentVoidReturn", true);
223250
tridentVoidReturn.tieToCategory(ranged);
224251
tridentVoidReturn.setupTooltip(1);
252+
tridentVoidReturn.getFixer().addOldCategory("cts_booleans");
225253

226254
aimAssistTicks = createInRange("aimAssistTicks", 0, 0, 10, true);
227255
aimAssistTicks.tieToCategory(melee);
228256
aimAssistTicks.setupTooltip(1);
257+
aimAssistTicks.getFixer().addOldCategory("cts_integers");
229258
shieldDelay = createInRange("shieldDelay", 0, 0, 2000, false);
230259
shieldDelay.tieToCategory(defense);
231260
shieldDelay.setupTooltip(1);
261+
shieldDelay.getFixer().addOldCategory("cts_integers");
232262
instantHealthBonus = createInRange("instantHealthBonus", 6, 1, 1000, false);
233263
instantHealthBonus.tieToCategory(defense);
264+
instantHealthBonus.getFixer().addOldCategory("cts_integers");
234265

235266
baseHandAttackSpeed = createInRange("baseHandAttackSpeed", 2.5, 2.5, 20);
236267
baseHandAttackSpeed.tieToCategory(melee);
268+
baseHandAttackSpeed.getFixer().addOldCategory("cts_doubles");
237269
fistDamage = createInRange("fistDamage", 2.0, 1, 1024);
238270
fistDamage.tieToCategory(melee);
239271
fistDamage.setupTooltip(1);
272+
fistDamage.getFixer().addOldCategory("cts_doubles");
240273
projectileUncertainty = createObject("projectileUncertainty", ProjectileUncertainty.DEFAULT, ProjectileUncertainty.class, ProjectileUncertainty.STREAM_CODEC, false);
241274
projectileUncertainty.tieToCategory(ranged);
275+
projectileUncertainty.getFixer().addOldCategory("cts_doubles");
242276
fallbackShieldDisableTime = createInRange("fallbackShieldDisableTime", 1.6, 0, 10);
243277
fallbackShieldDisableTime.tieToCategory(defense);
244278
fallbackShieldDisableTime.setupTooltip(1);
279+
fallbackShieldDisableTime.getFixer().addOldCategory("cts_doubles");
245280
minHitboxSize = createInRange("minHitboxSize", 0.9, 0, 5);
246281
minHitboxSize.tieToCategory(mob);
247282
minHitboxSize.setupTooltip(1);
283+
minHitboxSize.getFixer().addOldCategory("cts_doubles");
248284

249285
critImpl = createCodecBacked("critImpl", new CTSCritImpl(true, -1, 1.5F), CritImpl.CODEC);
250286
critImpl.tieToCategory(melee);
251287
critImpl.setupTooltip(1);
288+
critImpl.setFixer(new CritImplFixer(critImpl));
289+
critImpl.getFixer().addOldCategory("cts_enums");
252290
eatingInterruptionMode = createEnum("eatingInterruptionMode", EatingInterruptionMode.FULL_RESET, EatingInterruptionMode.class, EatingInterruptionMode.values(), e -> Component.translatable("text.config.combatify-general.option.eatingInterruptionMode." + e.name().toLowerCase(Locale.ROOT)));
253291
eatingInterruptionMode.tieToCategory(melee);
254292
eatingInterruptionMode.setupTooltip(4);
293+
eatingInterruptionMode.getFixer().addOldCategory("cts_enums");
255294
knockbackMode = createEnum("knockbackMode", KnockbackMode.CTS_8C, KnockbackMode.class, KnockbackMode.values(), e -> Component.translatable("text.config.combatify-general.option.knockbackMode." + e.name().toLowerCase(Locale.ROOT)));
256295
knockbackMode.tieToCategory(melee);
257296
knockbackMode.setupTooltip(6);
297+
knockbackMode.getFixer().addOldCategory("cts_enums");
258298
foodImpl = createCodecBacked("foodImpl", new CTSFoodImpl(true, true, 6, 7, 21, 0.5F, 2.0F, 2.0F), FoodImpl.CODEC);
259299
foodImpl.tieToCategory(defense);
260300
foodImpl.setupTooltip(1);
301+
foodImpl.setFixer(new FoodImplFixer(foodImpl));
302+
foodImpl.getFixer().addOldCategory("cts_enums");
261303

262304
armorPiercingDisablesShields = createBoolean("armorPiercingDisablesShields", false);
263-
armorPiercingDisablesShields.tieToCategory(extras);
305+
armorPiercingDisablesShields.tieToCategory(defense);
264306
armorPiercingDisablesShields.setupTooltip(1);
307+
armorPiercingDisablesShields.getFixer().addOldCategory("extra_booleans");
265308
attackSpeed = createBoolean("attackSpeed", true);
266309
attackSpeed.tieToCategory(extras);
267310
attackSpeed.setupTooltip(1);
311+
attackSpeed.getFixer().addOldCategory("extra_booleans");
268312
attributeSwappingFix = createBoolean("attributeSwappingFix", false);
269313
attributeSwappingFix.tieToCategory(fixes);
314+
attributeSwappingFix.getFixer().addOldCategory("extra_booleans");
270315
canInteractWhenCrouchShield = createBoolean("canInteractWhenCrouchShield", true);
271316
canInteractWhenCrouchShield.tieToCategory(defense);
317+
canInteractWhenCrouchShield.getFixer().addOldCategory("extra_booleans");
272318
configOnlyWeapons = createBoolean("configOnlyWeapons", false);
273319
configOnlyWeapons.tieToCategory(extras);
274320
configOnlyWeapons.setRestartRequired(RestartRequiredMode.RESTART_BOTH);
275321
configOnlyWeapons.setupTooltip(1);
322+
configOnlyWeapons.getFixer().addOldCategory("extra_booleans");
276323
tieredShields = createBoolean("tieredShields", false);
277324
tieredShields.tieToCategory(extras);
278325
tieredShields.setRestartRequired(RestartRequiredMode.RESTART_BOTH);
279326
tieredShields.setupTooltip(1);
327+
tieredShields.getFixer().addOldCategory("extra_booleans");
280328
delayedEntityUpdates = createBoolean("delayedEntityUpdates", false);
281329
delayedEntityUpdates.tieToCategory(fixes);
282330
delayedEntityUpdates.setupTooltip(1);
331+
delayedEntityUpdates.getFixer().addOldCategory("extra_booleans");
283332
disableLoyaltyOnHitEntity = createBoolean("disableLoyaltyOnHitEntity", false);
284333
disableLoyaltyOnHitEntity.tieToCategory(extras);
334+
disableLoyaltyOnHitEntity.getFixer().addOldCategory("extra_booleans");
285335
fishingHookKB = createBoolean("fishingHookKB", false);
286336
fishingHookKB.tieToCategory(legacy);
287337
fishingHookKB.setupTooltip(1);
338+
fishingHookKB.getFixer().addOldCategory("extra_booleans");
288339
improvedMiscEntityAttacks = createBoolean("improvedMiscEntityAttacks", false);
289340
improvedMiscEntityAttacks.tieToCategory(extras);
290341
improvedMiscEntityAttacks.setupTooltip(1);
342+
improvedMiscEntityAttacks.getFixer().addOldCategory("extra_booleans");
291343
instaAttack = createBoolean("instaAttack", false);
292344
instaAttack.tieToCategory(legacy);
293345
instaAttack.setupTooltip(1);
346+
instaAttack.getFixer().addOldCategory("extra_booleans");
294347
letVanillaConnect = createBoolean("letVanillaConnect", true);
295348
letVanillaConnect.tieToCategory(extras);
296349
letVanillaConnect.setupTooltip(1);
350+
letVanillaConnect.getFixer().addOldCategory("extra_booleans");
297351
magicHasIFrames = createBoolean("magicHasIFrames", true);
298352
magicHasIFrames.tieToCategory(extras);
299353
magicHasIFrames.setupTooltip(1);
354+
magicHasIFrames.getFixer().addOldCategory("extra_booleans");
300355
mobsCanGuard = createBoolean("mobsCanGuard", false);
301356
mobsCanGuard.tieToCategory(mob);
302357
mobsCanGuard.setupTooltip(1);
358+
mobsCanGuard.getFixer().addOldCategory("extra_booleans");
303359
mobsCanSprint = createBoolean("mobsCanSprint", false);
304360
mobsCanSprint.tieToCategory(mob);
305361
mobsCanSprint.setupTooltip(1);
362+
mobsCanSprint.getFixer().addOldCategory("extra_booleans");
306363
mobsUsePlayerAttributes = createBoolean("mobsUsePlayerAttributes", false);
307364
mobsUsePlayerAttributes.tieToCategory(mob);
308365
mobsUsePlayerAttributes.setupTooltip(1);
366+
mobsUsePlayerAttributes.getFixer().addOldCategory("extra_booleans");
309367
shieldOnlyWhenCharged = createBoolean("shieldOnlyWhenCharged", false);
310368
shieldOnlyWhenCharged.tieToCategory(legacy);
311369
shieldOnlyWhenCharged.setupTooltip(2);
370+
shieldOnlyWhenCharged.getFixer().addOldCategory("extra_booleans");
312371
sweepConditionsMatchMiss = createBoolean("sweepConditionsMatchMiss", false);
313372
sweepConditionsMatchMiss.tieToCategory(extras);
314373
sweepConditionsMatchMiss.setupTooltip(2);
374+
sweepConditionsMatchMiss.getFixer().addOldCategory("extra_booleans");
315375
sweepingNegatedForTamed = createBoolean("sweepingNegatedForTamed", false);
316376
sweepingNegatedForTamed.tieToCategory(extras);
317377
sweepingNegatedForTamed.setupTooltip(1);
378+
sweepingNegatedForTamed.getFixer().addOldCategory("extra_booleans");
318379

319380
shieldChargePercentage = createInRange("shieldChargePercentage", 195, 1, 200, true);
320381
shieldChargePercentage.tieToCategory(legacy);
321382
shieldChargePercentage.setupTooltip(1);
383+
shieldChargePercentage.getFixer().addOldCategory("extra_integers");
322384

323385
projectileDamage = createObject("projectileDamage", ProjectileDamage.DEFAULT, ProjectileDamage.class, ProjectileDamage.STREAM_CODEC);
324386
projectileDamage.tieToCategory(ranged);
387+
projectileDamage.getFixer().addOldCategory("extra_doubles");
325388

326389
arrowDisableMode = createEnum("arrowDisableMode", ArrowDisableMode.NONE, ArrowDisableMode.class, ArrowDisableMode.values(), e -> Component.translatable("text.config.combatify-general.option.arrowDisableMode." + e.name().toLowerCase(Locale.ROOT)));
327390
arrowDisableMode.tieToCategory(ranged);
328391
arrowDisableMode.setupTooltip(7);
392+
arrowDisableMode.getFixer().addOldCategory("extra_enums");
329393
armourPiercingMode = createEnum("armourPiercingMode", ArmourPiercingMode.VANILLA, ArmourPiercingMode.class, ArmourPiercingMode.values(), e -> Component.translatable("text.config.combatify-general.option.armourPiercingMode." + e.name().toLowerCase(Locale.ROOT)));
330394
armourPiercingMode.tieToCategory(defense);
331395
armourPiercingMode.setupTooltip(4);
396+
armourPiercingMode.getFixer().addOldCategory("extra_enums");
332397

333398
enableDebugLogging = createBoolean("enableDebugLogging", false);
334399
enableDebugLogging.tieToCategory(debug);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.atlas.combatify.config.impl.crit.fixer;
2+
3+
import com.google.gson.JsonElement;
4+
import com.google.gson.JsonObject;
5+
import com.mojang.serialization.JsonOps;
6+
import net.atlas.atlascore.config.AtlasConfig;
7+
import net.atlas.atlascore.config.fixer.ConfigHolderFixer;
8+
import net.atlas.combatify.config.impl.JSImpl;
9+
import net.atlas.combatify.config.impl.crit.CTSCritImpl;
10+
import net.atlas.combatify.config.impl.crit.CombatifyCritImpl;
11+
import net.atlas.combatify.config.impl.crit.CritImpl;
12+
import net.atlas.combatify.config.impl.crit.JSCritImpl;
13+
import org.jetbrains.annotations.NotNull;
14+
import org.jetbrains.annotations.Nullable;
15+
16+
public class CritImplFixer extends ConfigHolderFixer<CritImpl> {
17+
public CritImplFixer(AtlasConfig.ConfigHolder<CritImpl> owner) {
18+
super(owner);
19+
}
20+
21+
@Override
22+
public JsonElement fixData(@Nullable JsonElement value, @Nullable JsonObject holderRootObject, @NotNull JsonObject configRootObject) {
23+
value = super.fixData(value, holderRootObject, configRootObject);
24+
if (value.isJsonPrimitive()) {
25+
String asStr = value.getAsString();
26+
CritImpl val = switch (asStr) {
27+
case "vanilla_crit_impl" -> new CTSCritImpl(false, 0.9F, 1.5F);
28+
case "cts_crit_impl" -> new CTSCritImpl(true, -1F, 1.5F);
29+
case "combatify_crit_impl" -> new CombatifyCritImpl(true, 0.9F, 1.95F, 1.25F, 1.5F);
30+
default -> new JSCritImpl(new JSImpl(asStr));
31+
};
32+
value = CritImpl.CODEC.encodeStart(JsonOps.INSTANCE, val).getOrThrow();
33+
}
34+
return value;
35+
}
36+
37+
@Override
38+
protected boolean mustFix(@Nullable JsonElement value) {
39+
return value == null || value.isJsonPrimitive();
40+
}
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.atlas.combatify.config.impl.food.fixer;
2+
3+
import com.google.gson.JsonElement;
4+
import com.google.gson.JsonObject;
5+
import com.mojang.serialization.JsonOps;
6+
import net.atlas.atlascore.config.AtlasConfig;
7+
import net.atlas.atlascore.config.fixer.ConfigHolderFixer;
8+
import net.atlas.combatify.config.impl.JSImpl;
9+
import net.atlas.combatify.config.impl.food.CTSFoodImpl;
10+
import net.atlas.combatify.config.impl.food.CombatifyFoodImpl;
11+
import net.atlas.combatify.config.impl.food.FoodImpl;
12+
import net.atlas.combatify.config.impl.food.JSFoodImpl;
13+
import org.jetbrains.annotations.NotNull;
14+
import org.jetbrains.annotations.Nullable;
15+
16+
public class FoodImplFixer extends ConfigHolderFixer<FoodImpl> {
17+
public FoodImplFixer(AtlasConfig.ConfigHolder<FoodImpl> owner) {
18+
super(owner);
19+
}
20+
21+
@Override
22+
public JsonElement fixData(@Nullable JsonElement value, @Nullable JsonObject holderRootObject, @NotNull JsonObject configRootObject) {
23+
value = super.fixData(value, holderRootObject, configRootObject);
24+
if (value.isJsonPrimitive()) {
25+
String asStr = value.getAsString();
26+
FoodImpl val = switch (asStr) {
27+
case "vanilla_food_impl" -> new CTSFoodImpl(false, false, 6, 18, 20, 0.5F, 4, 4);
28+
case "cts_food_impl" -> new CTSFoodImpl(true, true, 6, 7, 21, 0.5F, 2, 2);
29+
case "combatify_food_impl" -> new CombatifyFoodImpl(6, 9, 21, 0.5F, 2F, 2F);
30+
default -> new JSFoodImpl(new JSImpl(asStr));
31+
};
32+
value = FoodImpl.CODEC.encodeStart(JsonOps.INSTANCE, val).getOrThrow();
33+
}
34+
return value;
35+
}
36+
37+
@Override
38+
protected boolean mustFix(@Nullable JsonElement value) {
39+
return value == null || value.isJsonPrimitive();
40+
}
41+
}

0 commit comments

Comments
 (0)