Fixed multiplayer: cache not working.

This commit is contained in:
Christian Knaapen
2022-01-16 15:56:09 +01:00
parent 9ae02b16de
commit 68a5bab704
3 changed files with 7 additions and 23 deletions

View File

@@ -12,7 +12,7 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse' apply plugin: 'eclipse'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
version = '1.17.1-2.28' version = '1.17.1-2.31'
group = 'nl.requios.effortlessbuilding' // http://maven.apache.org/guides/mini/guide-naming-conventions.html group = 'nl.requios.effortlessbuilding' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'effortlessbuilding' archivesBaseName = 'effortlessbuilding'

View File

@@ -16,33 +16,25 @@ import javax.annotation.Nonnull;
@Mod.EventBusSubscriber @Mod.EventBusSubscriber
public class ModeSettingsManager { public class ModeSettingsManager {
private static ModeSettings cache = null;
//Retrieves the buildsettings of a player through the modeCapability capability //Retrieves the buildsettings of a player through the modeCapability capability
//Never returns null //Never returns null
@Nonnull @Nonnull
public static ModeSettings getModeSettings(Player player) { public static ModeSettings getModeSettings(Player player) {
if (cache != null) return cache;
LazyOptional<ModeCapabilityManager.IModeCapability> modeCapability = LazyOptional<ModeCapabilityManager.IModeCapability> modeCapability =
player.getCapability(ModeCapabilityManager.MODE_CAPABILITY, null); player.getCapability(ModeCapabilityManager.MODE_CAPABILITY, null);
if (modeCapability.isPresent()) { if (modeCapability.isPresent()) {
ModeCapabilityManager.IModeCapability capability = modeCapability.orElse(null); ModeCapabilityManager.IModeCapability capability = modeCapability.orElse(null);
cache = capability.getModeData(); if (capability.getModeData() == null){
if (cache == null) { capability.setModeData(new ModeSettings());
cache = new ModeSettings();
capability.setModeData(cache);
} }
//Add invalidation listener, to invalidate cache
modeCapability.addListener(self -> cache = null);
return capability.getModeData(); return capability.getModeData();
} }
EffortlessBuilding.logger.warn("Player does not have modeCapability: " + player); EffortlessBuilding.logger.warn("Player does not have modeCapability: " + player);
//Return dummy settings //Return dummy settings
return new ModeSettings(); return new ModeSettings();
// throw new IllegalArgumentException("Player does not have modeCapability capability");
} }
public static void setModeSettings(Player player, ModeSettings modeSettings) { public static void setModeSettings(Player player, ModeSettings modeSettings) {

View File

@@ -17,27 +17,19 @@ import javax.annotation.Nonnull;
@Mod.EventBusSubscriber @Mod.EventBusSubscriber
public class ModifierSettingsManager { public class ModifierSettingsManager {
private static ModifierSettings cache = null;
//Retrieves the buildsettings of a player through the modifierCapability capability //Retrieves the buildsettings of a player through the modifierCapability capability
//Never returns null //Never returns null
@Nonnull @Nonnull
public static ModifierSettings getModifierSettings(Player player) { public static ModifierSettings getModifierSettings(Player player) {
if (cache != null) return cache;
LazyOptional<ModifierCapabilityManager.IModifierCapability> modifierCapability = LazyOptional<ModifierCapabilityManager.IModifierCapability> modifierCapability =
player.getCapability(ModifierCapabilityManager.MODIFIER_CAPABILITY, null); player.getCapability(ModifierCapabilityManager.MODIFIER_CAPABILITY, null);
if (modifierCapability.isPresent()) { if (modifierCapability.isPresent()) {
ModifierCapabilityManager.IModifierCapability capability = modifierCapability.orElse(null); ModifierCapabilityManager.IModifierCapability capability = modifierCapability.orElse(null);
cache = capability.getModifierData(); if (capability.getModifierData() == null){
if (cache == null) { capability.setModifierData(new ModifierSettings());
cache = new ModifierSettings();
capability.setModifierData(cache);
} }
//Add invalidation listener, to invalidate cache return capability.getModifierData();
modifierCapability.addListener(self -> cache = null);
return cache;
} }
EffortlessBuilding.logger.warn("Player does not have modifierCapability: " + player); EffortlessBuilding.logger.warn("Player does not have modifierCapability: " + player);