Skip to content

Commit dfee12f

Browse files
committed
chore: misc cleanup
1 parent b2a07bb commit dfee12f

File tree

9 files changed

+98
-47
lines changed

9 files changed

+98
-47
lines changed

common/src/main/java/dev/ftb/mods/ftblibrary/config/manager/ConfigManager.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package dev.ftb.mods.ftblibrary.config.manager;
22

3+
import de.marhali.json5.Json5;
34
import dev.ftb.mods.ftblibrary.FTBLibrary;
45
import dev.ftb.mods.ftblibrary.client.config.EditableConfigGroup;
56
import dev.ftb.mods.ftblibrary.config.ConfigUtil;
67
import dev.ftb.mods.ftblibrary.config.serializer.Json5ConfigSerializer;
78
import dev.ftb.mods.ftblibrary.config.value.Config;
9+
import dev.ftb.mods.ftblibrary.json5.Json5Util;
810
import dev.ftb.mods.ftblibrary.net.SyncConfigFromServerPacket;
911
import dev.ftb.mods.ftblibrary.platform.network.Server2PlayNetworking;
10-
import de.marhali.json5.Json5;
11-
import dev.ftb.mods.ftblibrary.json5.Json5Util;
1212
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
1313
import net.minecraft.server.MinecraftServer;
1414
import net.minecraft.server.level.ServerPlayer;
15+
import org.jspecify.annotations.Nullable;
1516

1617
import java.io.IOException;
1718
import java.nio.file.Files;
@@ -119,9 +120,11 @@ public void save(String key) {
119120
if (tc == null) {
120121
throw new IllegalArgumentException("Unknown tracked config: " + key);
121122
}
123+
if (tc.loadedFrom == null) {
124+
throw new IllegalArgumentException("Tracked config " + key + " not fully initialised (trying to save before tracking?)");
125+
}
122126

123127
try {
124-
// SNBTConfigSerializer.writeToFile(tc.config, tc.loadedFrom);
125128
Json5ConfigSerializer.writeToFile(tc.config, tc.loadedFrom);
126129
FTBLibrary.LOGGER.debug("saved config name={} path={}", key, tc.loadedFrom);
127130
} catch (IOException e) {
@@ -173,7 +176,7 @@ public void onServerStarting(MinecraftServer server) {
173176
}
174177

175178
public void onPlayerLogin(ServerPlayer serverPlayer) {
176-
trackedConfigs.forEach((name, tc) -> {
179+
trackedConfigs.values().forEach(tc -> {
177180
if (tc.synced) {
178181
Server2PlayNetworking.send(serverPlayer, SyncConfigFromServerPacket.create(tc.config));
179182
}
@@ -197,15 +200,14 @@ void findAndLoad(String key, TrackedConfig protoTc, Function<String, Path> overr
197200

198201
private void loadAndTrack(String key, TrackedConfig protoTc, Path path) {
199202
try {
200-
// SNBTConfigSerializer.readFromFile(protoTc.config, path);
201203
Json5ConfigSerializer.readFromFile(protoTc.config, path);
202-
track(key, protoTc.promoteToFull(path));
204+
startTracking(key, protoTc.promoteToFull(path));
203205
} catch (IOException e) {
204206
FTBLibrary.LOGGER.error("can't read config {} from {}: {}/{}", key, path, e.getClass().getName(), e.getMessage());
205207
}
206208
}
207209

208-
void track(String key, TrackedConfig trackedConfig) {
210+
void startTracking(String key, TrackedConfig trackedConfig) {
209211
trackedConfigs.put(key, trackedConfig);
210212
FTBLibrary.LOGGER.debug("tracking config {}, loaded from {}", key, trackedConfig.loadedFrom);
211213
}
@@ -240,7 +242,7 @@ public Optional<EditableConfigGroup> createConfigGroup(String configName) {
240242
* receives true if server-side (i.e. config received from client after GUI editing),
241243
* false if client-side (i.e. config has just been edited via GUI)
242244
*/
243-
record TrackedConfig(Path loadedFrom, ConfigType configType, Config config, boolean synced, BooleanConsumer onEdited, String groupPrefix) {
245+
record TrackedConfig(@Nullable Path loadedFrom, ConfigType configType, Config config, boolean synced, BooleanConsumer onEdited, String groupPrefix) {
244246
static final BooleanConsumer NO_ACTION = isServer -> {};
245247

246248
/**

common/src/main/java/dev/ftb/mods/ftblibrary/config/manager/ConfigManagerClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static void onClientStarted(Minecraft minecraft) {
1515
// all synced server configs are also registered on the client (but not saved there!)
1616
mgr.pendingServer.forEach((key, config) -> {
1717
if (config.synced()) {
18-
mgr.track(key, config.clientMirrorOfServerConfig());
18+
mgr.startTracking(key, config.clientMirrorOfServerConfig());
1919
}
2020
});
2121
}

common/src/main/java/dev/ftb/mods/ftblibrary/icon/LazyIcon.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,6 @@ public LazyIcon(Lazy<Icon<?>> iconSupplier) {
1515

1616
public Icon<?> getDelegate() {
1717
return iconSupplier.get();
18-
// if (cachedIcon == null) {
19-
// cachedIcon = iconSupplier.get();
20-
//
21-
// if (cachedIcon == null || cachedIcon.isEmpty()) {
22-
// cachedIcon = Icon.empty();
23-
// }
24-
// }
25-
//
26-
// return cachedIcon;
2718
}
2819

2920
@Override
@@ -41,21 +32,6 @@ public JsonElement getJson() {
4132
return getDelegate().getJson();
4233
}
4334

44-
// @Override
45-
// public Icon<?> withColor(Color4I color) {
46-
// return getDelegate().withColor(color);
47-
// }
48-
49-
// @Override
50-
// public Icon<?> withTint(Color4I color) {
51-
// return getDelegate().withTint(color);
52-
// }
53-
//
54-
// @Override
55-
// public Icon<?> withUV(float u0, float v0, float u1, float v1) {
56-
// return getDelegate().withUV(u0, v0, u1, v1);
57-
// }
58-
5935
public int hashCode() {
6036
return getJson().hashCode();
6137
}

common/src/main/java/dev/ftb/mods/ftblibrary/platform/Misc.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,38 @@
22

33
import com.mojang.blaze3d.platform.InputConstants;
44
import net.minecraft.client.KeyMapping;
5+
import net.minecraft.core.BlockPos;
56
import net.minecraft.network.chat.Component;
67
import net.minecraft.world.entity.player.Player;
8+
import net.minecraft.world.item.ItemStack;
79
import net.minecraft.world.level.block.Block;
10+
import net.minecraft.world.level.block.state.BlockState;
811

912
public interface Misc {
1013
boolean matchesWithoutConflicts(KeyMapping keyBinding, InputConstants.Key keyCode);
1114

1215
Component componentWithLinks(String message);
1316

14-
/**
15-
* Platform-independent method to clear a player's cached display name, which may have been modified by either
16-
* the Forge {@code PlayerEvent.NameFormat} event, or our own Fabric {@code PlayerDisplayNameCallback} event.
17-
* Call this whenever the data required by any handlers for these events changes.
18-
*
19-
* @param player the player in question
20-
*/
17+
/// Platform-independent method to clear a player's cached display name, which may have been modified by either
18+
/// the Forge `PlayerEvent.NameFormat` event, or our own Fabric `PlayerDisplayNameCallback` event.
19+
/// Call this whenever the data required by any handlers for these events changes.
20+
///
21+
/// @param player the player in question
2122
void refreshDisplayName(Player player);
2223

24+
/// How many "sub-units" are in a bucket? Defintion of a "sub-unit" depends on the mod loader; NeoForge uses
25+
/// millibuckets (mB), and Fabric uses droplets.
2326
long bucketFluidAmount();
2427

2528
boolean isFakePlayer(Player player);
2629

2730
boolean isRailBlock(Block block);
31+
32+
boolean playerHasCorrectTool(Player player, BlockPos pos, BlockState state) ;
33+
34+
boolean canAxeStrip(ItemStack stack);
35+
36+
boolean canTillSoil(ItemStack stack);
37+
38+
boolean canFlattenPath(ItemStack stack);
2839
}

common/src/main/java/dev/ftb/mods/ftblibrary/platform/Platform.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import dev.ftb.mods.ftblibrary.platform.network.Networking;
44
import dev.ftb.mods.ftblibrary.platform.registry.XRegistry;
55
import dev.ftb.mods.ftblibrary.platform.transfer.Transfer;
6-
76
import net.minecraft.core.Registry;
87
import net.minecraft.resources.Identifier;
98
import net.minecraft.resources.ResourceKey;

common/src/main/java/dev/ftb/mods/ftblibrary/platform/registry/XRegistry.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,33 @@
22

33
import dev.ftb.mods.ftblibrary.platform.Platform;
44
import net.minecraft.core.Registry;
5+
import net.minecraft.core.registries.Registries;
56
import net.minecraft.resources.ResourceKey;
67

78
import java.util.function.Supplier;
89

10+
/// Cross-platform registry object, abstracting Fabric and NeoForge object registration.
11+
/// @param <T> the registry type
912
public interface XRegistry<T> {
13+
/// Create a cross-platform registry abstraction for a given object type. Create this as a static final
14+
/// object.
15+
///
16+
/// @param modId your mod ID
17+
/// @param registryKey ID of the registry being abstracted (vanilla registries are all in [Registries])
18+
/// @return the registry abstraction
19+
/// @param <T> the object type
1020
static <T> XRegistry<T> create(String modId, ResourceKey<Registry<T>> registryKey) {
1121
return Platform.get().createRegistry(modId, registryKey);
1222
}
1323

24+
/// Initialize the registry abstraction with the platform-specific implementation. Call this from your mod
25+
/// constructor.
1426
void init();
1527

28+
/// Register a new object.
29+
///
30+
/// @param id the registry ID of your object (automatically namespaced with the ID passed to [#create(String, ResourceKey)]
31+
/// @param value supplier of the object being registered
32+
/// @return a registry reference (in effect an object supplier)
1633
XRegistryRef<T> register(String id, Supplier<T> value);
1734
}

fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/FabricMiscImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66
import com.mojang.blaze3d.platform.InputConstants;
77
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants;
88
import net.minecraft.client.KeyMapping;
9+
import net.minecraft.core.BlockPos;
910
import net.minecraft.network.chat.Component;
1011
import net.minecraft.server.level.ServerPlayer;
1112
import net.minecraft.world.entity.player.Player;
13+
import net.minecraft.world.item.AxeItem;
14+
import net.minecraft.world.item.HoeItem;
15+
import net.minecraft.world.item.ItemStack;
16+
import net.minecraft.world.item.ShovelItem;
1217
import net.minecraft.world.level.block.BaseRailBlock;
1318
import net.minecraft.world.level.block.Block;
19+
import net.minecraft.world.level.block.state.BlockState;
1420

1521
public class FabricMiscImpl implements Misc {
1622
@Override
@@ -47,4 +53,24 @@ public boolean isFakePlayer(Player player) {
4753
public boolean isRailBlock(Block block) {
4854
return block instanceof BaseRailBlock;
4955
}
56+
57+
@Override
58+
public boolean playerHasCorrectTool(Player player, BlockPos pos, BlockState state) {
59+
return player.hasCorrectToolForDrops(state);
60+
}
61+
62+
@Override
63+
public boolean canAxeStrip(ItemStack stack) {
64+
return stack.getItem() instanceof AxeItem;
65+
}
66+
67+
@Override
68+
public boolean canTillSoil(ItemStack stack) {
69+
return stack.getItem() instanceof HoeItem;
70+
}
71+
72+
@Override
73+
public boolean canFlattenPath(ItemStack stack) {
74+
return stack.getItem() instanceof ShovelItem;
75+
}
5076
}

neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoMiscImpl.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
import dev.ftb.mods.ftblibrary.platform.Misc;
44
import com.mojang.blaze3d.platform.InputConstants;
55
import net.minecraft.client.KeyMapping;
6+
import net.minecraft.core.BlockPos;
67
import net.minecraft.network.chat.Component;
78
import net.minecraft.server.level.ServerPlayer;
89
import net.minecraft.world.entity.player.Player;
10+
import net.minecraft.world.item.ItemStack;
911
import net.minecraft.world.level.block.Block;
12+
import net.minecraft.world.level.block.state.BlockState;
1013
import net.neoforged.neoforge.common.CommonHooks;
14+
import net.neoforged.neoforge.common.ItemAbilities;
1115
import net.neoforged.neoforge.common.extensions.IBaseRailBlockExtension;
1216
import net.neoforged.neoforge.common.util.FakePlayer;
1317

@@ -41,4 +45,24 @@ public boolean isFakePlayer(Player player) {
4145
public boolean isRailBlock(Block block) {
4246
return block instanceof IBaseRailBlockExtension;
4347
}
48+
49+
@Override
50+
public boolean playerHasCorrectTool(Player player, BlockPos pos, BlockState state) {
51+
return player.hasCorrectToolForDrops(state, player.level(), pos);
52+
}
53+
54+
@Override
55+
public boolean canAxeStrip(ItemStack stack) {
56+
return stack.getItem().canPerformAction(stack, ItemAbilities.AXE_STRIP);
57+
}
58+
59+
@Override
60+
public boolean canTillSoil(ItemStack stack) {
61+
return stack.getItem().canPerformAction(stack, ItemAbilities.HOE_TILL);
62+
}
63+
64+
@Override
65+
public boolean canFlattenPath(ItemStack stack) {
66+
return stack.getItem().canPerformAction(stack, ItemAbilities.SHOVEL_FLATTEN);
67+
}
4468
}

neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoPlatformImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010
import net.minecraft.resources.Identifier;
1111
import net.minecraft.resources.ResourceKey;
1212
import net.minecraft.server.packs.resources.PreparableReloadListener;
13-
import net.neoforged.fml.ModContainer;
1413
import net.neoforged.fml.ModList;
1514
import net.neoforged.fml.loading.FMLEnvironment;
16-
import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent;
15+
import net.neoforged.neoforge.common.NeoForge;
1716
import net.neoforged.neoforge.event.AddServerReloadListenersEvent;
1817

1918
import java.util.ArrayList;
@@ -92,10 +91,7 @@ public Transfer transfer() {
9291

9392
@Override
9493
public void addDataPackReloadListeners(String modId, Map<Identifier, PreparableReloadListener> listeners) {
95-
var modBus = ModList.get().getModContainerById(modId)
96-
.map(ModContainer::getEventBus)
97-
.orElseThrow();
98-
modBus.addListener(AddServerReloadListenersEvent.class, event -> listeners.forEach(event::addListener));
94+
NeoForge.EVENT_BUS.addListener(AddServerReloadListenersEvent.class, event -> listeners.forEach(event::addListener));
9995
}
10096

10197
@Override

0 commit comments

Comments
 (0)