Skip to content
This repository was archived by the owner on Feb 15, 2026. It is now read-only.

Commit b91ad99

Browse files
Update monkeylib (switches from offsetconfig538 to offsetutils538 and from jetbrains annotations to jspecify so uhh everything should be nullmarked now as well which is probably a good thing)
1 parent 0f4636f commit b91ad99

109 files changed

Lines changed: 336 additions & 163 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ allprojects {
3030
}
3131

3232
dependencies {
33-
// TODO: jspecify: compileOnlyApi "org.jspecify:jspecify:${rootProject.jspecify_version}"
34-
compileOnlyApi "org.jetbrains:annotations:${rootProject.jetbrainsannotations_version}"
33+
compileOnlyApi "org.jspecify:jspecify:${rootProject.jspecify_version}"
3534
}
3635
}
3736

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/LootTableModifierCommon.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.mojang.serialization.DynamicOps;
1010
import it.unimi.dsi.fastutil.Pair;
1111
import org.apache.commons.io.file.PathUtils;
12-
import org.jetbrains.annotations.Unmodifiable;
12+
import org.jspecify.annotations.Nullable;
1313
import top.offsetmonkey538.loottablemodifier.common.api.resource.LootModifier;
1414
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierAction;
1515
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionTypes;
@@ -28,6 +28,7 @@
2828
import top.offsetmonkey538.monkeylib538.common.api.text.MonkeyLibStyle;
2929
import top.offsetmonkey538.monkeylib538.common.api.text.MonkeyLibText;
3030
import top.offsetmonkey538.monkeylib538.common.api.wrapper.Identifier;
31+
import top.offsetmonkey538.offsetutils538.api.annotation.Unmodifiable;
3132

3233
import java.io.IOException;
3334
import java.nio.charset.StandardCharsets;
@@ -59,7 +60,7 @@ public final class LootTableModifierCommon {
5960
}
6061

6162
// Only used when IS_DEV is true
62-
private static final List<Identifier> MODIFIED_TABLE_IDs;
63+
private static final @Nullable List<Identifier> MODIFIED_TABLE_IDs;
6364
static {
6465
if (IS_DEV) MODIFIED_TABLE_IDs = Collections.synchronizedList(new ArrayList<>(0));
6566
else MODIFIED_TABLE_IDs = null;
@@ -171,6 +172,7 @@ private static void runModificationInternal(Map<Identifier, LootModifier> modifi
171172
if (!IS_DEV) return;
172173

173174
LOGGER.warn("Dev mode enabled, modified loot tables can be exported using the '/loot-table-modifier debug export' command");
175+
assert MODIFIED_TABLE_IDs != null;
174176
synchronized (MODIFIED_TABLE_IDs) {
175177
MODIFIED_TABLE_IDs.clear();
176178
MODIFIED_TABLE_IDs.addAll(modifiedTableIds);
@@ -193,6 +195,7 @@ private static void enableDebug() {
193195
}
194196

195197
private static int executeExportCommand(CommandContext<Object> context) {
198+
assert MODIFIED_TABLE_IDs != null;
196199
synchronized (MODIFIED_TABLE_IDs) {
197200
final DynamicOps<JsonElement> ops = PlatformCommandUtils.getRegistryOps(context);
198201

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/LootModifier.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@
44
import com.mojang.datafixers.util.Either;
55
import com.mojang.serialization.Codec;
66
import com.mojang.serialization.codecs.RecordCodecBuilder;
7-
import org.jetbrains.annotations.Contract;
8-
import org.jetbrains.annotations.NotNull;
9-
import org.jetbrains.annotations.UnmodifiableView;
7+
import org.jspecify.annotations.Nullable;
108
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierAction;
119
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.pool.PoolAddAction;
1210
import top.offsetmonkey538.loottablemodifier.common.api.resource.predicate.LootModifierPredicate;
1311
import top.offsetmonkey538.loottablemodifier.common.api.resource.predicate.table.TablePredicate;
1412
import top.offsetmonkey538.loottablemodifier.common.api.resource.util.LootModifierContext;
1513
import top.offsetmonkey538.loottablemodifier.common.api.wrapper.loot.LootPool;
1614
import top.offsetmonkey538.monkeylib538.common.api.wrapper.Identifier;
15+
import top.offsetmonkey538.offsetutils538.api.annotation.UnmodifiableView;
1716

1817
import java.util.List;
1918
import java.util.Optional;
@@ -26,7 +25,7 @@
2625
* @param actions a list of actions to apply
2726
* @param predicate the predicate
2827
*/
29-
public record LootModifier(@NotNull @UnmodifiableView List<LootModifierAction> actions, @NotNull LootModifierPredicate predicate) implements Predicate<LootModifierContext> {
28+
public record LootModifier(@UnmodifiableView List<LootModifierAction> actions, LootModifierPredicate predicate) implements Predicate<LootModifierContext> {
3029
private static final Codec<LootModifier> LEGACY_CODEC = RecordCodecBuilder.create(instance -> instance.group(
3130
Codec.either(Identifier.CODEC, Identifier.CODEC.listOf()).fieldOf("modifies").forGetter(modifier -> {
3231
throw new IllegalStateException("Tried using legacy loot table modifier codec for serialization for some reason!");
@@ -46,7 +45,7 @@ public record LootModifier(@NotNull @UnmodifiableView List<LootModifierAction> a
4645
).xmap(either -> either.map(it -> it, it -> it), Either::left); // Always encode as current codec, which is on the left.
4746

4847
@SuppressWarnings("OptionalUsedAsFieldOrParameterType") // from the codec
49-
private static @NotNull List<LootModifierAction> getActionsFromLegacyCodec(@NotNull Optional<List<LootPool>> pools, @NotNull Optional<List<LootPool>> lootPools) {
48+
private static List<LootModifierAction> getActionsFromLegacyCodec(Optional<List<LootPool>> pools, Optional<List<LootPool>> lootPools) {
5049
List<LootModifierAction> actions = null;
5150

5251
if (pools.isPresent() && lootPools.isPresent()) throw new IllegalStateException("Both \"pools\" and \"loot_pools\" present in legacy loot modifier!");
@@ -58,7 +57,7 @@ public record LootModifier(@NotNull @UnmodifiableView List<LootModifierAction> a
5857
return actions;
5958
}
6059

61-
private static @NotNull LootModifierPredicate getPredicateFromLegacyCodec(@NotNull Either<Identifier, List<Identifier>> modifiesEither) {
60+
private static LootModifierPredicate getPredicateFromLegacyCodec(Either<Identifier, List<Identifier>> modifiesEither) {
6261
final TablePredicate.Builder predicateBuilder = TablePredicate.builder();
6362
for (final Identifier currentId : modifiesEither.map(List::of, it -> it)) {
6463
predicateBuilder.name(currentId.toString());
@@ -76,7 +75,7 @@ public record LootModifier(@NotNull @UnmodifiableView List<LootModifierAction> a
7675
* @see LootModifierAction#MODIFIED_POOL
7776
* @see LootModifierAction#MODIFIED_ENTRY
7877
*/
79-
public int apply(final @NotNull LootModifierContext context) {
78+
public int apply(final LootModifierContext context) {
8079
int result = MODIFIED_NONE;
8180
for (LootModifierAction action : actions) {
8281
result = result | action.apply(context);
@@ -90,7 +89,7 @@ public int apply(final @NotNull LootModifierContext context) {
9089
* @param context the context to match against
9190
* @return if the predicate of this loot modifier matched the provided context
9291
*/
93-
public boolean test(final @NotNull LootModifierContext context) {
92+
public boolean test(final LootModifierContext context) {
9493
return predicate.test(context);
9594
}
9695

@@ -99,7 +98,6 @@ public boolean test(final @NotNull LootModifierContext context) {
9998
*
10099
* @return a new {@link LootModifier.Builder}
101100
*/
102-
@Contract("->new")
103101
public static LootModifier.Builder builder() {
104102
return new LootModifier.Builder();
105103
}
@@ -113,16 +111,15 @@ private Builder() {
113111
}
114112

115113
private final ImmutableList.Builder<LootModifierAction> actions = ImmutableList.builder();
116-
private LootModifierPredicate predicate;
114+
private @Nullable LootModifierPredicate predicate;
117115

118116
/**
119117
* Adds an action
120118
*
121119
* @param action the action to add
122120
* @return this
123121
*/
124-
@Contract("_->this")
125-
public LootModifier.Builder action(@NotNull LootModifierAction.Builder action) {
122+
public LootModifier.Builder action(LootModifierAction.Builder action) {
126123
this.actions.add(action.build());
127124
return this;
128125
}
@@ -135,8 +132,7 @@ public LootModifier.Builder action(@NotNull LootModifierAction.Builder action) {
135132
* @param predicate the predicate to use
136133
* @return this
137134
*/
138-
@Contract("_->this")
139-
public LootModifier.Builder conditionally(@NotNull LootModifierPredicate.Builder predicate) {
135+
public LootModifier.Builder conditionally(LootModifierPredicate.Builder predicate) {
140136
if (this.predicate != null) LOGGER.error("Predicate has already been set for this builder! The previously set predicate will be overwritten! Please use the 'LootModifierPredicate.Builder#and()' and 'LootModifierPredicate.Builder#or()' methods for adding multiple conditions!");
141137
this.predicate = predicate.build();
142138
return this;
@@ -148,6 +144,7 @@ public LootModifier.Builder conditionally(@NotNull LootModifierPredicate.Builder
148144
* @return a built {@link LootModifier}
149145
*/
150146
public LootModifier build() {
147+
if (this.predicate == null) throw new IllegalStateException("Predicate has not been set for this builder!");
151148
return new LootModifier(this.actions.build(), this.predicate);
152149
}
153150
}

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/LootModifierAction.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package top.offsetmonkey538.loottablemodifier.common.api.resource.action;
22

33
import com.mojang.serialization.Codec;
4-
import org.jetbrains.annotations.NotNull;
54
import top.offsetmonkey538.loottablemodifier.common.api.resource.util.LootModifierContext;
65

76
/**
@@ -47,7 +46,7 @@ public interface LootModifierAction {
4746
* @see #MODIFIED_POOL
4847
* @see #MODIFIED_ENTRY
4948
*/
50-
int apply(final @NotNull LootModifierContext context);
49+
int apply(final LootModifierContext context);
5150

5251
/**
5352
* A builder for loot modifier actions.

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/LootModifierActionType.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import com.mojang.serialization.Codec;
44
import com.mojang.serialization.MapCodec;
5-
import org.jetbrains.annotations.ApiStatus;
6-
import org.jetbrains.annotations.NotNull;
75
import top.offsetmonkey538.monkeylib538.common.api.wrapper.Identifier;
6+
import top.offsetmonkey538.offsetutils538.api.annotation.Internal;
87

98
import java.util.function.Supplier;
109

@@ -15,7 +14,7 @@
1514
*
1615
* @param codec the codec for this action.
1716
*/
18-
public record LootModifierActionType(@NotNull MapCodec<? extends LootModifierAction> codec) {
17+
public record LootModifierActionType(MapCodec<? extends LootModifierAction> codec) {
1918
/**
2019
* Provides codec for {@link LootModifierActionType}
2120
*/
@@ -28,18 +27,18 @@ public record LootModifierActionType(@NotNull MapCodec<? extends LootModifierAct
2827
* @param codec the codec for the loot modifier action type
2928
* @return a loot modifier action type for the provided codec
3029
*/
31-
public static LootModifierActionType register(final @NotNull Identifier id, final @NotNull MapCodec<? extends LootModifierAction> codec) {
30+
public static LootModifierActionType register(final Identifier id, final MapCodec<? extends LootModifierAction> codec) {
3231
return Registry.INSTANCE.register(id, new LootModifierActionType(codec));
3332
}
3433

35-
@ApiStatus.Internal
34+
@Internal
3635
public interface Registry {
3736
Registry INSTANCE = load(Registry.class);
3837

39-
LootModifierActionType register(final @NotNull Identifier id, final @NotNull LootModifierActionType type);
38+
LootModifierActionType register(final Identifier id, final LootModifierActionType type);
4039
}
4140

42-
@ApiStatus.Internal
41+
@Internal
4342
public interface CodecProvider extends Supplier<Codec<LootModifierAction>> {
4443

4544
}

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/LootModifierActionTypes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package top.offsetmonkey538.loottablemodifier.common.api.resource.action;
22

3-
import org.jetbrains.annotations.ApiStatus;
43
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.condition.ConditionAddAction;
54
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.entry.EntryAddAction;
65
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.entry.EntryItemSetAction;
76
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.entry.EntryRemoveAction;
87
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.pool.PoolAddAction;
98
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.pool.PoolRemoveAction;
9+
import top.offsetmonkey538.offsetutils538.api.annotation.Internal;
1010

1111
import static top.offsetmonkey538.loottablemodifier.common.LootTableModifierCommon.id;
1212

@@ -53,7 +53,7 @@ private LootModifierActionTypes() {
5353
* <br />
5454
* Only for the loot table modifier initializer to call, NO TOUCHY >:(
5555
*/
56-
@ApiStatus.Internal
56+
@Internal
5757
public static void register() {
5858
// Registers action types by loading the class
5959
}

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/condition/ConditionAddAction.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import com.mojang.serialization.Codec;
55
import com.mojang.serialization.MapCodec;
66
import com.mojang.serialization.codecs.RecordCodecBuilder;
7-
import org.jetbrains.annotations.Contract;
8-
import org.jetbrains.annotations.NotNull;
97
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierAction;
108
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionType;
119
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionTypes;
@@ -37,7 +35,7 @@ public LootModifierActionType getType() {
3735
}
3836

3937
@Override
40-
public int apply(@NotNull LootModifierContext context) {
38+
public int apply(LootModifierContext context) {
4139
final LootPool pool = context.pool();
4240
if (pool == null) return MODIFIED_NONE;
4341

@@ -69,7 +67,6 @@ public int apply(@NotNull LootModifierContext context) {
6967
*
7068
* @return a new {@link ConditionAddAction.Builder}
7169
*/
72-
@Contract("->new")
7370
public static ConditionAddAction.Builder builder() {
7471
return new ConditionAddAction.Builder();
7572
}
@@ -92,7 +89,6 @@ private Builder() {
9289
* @param condition The condition to add
9390
* @return this
9491
*/
95-
@Contract("_->this")
9692
public ConditionAddAction.Builder condition(LootCondition condition) {
9793
this.conditions.add(condition);
9894
return this;
@@ -103,7 +99,6 @@ public ConditionAddAction.Builder condition(LootCondition condition) {
10399
*
104100
* @return this
105101
*/
106-
@Contract("->this")
107102
public ConditionAddAction.Builder onlyPools() {
108103
includePools = true;
109104
includeEntries = false;
@@ -115,7 +110,6 @@ public ConditionAddAction.Builder onlyPools() {
115110
*
116111
* @return this
117112
*/
118-
@Contract("->this")
119113
public ConditionAddAction.Builder onlyEntries() {
120114
includeEntries = true;
121115
includePools = false;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@NullMarked
2+
package top.offsetmonkey538.loottablemodifier.common.api.resource.action.condition;
3+
4+
import org.jspecify.annotations.NullMarked;

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/entry/EntryAddAction.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.google.common.collect.ImmutableList;
44
import com.mojang.serialization.MapCodec;
55
import com.mojang.serialization.codecs.RecordCodecBuilder;
6-
import org.jetbrains.annotations.Contract;
7-
import org.jetbrains.annotations.NotNull;
86
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierAction;
97
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionType;
108
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionTypes;
@@ -31,7 +29,7 @@ public LootModifierActionType getType() {
3129
}
3230

3331
@Override
34-
public int apply(@NotNull LootModifierContext context) {
32+
public int apply(LootModifierContext context) {
3533
if (context.poolAlreadyModified()) return MODIFIED_NONE;
3634

3735
final LootPool pool = context.pool();
@@ -49,7 +47,6 @@ public int apply(@NotNull LootModifierContext context) {
4947
*
5048
* @return a new {@link EntryAddAction.Builder}
5149
*/
52-
@Contract("->new")
5350
public static EntryAddAction.Builder builder() {
5451
return new EntryAddAction.Builder();
5552
}
@@ -70,7 +67,6 @@ private Builder() {
7067
* @param entry The entry to add
7168
* @return this
7269
*/
73-
@Contract("_->this")
7470
public EntryAddAction.Builder entry(LootPoolEntry entry) {
7571
this.entries.add(entry);
7672
return this;

common/src/main/java/top/offsetmonkey538/loottablemodifier/common/api/resource/action/entry/EntryItemSetAction.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import com.mojang.serialization.MapCodec;
44
import com.mojang.serialization.codecs.RecordCodecBuilder;
5-
import org.jetbrains.annotations.Contract;
6-
import org.jetbrains.annotations.NotNull;
75
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierAction;
86
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionType;
97
import top.offsetmonkey538.loottablemodifier.common.api.resource.action.LootModifierActionTypes;
@@ -31,7 +29,7 @@ public LootModifierActionType getType() {
3129
}
3230

3331
@Override
34-
public int apply(@NotNull LootModifierContext context) {
32+
public int apply(LootModifierContext context) {
3533
final LootPoolEntry entry = context.entry();
3634
if (entry == null) return MODIFIED_NONE;
3735

@@ -53,8 +51,7 @@ public int apply(@NotNull LootModifierContext context) {
5351
* @param item the new item to replace the existing one with
5452
* @return a new {@link EntryItemSetAction.Builder}
5553
*/
56-
@Contract("_->new")
57-
public static EntryItemSetAction.Builder builder(@NotNull Item item) {
54+
public static EntryItemSetAction.Builder builder(Item item) {
5855
return () -> new EntryItemSetAction(item);
5956
}
6057
}

0 commit comments

Comments
 (0)