|
@@ -1,6 +1,7 @@
|
|
package com.gmail.nossr50.util.compat.layers.persistentdata;
|
|
package com.gmail.nossr50.util.compat.layers.persistentdata;
|
|
|
|
|
|
import com.gmail.nossr50.api.exceptions.IncompleteNamespacedKeyRegister;
|
|
import com.gmail.nossr50.api.exceptions.IncompleteNamespacedKeyRegister;
|
|
|
|
+import com.gmail.nossr50.config.PersistentDataConfig;
|
|
import com.gmail.nossr50.mcMMO;
|
|
import com.gmail.nossr50.mcMMO;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.NamespacedKey;
|
|
import org.bukkit.NamespacedKey;
|
|
@@ -69,13 +70,17 @@ public class SpigotPersistentDataLayer_1_14 extends AbstractPersistentDataLayer
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean hasMobFlag(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
|
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
|
|
@Override
|
|
public boolean hasMobFlags(@NotNull LivingEntity livingEntity) {
|
|
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;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -94,17 +99,25 @@ public class SpigotPersistentDataLayer_1_14 extends AbstractPersistentDataLayer
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void flagMetadata(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
|
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
|
|
@Override
|
|
public void removeMobFlag(@NotNull MobMetaFlagType flag, @NotNull LivingEntity livingEntity) {
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|