mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 13:07:29 +00:00
Apply new API
This commit is contained in:
1 parent
495fd98bfd
commit
a1a0ebdc3f
2 files changed
+206
-139
No files matched your search
@@ -99,52 +99,6 @@ public class CustomEffectController implements ICustomEffectHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect createEffect(String name) {
|
||||
if (has(name))
|
||||
return get(name);
|
||||
|
||||
CustomEffect effect = new CustomEffect();
|
||||
effect.name = name;
|
||||
|
||||
if (effect.id == -1) {
|
||||
int id = getUnusedId();
|
||||
while (getCustomEffects().containsKey(id)) {
|
||||
id = getUnusedId();
|
||||
}
|
||||
effect.id = id;
|
||||
}
|
||||
getCustomEffects().put(effect.id, effect);
|
||||
return effect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect getEffect(String name) {
|
||||
return get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteEffect(String name) {
|
||||
ICustomEffect effect = getEffect(name);
|
||||
if (effect != null) {
|
||||
CustomEffect foundEffect = getCustomEffects().remove(effect.getID());
|
||||
customEffectScriptHandlers.remove(effect.getID());
|
||||
if (foundEffect != null && foundEffect.name != null) {
|
||||
File dir = this.getDir();
|
||||
for (File file : dir.listFiles()) {
|
||||
if (!file.isFile() || !file.getName().endsWith(".json"))
|
||||
continue;
|
||||
if (file.getName().equalsIgnoreCase(foundEffect.name + ".json")) {
|
||||
file.delete();
|
||||
SyncController.syncRemove(EnumSyncType.CUSTOM_EFFECTS, foundEffect.getID());
|
||||
break;
|
||||
}
|
||||
}
|
||||
saveEffectLoadMap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void delete(int id) {
|
||||
ICustomEffect effect = get(id);
|
||||
if (effect != null) {
|
||||
@@ -243,98 +197,6 @@ public class CustomEffectController implements ICustomEffectHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEffect(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return false;
|
||||
return hasEffect((EntityPlayer) player.getMCEntity(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEffect(IPlayer player, ICustomEffect effect) {
|
||||
return hasEffect((EntityPlayer) player, effect.getID(), effect.getIndex());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return -1;
|
||||
return getEffectDuration((EntityPlayer) player.getMCEntity(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, ICustomEffect effect) {
|
||||
return getEffectDuration(player, effect.getID());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, int id, int duration, byte level) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
applyEffect((EntityPlayer) player.getMCEntity(), id, duration, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, ICustomEffect effect, int duration, byte level) {
|
||||
applyEffect(player, effect.getID(), duration, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
removeEffect((EntityPlayer) player.getMCEntity(), id, ExpirationType.REMOVED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, ICustomEffect effect) {
|
||||
removeEffect((EntityPlayer) player.getMCEntity(), (PlayerEffect) effect, ExpirationType.REMOVED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearEffects(IPlayer player) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
clearEffects((EntityPlayer) player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect saveEffect(ICustomEffect customEffect) {
|
||||
if (customEffect.getID() < 0) {
|
||||
customEffect.setID(getUnusedId());
|
||||
while (has(customEffect.getName()))
|
||||
customEffect.setName(customEffect.getName() + "_");
|
||||
}
|
||||
|
||||
while (hasOther(customEffect.getName(), customEffect.getID()))
|
||||
customEffect.setName(customEffect.getName() + "_");
|
||||
|
||||
getCustomEffects().remove(customEffect.getID());
|
||||
getCustomEffects().put(customEffect.getID(), (CustomEffect) customEffect);
|
||||
|
||||
saveEffectLoadMap();
|
||||
|
||||
File dir = this.getDir();
|
||||
if (!dir.exists())
|
||||
dir.mkdirs();
|
||||
|
||||
File file = new File(dir, customEffect.getName() + ".json_new");
|
||||
File file2 = new File(dir, customEffect.getName() + ".json");
|
||||
|
||||
try {
|
||||
NBTTagCompound nbtTagCompound = ((CustomEffect) customEffect).writeToNBT(true);
|
||||
NBTJsonUtil.SaveFile(file, nbtTagCompound);
|
||||
if (file2.exists())
|
||||
file2.delete();
|
||||
file.renameTo(file2);
|
||||
nbtTagCompound.removeTag("ScriptData");
|
||||
SyncController.syncUpdate(EnumSyncType.CUSTOM_EFFECTS, -1, nbtTagCompound);
|
||||
} catch (Exception e) {
|
||||
LogWriter.except(e);
|
||||
}
|
||||
return getCustomEffects().get(customEffect.getID());
|
||||
}
|
||||
|
||||
private boolean hasOther(String name, int id) {
|
||||
for (CustomEffect effect : getCustomEffects().values()) {
|
||||
if (effect.getID() != id && effect.getName().equalsIgnoreCase(name))
|
||||
@@ -587,4 +449,209 @@ public class CustomEffectController implements ICustomEffectHandler {
|
||||
if (file2.exists())
|
||||
file2.delete();
|
||||
}
|
||||
|
||||
// API Versions
|
||||
@Override
|
||||
public ICustomEffect createEffect(String name) {
|
||||
if (has(name))
|
||||
return get(name);
|
||||
|
||||
CustomEffect effect = new CustomEffect();
|
||||
effect.name = name;
|
||||
|
||||
if (effect.id == -1) {
|
||||
int id = getUnusedId();
|
||||
while (getCustomEffects().containsKey(id)) {
|
||||
id = getUnusedId();
|
||||
}
|
||||
effect.id = id;
|
||||
}
|
||||
getCustomEffects().put(effect.id, effect);
|
||||
return effect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect getEffect(String name) {
|
||||
return get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteEffect(String name) {
|
||||
ICustomEffect effect = getEffect(name);
|
||||
if (effect != null) {
|
||||
CustomEffect foundEffect = getCustomEffects().remove(effect.getID());
|
||||
customEffectScriptHandlers.remove(effect.getID());
|
||||
if (foundEffect != null && foundEffect.name != null) {
|
||||
File dir = this.getDir();
|
||||
for (File file : dir.listFiles()) {
|
||||
if (!file.isFile() || !file.getName().endsWith(".json"))
|
||||
continue;
|
||||
if (file.getName().equalsIgnoreCase(foundEffect.name + ".json")) {
|
||||
file.delete();
|
||||
SyncController.syncRemove(EnumSyncType.CUSTOM_EFFECTS, foundEffect.getID());
|
||||
break;
|
||||
}
|
||||
}
|
||||
saveEffectLoadMap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEffect(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return false;
|
||||
return hasEffect((EntityPlayer) player.getMCEntity(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEffect(IPlayer player, ICustomEffect effect) {
|
||||
return hasEffect((EntityPlayer) player, effect.getID(), effect.getIndex());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return -1;
|
||||
return getEffectDuration((EntityPlayer) player.getMCEntity(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, ICustomEffect effect) {
|
||||
return getEffectDuration(player, effect.getID());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, int id, int duration, byte level) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
applyEffect((EntityPlayer) player.getMCEntity(), id, duration, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, ICustomEffect effect, int duration, byte level) {
|
||||
applyEffect(player, effect.getID(), duration, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, int id) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
removeEffect((EntityPlayer) player.getMCEntity(), id, ExpirationType.REMOVED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, ICustomEffect effect) {
|
||||
removeEffect((EntityPlayer) player.getMCEntity(), (PlayerEffect) effect, ExpirationType.REMOVED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearEffects(IPlayer player) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
clearEffects((EntityPlayer) player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, int id, int duration, byte level, int index) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
applyEffect((EntityPlayer) player.getMCEntity(), id, duration, level, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(IPlayer player, ICustomEffect effect, int duration, byte level, int index) {
|
||||
applyEffect(player, effect.getID(), duration, level, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, int id, int index) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
removeEffect((EntityPlayer) player.getMCEntity(), id, index, ExpirationType.REMOVED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeEffect(IPlayer player, ICustomEffect effect, int index) {
|
||||
removeEffect(player, effect.getID(), index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearEffects(IPlayer player, int index) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return;
|
||||
EntityPlayer entity = (EntityPlayer) player.getMCEntity();
|
||||
ConcurrentHashMap<EffectKey, PlayerEffect> effects = getPlayerEffects(entity);
|
||||
Iterator<Map.Entry<EffectKey, PlayerEffect>> iterator = effects.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<EffectKey, PlayerEffect> entry = iterator.next();
|
||||
if (entry.getKey().getIndex() == index) {
|
||||
CustomEffect parent = get(entry.getKey().getId(), index);
|
||||
if (parent != null) {
|
||||
parent.onRemoved(entity, entry.getValue(), ExpirationType.REMOVED);
|
||||
}
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, int id, int index) {
|
||||
if (player == null || player.getMCEntity() == null)
|
||||
return -1;
|
||||
return getEffectDuration((EntityPlayer) player.getMCEntity(), id, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEffectDuration(IPlayer player, ICustomEffect effect, int index) {
|
||||
return getEffectDuration(player, effect.getID(), index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect getEffect(String name, int index) {
|
||||
return get(name, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect getEffect(int id, int index) {
|
||||
return get(id, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICustomEffect saveEffect(ICustomEffect customEffect) {
|
||||
if (customEffect.getID() < 0) {
|
||||
customEffect.setID(getUnusedId());
|
||||
while (has(customEffect.getName()))
|
||||
customEffect.setName(customEffect.getName() + "_");
|
||||
}
|
||||
|
||||
while (hasOther(customEffect.getName(), customEffect.getID()))
|
||||
customEffect.setName(customEffect.getName() + "_");
|
||||
|
||||
getCustomEffects().remove(customEffect.getID());
|
||||
getCustomEffects().put(customEffect.getID(), (CustomEffect) customEffect);
|
||||
|
||||
saveEffectLoadMap();
|
||||
|
||||
File dir = this.getDir();
|
||||
if (!dir.exists())
|
||||
dir.mkdirs();
|
||||
|
||||
File file = new File(dir, customEffect.getName() + ".json_new");
|
||||
File file2 = new File(dir, customEffect.getName() + ".json");
|
||||
|
||||
try {
|
||||
NBTTagCompound nbtTagCompound = ((CustomEffect) customEffect).writeToNBT(true);
|
||||
NBTJsonUtil.SaveFile(file, nbtTagCompound);
|
||||
if (file2.exists())
|
||||
file2.delete();
|
||||
file.renameTo(file2);
|
||||
nbtTagCompound.removeTag("ScriptData");
|
||||
SyncController.syncUpdate(EnumSyncType.CUSTOM_EFFECTS, -1, nbtTagCompound);
|
||||
} catch (Exception e) {
|
||||
LogWriter.except(e);
|
||||
}
|
||||
return getCustomEffects().get(customEffect.getID());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user