Skip to content

Commit 333314d

Browse files
committed
add rule: customItemDiscardTime & use new carpet settings api
1 parent dd8d76e commit 333314d

File tree

10 files changed

+82
-12
lines changed

10 files changed

+82
-12
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,15 @@ CommandLogger.json配置文件可以配置白名单、黑名单等,修改配
303303

304304
### cceSuppressionCrash
305305
- CCE更新抑制器崩溃记录,类似于carpet的`updateSuppressedCrash`
306+
307+
## 模组兼容性
308+
309+
| 模组 | 模组版本 | 兼容性 |
310+
|------------------------|-----------------|------|
311+
| carpet | 1.4.57-3613865 | 完全兼容 |
312+
| c2me | 0.2.0+alpha.5.0 | 部分兼容 |
313+
| lithium | 0.7.5 | 完全兼容 |
314+
| Carpet-TIS-Addition | 1.43.0 | 完全兼容 |
315+
| plusls-carpet-addition | 0.2.5 | 完全兼容 |
316+
| sodium | 0.3.4 | 完全兼容 |
317+
| starlight | 1.0.0 | 完全兼容 |

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import carpet.utils.Messenger;
77
import com.mojang.brigadier.CommandDispatcher;
88
import io.github.optijava.opt_carpet_addition.commands.*;
9-
import io.github.optijava.opt_carpet_addition.events.FixExperienceBug;
9+
import io.github.optijava.opt_carpet_addition.events.fixExperienceBug.FixExperienceBug;
1010
import io.github.optijava.opt_carpet_addition.logger.LoggerRegister;
1111
import io.github.optijava.opt_carpet_addition.utils.CommandLogger;
1212
import io.github.optijava.opt_carpet_addition.utils.ConfigUtil;

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
//#if MC >= 11900
44
//$$ import carpet.api.settings.RuleCategory;
5-
//#endif
6-
import carpet.settings.Rule;
7-
//#if MC < 11900
5+
//#else
86
import carpet.settings.RuleCategory;
97
//#endif
8+
import carpet.settings.Rule;
9+
1010
import io.github.optijava.opt_carpet_addition.utils.config_bean.CommandLoggerConfigBean;
1111
import io.github.optijava.opt_carpet_addition.utils.config_bean.TpLimitConfigBean;
12+
import io.github.optijava.opt_carpet_addition.utils.validator.CustomItemDiscardTimeValidator;
13+
1214
import net.fabricmc.loader.api.FabricLoader;
1315

1416
import java.nio.file.Path;
@@ -184,5 +186,13 @@ public class OptCarpetSettings {
184186
desc = "Remove every armour which has `curse of binding` enchantment when player dead in wall (keepInventory must be true).",
185187
category = RuleCategory.FEATURE
186188
)
187-
public static boolean removeAllCurseOfBindingArmorWhenPlayerDeadInWall = false;
189+
public static boolean removeAllCurseOfBindingArmorWhenPlayerDeadInWall = false;
190+
191+
@Rule(
192+
desc = "Modify item disappeared time, default value -1 (unit: tick)",
193+
category = RuleCategory.FEATURE,
194+
options = {"-1", "6000"},
195+
validate = CustomItemDiscardTimeValidator.class
196+
)
197+
public static int customItemDiscardTime = -1;
188198
}

src/main/java/io/github/optijava/opt_carpet_addition/events/FixExperienceBug.java renamed to src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.optijava.opt_carpet_addition.events;
1+
package io.github.optijava.opt_carpet_addition.events.fixExperienceBug;
22

33
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
44
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;

src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/MinecraftServer_Mixin.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package io.github.optijava.opt_carpet_addition.mixins.rule.cceSuppressionCrashFix;
22

3+
import io.github.optijava.opt_carpet_addition.OptCarpetAddition;
34
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
45
import io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger.CCESuppressionCrashLogger;
5-
import io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger.ThrowableCCESuppression;
6+
import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression;
67
import net.minecraft.server.MinecraftServer;
78
import net.minecraft.server.world.ServerWorld;
89
import org.spongepowered.asm.mixin.Mixin;
@@ -34,7 +35,9 @@ public void injectTickWorlds(BooleanSupplier shouldKeepTicking, CallbackInfo ci,
3435
} else {
3536
CCESuppressionCrashLogger.INSTANCE.logUpdateSuppression(((ThrowableCCESuppression) throwable.getCause()).pos);
3637
}
37-
} catch (Exception ignored){}
38+
} catch (Exception e){
39+
OptCarpetAddition.LOGGER.error("Exception when handle CCE in MinecraftServer.tickWorlds(...)", e);
40+
}
3841

3942
ci.cancel();
4043
}

src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/ShulkerBoxBlock_Mixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.github.optijava.opt_carpet_addition.mixins.rule.cceSuppressionCrashFix;
22

33
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
4-
import io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger.ThrowableCCESuppression;
4+
import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression;
55
import net.minecraft.block.BlockState;
66
import net.minecraft.block.ShulkerBoxBlock;
77
import net.minecraft.inventory.Inventory;
@@ -23,7 +23,7 @@ public class ShulkerBoxBlock_Mixin {
2323
)
2424
public void injectGetComparatorOutput(BlockState state, World world, BlockPos pos, CallbackInfoReturnable<Integer> cir) {
2525
if (OptCarpetSettings.cceSuppressionCrashFix) {
26-
int var1 = 0;
26+
int var1;
2727
try {
2828
var1 = ScreenHandler.calculateComparatorOutput((Inventory)((Object)world.getBlockEntity(pos)));
2929
} catch (ClassCastException e) {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.optijava.opt_carpet_addition.mixins.rule.customItemDiscardTime;
2+
3+
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
4+
import net.minecraft.entity.ItemEntity;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.Constant;
7+
import org.spongepowered.asm.mixin.injection.ModifyConstant;
8+
9+
@Mixin(ItemEntity.class)
10+
public class ItemEntity_Mixin {
11+
12+
@ModifyConstant(
13+
method = "tick",
14+
constant = @Constant(intValue = 6000)
15+
)
16+
public int modifyConstantItemAge(int discardAgeTicks) {
17+
return OptCarpetSettings.customItemDiscardTime >= 0 ? OptCarpetSettings.customItemDiscardTime : discardAgeTicks;
18+
}
19+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger;
1+
package io.github.optijava.opt_carpet_addition.utils.exceptions;
22

33
import net.minecraft.util.math.BlockPos;
44

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.optijava.opt_carpet_addition.utils.validator;
2+
3+
//#if MC >= 11900
4+
//$$ import carpet.api.settings.Validator;
5+
//$$ import carpet.api.settings.CarpetRule;
6+
//#else
7+
import carpet.settings.Validator;
8+
import carpet.settings.ParsedRule;
9+
//#endif
10+
import net.minecraft.server.command.ServerCommandSource;
11+
12+
public class CustomItemDiscardTimeValidator extends Validator<Integer> {
13+
//#if MC >= 11900
14+
//$$ public Integer validate(ServerCommandSource source, CarpetRule<Integer> currentRule, Integer newValue, String string) {
15+
//#else
16+
public Integer validate(ServerCommandSource source, ParsedRule<Integer> currentRule, Integer newValue, String string) {
17+
//#endif
18+
return newValue >= -1 ? newValue : null;
19+
}
20+
21+
@Override
22+
public String description() {
23+
return "Item discard time must >= -1, -1 is the default value.";
24+
}
25+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
"rule.disabledNetherPortalSpawn.NetherPortalBlock_Mixin",
3737
"rule.optimizeFakePlayerSpawn.EntityPlayerMPFake_Mixin",
3838
"rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin",
39-
"rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayerEntity_Mixin"
39+
"rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayerEntity_Mixin",
40+
"rule.customItemDiscardTime.ItemEntity_Mixin"
4041
],
4142
"client": [
4243
"rule.unescapeChatMessage.ChatMessageC2SPacket_Mixin",

0 commit comments

Comments
 (0)