tutorial:persistent_states
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tutorial:persistent_states [2023/09/28 05:28] – Updated for fabric 1.20.2 jmanc3 | tutorial:persistent_states [2024/04/25 14:06] (current) – mayaqq | ||
---|---|---|---|
Line 128: | Line 128: | ||
// ... (Previously written code) | // ... (Previously written code) | ||
- | public static StateSaverAndLoader createFromNbt(NbtCompound tag) { | + | public static StateSaverAndLoader createFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { |
StateSaverAndLoader state = new StateSaverAndLoader(); | StateSaverAndLoader state = new StateSaverAndLoader(); | ||
state.totalDirtBlocksBroken = tag.getInt(" | state.totalDirtBlocksBroken = tag.getInt(" | ||
Line 136: | Line 136: | ||
</ | </ | ||
- | This function does the opposite of '' | + | This function does the opposite of '' |
* Note: how we pull out the int we stored earlier with '' | * Note: how we pull out the int we stored earlier with '' | ||
- | Now we just need to add one more utility function which hooks everything up together. This function will take a '' | + | Now we just need to add one more utility function which hooks everything up together. This function will take a '' |
<code java> | <code java> | ||
Line 146: | Line 146: | ||
// ... (Previously written code) | // ... (Previously written code) | ||
+ | |||
+ | private static Type< | ||
+ | StateSaverAndLoader:: | ||
+ | StateSaverAndLoader:: | ||
+ | null // Supposed to be an ' | ||
+ | ); | ||
public static StateSaverAndLoader getServerState(MinecraftServer server) { | public static StateSaverAndLoader getServerState(MinecraftServer server) { | ||
Line 154: | Line 160: | ||
// stores it inside the ' | // stores it inside the ' | ||
// ' | // ' | ||
- | | + | StateSaverAndLoader state = persistentStateManager.getOrCreate(type, ExampleMod.MOD_ID); |
- | // (Note: ' | + | |
- | | + | |
- | new Type<> | + | |
- | | + | |
// If state is not marked dirty, when Minecraft closes, ' | // If state is not marked dirty, when Minecraft closes, ' | ||
Line 191: | Line 193: | ||
} | } | ||
- | public static StateSaverAndLoader createFromNbt(NbtCompound tag) { | + | public static StateSaverAndLoader createFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { |
StateSaverAndLoader state = new StateSaverAndLoader(); | StateSaverAndLoader state = new StateSaverAndLoader(); | ||
state.totalDirtBlocksBroken = tag.getInt(" | state.totalDirtBlocksBroken = tag.getInt(" | ||
return state; | return state; | ||
} | } | ||
+ | |||
+ | private static Type< | ||
+ | StateSaverAndLoader:: | ||
+ | StateSaverAndLoader:: | ||
+ | null // Supposed to be an ' | ||
+ | ); | ||
public static StateSaverAndLoader getServerState(MinecraftServer server) { | public static StateSaverAndLoader getServerState(MinecraftServer server) { | ||
Line 204: | Line 212: | ||
// stores it inside the ' | // stores it inside the ' | ||
// ' | // ' | ||
- | | + | StateSaverAndLoader state = persistentStateManager.getOrCreate(type, ExampleMod.MOD_ID); |
- | // (Note: ' | + | |
- | | + | |
- | new Type<> | + | |
- | | + | |
// If state is not marked dirty, when Minecraft closes, ' | // If state is not marked dirty, when Minecraft closes, ' | ||
Line 279: | Line 283: | ||
<code java> | <code java> | ||
class PlayerData { | class PlayerData { | ||
- | int dirtBlocksBroken = 0; | + | |
} | } | ||
</ | </ | ||
Line 424: | Line 428: | ||
} | } | ||
- | public static StateSaverAndLoader createFromNbt(NbtCompound tag) { | + | public static StateSaverAndLoader createFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { |
StateSaverAndLoader state = new StateSaverAndLoader(); | StateSaverAndLoader state = new StateSaverAndLoader(); | ||
state.totalDirtBlocksBroken = tag.getInt(" | state.totalDirtBlocksBroken = tag.getInt(" | ||
Line 482: | Line 486: | ||
} | } | ||
- | public static StateSaverAndLoader createFromNbt(NbtCompound tag) { | + | public static StateSaverAndLoader createFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { |
StateSaverAndLoader state = new StateSaverAndLoader(); | StateSaverAndLoader state = new StateSaverAndLoader(); | ||
state.totalDirtBlocksBroken = tag.getInt(" | state.totalDirtBlocksBroken = tag.getInt(" | ||
Line 498: | Line 502: | ||
return state; | return state; | ||
} | } | ||
+ | |||
+ | private static Type< | ||
+ | StateSaverAndLoader:: | ||
+ | StateSaverAndLoader:: | ||
+ | null // Supposed to be an ' | ||
+ | ); | ||
public static StateSaverAndLoader getServerState(MinecraftServer server) { | public static StateSaverAndLoader getServerState(MinecraftServer server) { | ||
Line 506: | Line 516: | ||
// stores it inside the ' | // stores it inside the ' | ||
// ' | // ' | ||
- | | + | StateSaverAndLoader state = persistentStateManager.getOrCreate(type, ExampleMod.MOD_ID); |
- | // (Note: ' | + | |
- | | + | |
- | new Type<> | + | |
- | | + | |
// If state is not marked dirty, when Minecraft closes, ' | // If state is not marked dirty, when Minecraft closes, ' | ||
Line 535: | Line 541: | ||
Running the client now, all our player-specific data is correctly saved. | Running the client now, all our player-specific data is correctly saved. | ||
- | | + | ==== Important Caveat ==== |
+ | |||
+ | | ||
Just remember if you add new fields to '' | Just remember if you add new fields to '' | ||
Line 640: | Line 648: | ||
* Note: The '' | * Note: The '' | ||
- | | + | ==== Important Caveat ==== |
+ | |||
+ | | ||
====== More Involved Player Data ====== | ====== More Involved Player Data ====== | ||
Line 654: | Line 664: | ||
public class PlayerData { | public class PlayerData { | ||
- | int dirtBlocksBroken = 0; | + | |
public HashMap< | public HashMap< | ||
Line 704: | Line 714: | ||
} | } | ||
- | public static StateSaverAndLoader createFromNbt(NbtCompound tag) { | + | public static StateSaverAndLoader createFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { |
StateSaverAndLoader state = new StateSaverAndLoader(); | StateSaverAndLoader state = new StateSaverAndLoader(); | ||
state.totalDirtBlocksBroken = tag.getInt(" | state.totalDirtBlocksBroken = tag.getInt(" | ||
Line 731: | Line 741: | ||
return state; | return state; | ||
} | } | ||
+ | |||
+ | private static Type< | ||
+ | StateSaverAndLoader:: | ||
+ | StateSaverAndLoader:: | ||
+ | null // Supposed to be an ' | ||
+ | ); | ||
public static StateSaverAndLoader getServerState(MinecraftServer server) { | public static StateSaverAndLoader getServerState(MinecraftServer server) { | ||
Line 739: | Line 755: | ||
// stores it inside the ' | // stores it inside the ' | ||
// ' | // ' | ||
- | | + | StateSaverAndLoader state = persistentStateManager.getOrCreate(type, ExampleMod.MOD_ID); |
- | // (Note: ' | + | |
- | | + | |
- | new Type<> | + | |
- | | + | |
// If state is not marked dirty, when Minecraft closes, ' | // If state is not marked dirty, when Minecraft closes, ' |
tutorial/persistent_states.txt · Last modified: 2024/04/25 14:06 by mayaqq