mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 18:24:43 +02:00
Messy fix for now, code cleanup will happen later
This commit is contained in:
@ -6,7 +6,7 @@ public class PersistentDataConfig extends AutoUpdateConfigLoader {
|
||||
private static PersistentDataConfig instance;
|
||||
|
||||
private PersistentDataConfig() {
|
||||
super("persistentdata.yml");
|
||||
super("persistent_data.yml");
|
||||
validate();
|
||||
}
|
||||
|
||||
@ -29,9 +29,9 @@ public class PersistentDataConfig extends AutoUpdateConfigLoader {
|
||||
}
|
||||
|
||||
//Persistent Data Toggles
|
||||
|
||||
public boolean isMobPersistent(MobMetaFlagType mobMetaFlagType) {
|
||||
String key = "Persistent_Data.Mobs.Flags." + mobMetaFlagType.toString() + ".Saved_To_Disk";
|
||||
return config.getBoolean(key, false);
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.util.compat.layers.persistentdata;
|
||||
|
||||
import com.gmail.nossr50.api.exceptions.IncompleteNamespacedKeyRegister;
|
||||
import com.gmail.nossr50.config.PersistentDataConfig;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.NamespacedKey;
|
||||
@ -69,13 +70,17 @@ public class SpigotPersistentDataLayer_1_14 extends AbstractPersistentDataLayer
|
||||
|
||||
@Override
|
||||
public boolean hasMobFlag(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
||||
return livingEntity.getPersistentDataContainer().has(mobFlagKeyMap.get(flag), PersistentDataType.BYTE);
|
||||
if(PersistentDataConfig.getInstance().isMobPersistent(flag)) {
|
||||
return livingEntity.getPersistentDataContainer().has(mobFlagKeyMap.get(flag), PersistentDataType.BYTE);
|
||||
} else {
|
||||
return transientLayer.hasMobFlag(flag, livingEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMobFlags(@NotNull LivingEntity livingEntity) {
|
||||
for(NamespacedKey currentKey : mobFlagKeyMap.values()) {
|
||||
if(livingEntity.getPersistentDataContainer().has(currentKey, PersistentDataType.BYTE)) {
|
||||
for(MobMetaFlagType currentFlag : MobMetaFlagType.values()) {
|
||||
if(hasMobFlag(currentFlag, livingEntity)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -94,17 +99,25 @@ public class SpigotPersistentDataLayer_1_14 extends AbstractPersistentDataLayer
|
||||
|
||||
@Override
|
||||
public void flagMetadata(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
||||
if(!hasMobFlag(flag, livingEntity)) {
|
||||
PersistentDataContainer persistentDataContainer = livingEntity.getPersistentDataContainer();
|
||||
persistentDataContainer.set(mobFlagKeyMap.get(flag), PersistentDataType.BYTE, SIMPLE_FLAG_VALUE);
|
||||
if(PersistentDataConfig.getInstance().isMobPersistent(flag)) {
|
||||
if(!hasMobFlag(flag, livingEntity)) {
|
||||
PersistentDataContainer persistentDataContainer = livingEntity.getPersistentDataContainer();
|
||||
persistentDataContainer.set(mobFlagKeyMap.get(flag), PersistentDataType.BYTE, SIMPLE_FLAG_VALUE);
|
||||
}
|
||||
} else {
|
||||
transientLayer.flagMetadata(flag, livingEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMobFlag(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
||||
if(hasMobFlag(flag, livingEntity)) {
|
||||
PersistentDataContainer persistentDataContainer = livingEntity.getPersistentDataContainer();
|
||||
persistentDataContainer.remove(mobFlagKeyMap.get(flag));
|
||||
if(PersistentDataConfig.getInstance().isMobPersistent(flag)) {
|
||||
if(hasMobFlag(flag, livingEntity)) {
|
||||
PersistentDataContainer persistentDataContainer = livingEntity.getPersistentDataContainer();
|
||||
persistentDataContainer.remove(mobFlagKeyMap.get(flag));
|
||||
}
|
||||
} else {
|
||||
transientLayer.removeMobFlag(flag, livingEntity);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user