Skip to content

Commit 933f075

Browse files
committed
add rule: removeAllCurseOfBindingArmorWhenPlayerDeadInWall & fix: incorrect compatibilityLevel in opt-carpet-addition.mixins.json
1 parent fa00ff5 commit 933f075

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Language: [English](https://github.com/OptiJava/OptCarpetAddition/blob/master/README-en.md) | 中文
44

55
这是一个CarpetMod的扩展模组,目标是添加一些没有太大改变原版游戏机制但优化玩家体验/~~降低腐竹血压~~的一些功能。
6-
1
6+
77
使用[Preprocessor](https://github.com/ReplayMod/preprocessor)构建~~可供大家学习~~,目前支持`1.17.1` `1.18.2` `1.19.3` `1.20.1`四个版本,其他的大部分大版本相同小版本不同的版本也可直接安装使用
88

99
**本模组需要前置:`Carpet` `fabric-api`**

src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,10 @@ public class OptCarpetSettings {
179179
category = {RuleCategory.BUGFIX, RuleCategory.EXPERIMENTAL}
180180
)
181181
public static boolean cceSuppressionCrashFix = false;
182+
183+
@Rule(
184+
desc = "Remove every armour which has `curse of binding` enchantment when player dead in wall (keepInventory must be true).",
185+
category = RuleCategory.FEATURE
186+
)
187+
public static boolean removeAllCurseOfBindingArmorWhenPlayerDeadInWall = false;
182188
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall;
2+
3+
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
4+
import net.minecraft.enchantment.EnchantmentHelper;
5+
import net.minecraft.enchantment.Enchantments;
6+
import net.minecraft.entity.damage.DamageSource;
7+
import net.minecraft.item.ItemStack;
8+
import net.minecraft.server.network.ServerPlayerEntity;
9+
import net.minecraft.world.GameRules;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
15+
import java.util.Objects;
16+
17+
@Mixin(ServerPlayerEntity.class)
18+
public class ServerPlayerEntity_Mixin {
19+
20+
@Inject(
21+
method = "onDeath",
22+
at = @At("HEAD")
23+
)
24+
public void injectOnDeath(DamageSource source, CallbackInfo ci) {
25+
//#if MC >= 12000
26+
//$$ if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) {
27+
//#else
28+
if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).world.getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) {
29+
//#endif
30+
for (ItemStack armor : ((ServerPlayerEntity) (Object)this).getArmorItems()) {
31+
if (EnchantmentHelper.getLevel(Enchantments.BINDING_CURSE, armor) > 0) {
32+
armor.setCount(0);
33+
}
34+
}
35+
}
36+
}
37+
}

src/main/resources/opt-carpet-addition.mixins.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
"required": true,
33
"minVersion": "0.8",
44
"package": "io.github.optijava.opt_carpet_addition.mixins",
5+
//#if MC >= 11800
6+
//$$ "compatibilityLevel": "JAVA_17",
7+
//#else
58
"compatibilityLevel": "JAVA_16",
9+
//#endif
610
"mixins": [
7-
"logger.HUDController_Mixin",
811
//#if MC < 11900
912
"logger.updateSuppression.World_Mixin",
1013
"rule.async.MinecraftServer_Mixin",
@@ -22,6 +25,7 @@
2225
//$$ "rule.disabledUpdateSuppressionErrorStackTrace.NetworkThreadUtils_Mixin",
2326
//#endif
2427
//#endif
28+
"logger.HUDController_Mixin",
2529
"rule.cceSuppressionCrashFix.MinecraftServer_Mixin",
2630
"rule.cceSuppressionCrashFix.ShulkerBoxBlock_Mixin",
2731
"rule.commandLogger.CommandManager_Mixin",
@@ -31,7 +35,8 @@
3135
"rule.disabledLayEggs.ChickenEntity_Mixin",
3236
"rule.disabledNetherPortalSpawn.NetherPortalBlock_Mixin",
3337
"rule.optimizeFakePlayerSpawn.EntityPlayerMPFake_Mixin",
34-
"rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin"
38+
"rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin",
39+
"rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayerEntity_Mixin"
3540
],
3641
"client": [
3742
"rule.unescapeChatMessage.ChatMessageC2SPacket_Mixin",

0 commit comments

Comments
 (0)