diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java index 432e90aa5..c7762f77a 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java @@ -1,8 +1,5 @@ package noppes.npcs.scripted.entity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -12,9 +9,6 @@ import noppes.npcs.api.item.IItemStack; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - public class ScriptDBCPlayer extends ScriptPlayer implements IDBCPlayer { public T player; @@ -522,9 +516,9 @@ public class ScriptDBCPlayer extends ScriptPlayer i return player.getEntityData().getCompoundTag("PlayerPersisted").getByte("jrmcState2"); } - public double getFormMastery(boolean racialForm, byte form) { + public double getRacialFormMastery(byte form) { try { - String formTree = this.getFormTreeName(racialForm); + String formTree = this.getRacialTreeName(); if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMastery" + formTree)) { String[] formMasteries = player.getEntityData().getCompoundTag("PlayerPersisted"). getString("jrmcFormMastery" + formTree).split(";"); @@ -535,9 +529,9 @@ public class ScriptDBCPlayer extends ScriptPlayer i return 0.0D; } - public void setFormMastery(boolean racialForm, byte form, double value) { + public void setRacialFormMastery(byte form, double value) { try { - String formTree = this.getFormTreeName(racialForm); + String formTree = this.getRacialTreeName(); if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMastery" + formTree)) { String[] formMasteries = player.getEntityData().getCompoundTag("PlayerPersisted"). getString("jrmcFormMastery" + formTree).split(";"); @@ -560,9 +554,9 @@ public class ScriptDBCPlayer extends ScriptPlayer i } catch (Exception ignored) {} } - public void addFormMastery(boolean racialForm, byte form, double value) { + public void addRacialFormMastery(byte form, double value) { try { - String formTree = this.getFormTreeName(racialForm); + String formTree = this.getRacialTreeName(); if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMastery" + formTree)) { String[] formMasteries = player.getEntityData().getCompoundTag("PlayerPersisted"). getString("jrmcFormMastery" + formTree).split(";"); @@ -586,24 +580,105 @@ public class ScriptDBCPlayer extends ScriptPlayer i } catch (Exception ignored) {} } - private String getFormTreeName(boolean racialForm) { - if (racialForm) { - switch (this.getRace()) { - case 0: - return "Racial_Human"; - case 1: - return "Racial_Saiyan"; - case 2: - return "Racial_Half-Saiyan"; - case 3: - return "Racial_Namekian"; - case 4: - return "Racial_Arcosian"; - case 5: - return "Racial_Majin"; - } + private String getRacialTreeName() { + switch (this.getRace()) { + case 0: + return "Racial_Human"; + case 1: + return "Racial_Saiyan"; + case 2: + return "Racial_Half-Saiyan"; + case 3: + return "Racial_Namekian"; + case 4: + return "Racial_Arcosian"; + case 5: + return "Racial_Majin"; } - return "NonRacial"; + return "Racial_Human"; + } + + public double getOtherFormMastery(String formName) { + try { + if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMasteryNonRacial")) { + String masteryData = player.getEntityData().getCompoundTag("PlayerPersisted"). + getString("jrmcFormMasteryNonRacial"); + if (!masteryData.contains(formName)) { + return 0.0D; + } + + String[] formMasteries = masteryData.split(";"); + for (String masteryString : formMasteries) { + if (masteryString.split(",")[0].equals(formName)) { + return Double.parseDouble(masteryString.split(",")[1]); + } + } + } + } catch (Exception ignored) {} + return 0.0D; + } + + public void setOtherFormMastery(String formName, double value) { + try { + if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMasteryNonRacial")) { + String masteryData = player.getEntityData().getCompoundTag("PlayerPersisted"). + getString("jrmcFormMasteryNonRacial"); + if (!masteryData.contains(formName)) { + return; + } + String[] formMasteries = masteryData.split(";"); + + for (int i = 0; i < formMasteries.length; i++) { + String name = formMasteries[i].split(",")[0]; + if (name.equals(formName)) { + formMasteries[i] = name + "," + value; + } + } + + StringBuilder masteryString = new StringBuilder(); + for (int i = 0; i < formMasteries.length; i++) { + masteryString.append(formMasteries[i]); + if (i < formMasteries.length - 1) { + masteryString.append(';'); + } + } + + player.getEntityData().getCompoundTag("PlayerPersisted"). + setString("jrmcFormMasteryNonRacial", String.valueOf(masteryString)); + } + } catch (Exception ignored) {} + } + + public void addOtherFormMastery(String formName, double value) { + try { + if (player.getEntityData().getCompoundTag("PlayerPersisted").hasKey("jrmcFormMasteryNonRacial")) { + String masteryData = player.getEntityData().getCompoundTag("PlayerPersisted"). + getString("jrmcFormMasteryNonRacial"); + if (!masteryData.contains(formName)) { + return; + } + String[] formMasteries = masteryData.split(";"); + + for (int i = 0; i < formMasteries.length; i++) { + String name = formMasteries[i].split(",")[0]; + if (name.equals(formName)) { + double newMastery = Double.parseDouble(formMasteries[i].split(",")[1]) + value; + formMasteries[i] = name + "," + newMastery; + } + } + + StringBuilder masteryString = new StringBuilder(); + for (int i = 0; i < formMasteries.length; i++) { + masteryString.append(formMasteries[i]); + if (i < formMasteries.length - 1) { + masteryString.append(';'); + } + } + + player.getEntityData().getCompoundTag("PlayerPersisted"). + setString("jrmcFormMasteryNonRacial", String.valueOf(masteryString)); + } + } catch (Exception ignored) {} } public void setPowerPoints(int points){