1.0.0-SNAPSHOT-U143

+ Completed the SprayDropTableMain settings button
+ Added new messages
+ Converted button types to match the rest of the menu
This commit is contained in:
Charles 2018-12-25 00:17:52 +08:00
parent c7162a38df
commit 85fcf2a2c7
7 changed files with 123 additions and 18 deletions

View File

@ -2017,12 +2017,12 @@ SprayDropTableMainEditMenu:
- '&7bottom through the list.'
Button: RandomDrops
'5':
type: PAPER
type: REDSTONE
name: '&e&lGo Back'
lore:
- '&7Click here to go back.'
'7':
type: REDSTONE
type: PAPER
name: '&e&lMax Distance'
lore:
- '&bCurrently: &f{maxDistance}'

View File

@ -33,7 +33,7 @@ public class DropTable {
}
public SprayTableElement getSprayTableData() {
if(getDropType().equalsIgnoreCase("GIVE")) {
if(getDropType().equalsIgnoreCase("SPRAY")) {
return BossesGson.get().fromJson(this.rewards, SprayTableElement.class);
}

View File

@ -383,16 +383,16 @@ public class BossEntityManager {
Gson gson = BossesGson.get();
if(dropType.equalsIgnoreCase("SPRAY")) {
SprayTableElement sprayTableElement = gson.fromJson(dropTable.getRewards(), SprayTableElement.class);
SprayTableElement sprayTableElement = dropTable.getSprayTableData();
List<ItemStack> itemStacks = this.bossDropTableManager.getSprayItems(sprayTableElement);
sprayDrops(sprayTableElement, itemStacks, deadBossHolder);
} else if(dropType.equalsIgnoreCase("GIVE")) {
GiveTableElement giveTableElement = gson.fromJson(dropTable.getRewards(), GiveTableElement.class);
GiveTableElement giveTableElement = dropTable.getGiveTableData();
this.bossDropTableManager.handleGiveTable(giveTableElement, deadBossHolder);
} else if(dropType.equalsIgnoreCase("DROP")) {
DropTableElement dropTableElement = gson.fromJson(dropTable.getRewards(), DropTableElement.class);
DropTableElement dropTableElement = dropTable.getDropTableData();
List<ItemStack> itemStacks = this.bossDropTableManager.getDropItems(dropTableElement);
itemStacks.forEach(itemStack -> deadBossHolder.getLocation().getWorld().dropItemNaturally(deadBossHolder.getLocation(), itemStack));

View File

@ -209,8 +209,8 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("DropTableMainEditorPanel"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("DropTableTypeEditorPanel"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("GiveDropTableMainEditMenu"));
PanelBuilder panelBuilder4 = new PanelBuilder(editor.getConfigurationSection("DropDropTableMainEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
PanelBuilder panelBuilder4 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
this.mainDropTableEditMenu = new MainDropTableEditorPanel(this, panelBuilder);
this.dropTableTypeEditMenu = new DropTableTypeEditorPanel(this, panelBuilder1, this.customBosses);
@ -224,8 +224,8 @@ public class BossPanelManager implements ILoadable, IReloadable {
PanelBuilder panelBuilder = new PanelBuilder(editor.getConfigurationSection("DropTableMainEditorPanel"));
PanelBuilder panelBuilder1 = new PanelBuilder(editor.getConfigurationSection("DropTableTypeEditorPanel"));
PanelBuilder panelBuilder2 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("GiveDropTableMainEditMenu"));
PanelBuilder panelBuilder4 = new PanelBuilder(editor.getConfigurationSection("DropDropTableMainEditMenu"));
PanelBuilder panelBuilder3 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
PanelBuilder panelBuilder4 = new PanelBuilder(editor.getConfigurationSection("SprayDropTableMainEditMenu"));
this.mainDropTableEditMenu.initializePanel(panelBuilder);
this.dropTableTypeEditMenu.initializePanel(panelBuilder1);

View File

@ -1,17 +1,21 @@
package com.songoda.epicbosses.panel.droptables.types.spray;
import com.google.gson.JsonObject;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.droptable.elements.SprayTableElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.utils.Message;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.StringUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.ClickAction;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import java.util.HashMap;
import java.util.Map;
@ -23,8 +27,12 @@ import java.util.Map;
*/
public class SprayDropTableMainEditorPanel extends SubVariablePanelHandler<DropTable, SprayTableElement> {
private CustomBosses plugin;
public SprayDropTableMainEditorPanel(BossPanelManager bossPanelManager, PanelBuilder panelBuilder, CustomBosses plugin) {
super(bossPanelManager, panelBuilder);
this.plugin = plugin;
}
@Override
@ -36,21 +44,28 @@ public class SprayDropTableMainEditorPanel extends SubVariablePanelHandler<DropT
public void openFor(Player player, DropTable dropTable, SprayTableElement sprayTableElement) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
Boolean randomSprayDrops = sprayTableElement.getRandomSprayDrops();
Integer maxDrops = sprayTableElement.getSprayMaxDrops();
Integer maxDistance = sprayTableElement.getSprayMaxDistance();
if(randomSprayDrops == null) randomSprayDrops = false;
if(maxDrops == null) maxDrops = -1;
if(maxDistance == null) maxDistance = 100;
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{randomDrops}", StringUtils.get().formatString(""+sprayTableElement.getRandomSprayDrops()));
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(sprayTableElement.getSprayMaxDrops()));
replaceMap.put("{maxDistance}", NumberUtils.get().formatDouble(sprayTableElement.getSprayMaxDistance()));
replaceMap.put("{randomDrops}", StringUtils.get().formatString(""+randomSprayDrops));
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{maxDistance}", NumberUtils.get().formatDouble(maxDistance));
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getDropTables());
.setParentPanelHandler(this.bossPanelManager.getMainDropTableEditMenu(), dropTable);
panelBuilderCounter.getSlotsWith("Rewards").forEach(slot -> panel.setOnClick(slot, event -> {}));
panelBuilderCounter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, event -> {}));
panelBuilderCounter.getSlotsWith("MaxDistance").forEach(slot -> panel.setOnClick(slot, event -> {}));
panelBuilderCounter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, event -> {}));
panelBuilderCounter.getSlotsWith("RandomDrops").forEach(slot -> panel.setOnClick(slot, getRandomDropsAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDistance").forEach(slot -> panel.setOnClick(slot, getMaxDistanceAction(dropTable, sprayTableElement)));
panelBuilderCounter.getSlotsWith("MaxDrops").forEach(slot -> panel.setOnClick(slot, getMaxDropsAction(dropTable, sprayTableElement)));
panel.openFor(player);
}
@ -59,4 +74,91 @@ public class SprayDropTableMainEditorPanel extends SubVariablePanelHandler<DropT
public void initializePanel(PanelBuilder panelBuilder) {
}
private ClickAction getRandomDropsAction(DropTable dropTable, SprayTableElement sprayTableElement) {
return event -> {
Boolean currentValue = sprayTableElement.getRandomSprayDrops();
if(currentValue == null) currentValue = false;
boolean newValue = !currentValue;
sprayTableElement.setRandomSprayDrops(newValue);
saveDropTable(dropTable, (Player) event.getWhoClicked(), sprayTableElement, BossAPI.convertObjectToJsonObject(sprayTableElement));
Message.Boss_DropTable_SetRandomDrops.msg(event.getWhoClicked(), newValue);
};
}
private ClickAction getMaxDistanceAction(DropTable dropTable, SprayTableElement sprayTableElement) {
return event -> {
ClickType clickType = event.getClick();
int amountToModifyBy;
if(clickType == ClickType.SHIFT_LEFT) {
amountToModifyBy = 10;
} else if(clickType == ClickType.RIGHT) {
amountToModifyBy = -1;
} else if(clickType == ClickType.SHIFT_RIGHT) {
amountToModifyBy = -10;
} else {
amountToModifyBy = 1;
}
String modifyValue = amountToModifyBy > 0? "increased" : "decreased";
Integer currentAmount = sprayTableElement.getSprayMaxDistance();
if(currentAmount == null) currentAmount = 100;
int newAmount = currentAmount + amountToModifyBy;
if(newAmount < 0) {
newAmount = 0;
}
sprayTableElement.setSprayMaxDistance(newAmount);
saveDropTable(dropTable, (Player) event.getWhoClicked(), sprayTableElement, BossAPI.convertObjectToJsonObject(sprayTableElement));
Message.Boss_DropTable_SetMaxDistance.msg(event.getWhoClicked(), modifyValue, NumberUtils.get().formatDouble(newAmount));
};
}
private ClickAction getMaxDropsAction(DropTable dropTable, SprayTableElement sprayTableElement) {
return event -> {
ClickType clickType = event.getClick();
int amountToModifyBy;
if(clickType == ClickType.SHIFT_LEFT) {
amountToModifyBy = 10;
} else if(clickType == ClickType.RIGHT) {
amountToModifyBy = -1;
} else if(clickType == ClickType.SHIFT_RIGHT) {
amountToModifyBy = -10;
} else {
amountToModifyBy = 1;
}
String modifyValue = amountToModifyBy > 0? "increased" : "decreased";
Integer currentAmount = sprayTableElement.getSprayMaxDrops();
if(currentAmount == null) currentAmount = -1;
int newAmount = currentAmount + amountToModifyBy;
if(newAmount < -1) {
newAmount = -1;
}
sprayTableElement.setSprayMaxDrops(newAmount);
saveDropTable(dropTable, (Player) event.getWhoClicked(), sprayTableElement, BossAPI.convertObjectToJsonObject(sprayTableElement));
Message.Boss_DropTable_SetMaxDrops.msg(event.getWhoClicked(), modifyValue, NumberUtils.get().formatDouble(newAmount));
};
}
private void saveDropTable(DropTable dropTable, Player player, SprayTableElement sprayTableElement, JsonObject jsonObject) {
dropTable.setRewards(jsonObject);
this.plugin.getDropTableFileManager().save();
openFor(player, dropTable, sprayTableElement);
}
}

View File

@ -35,6 +35,9 @@ public enum Message {
Boss_Debug_Toggled("&b&lEpicBosses &8» &7You have toggled debug mode for &fEpicBosses &7to {0}."),
Boss_DropTable_NoPermission("&c&l(!) &cYou do not have access to this command."),
Boss_DropTable_SetMaxDrops("&b&lEpicBosses &8» &7You have {0} the max drops for the drop table to &f{1}&7."),
Boss_DropTable_SetMaxDistance("&b&lEpicBosses &8» &7You have {0} the max distance for the drop table to &f{1}&7."),
Boss_DropTable_SetRandomDrops("&b&lEpicBosses &8» &7You have set the random drops mode for the drop table to &f{0}&7."),
Boss_Edit_NoPermission("&c&l(!) &cYou do not have access to this command."),
Boss_Edit_ItemStackHolderNull("&c&l(!) &cThe itemstack name that is provided for the spawn item doesn't exist or wasn't found."),

View File

@ -20,7 +20,7 @@
<properties>
<!--<plugin.version>maven-version-number-SNAPSHOT-U90</plugin.version>-->
<plugin.version>1.0.0-U142</plugin.version>
<plugin.version>1.0.0-U143</plugin.version>
<plugin.name>EpicBosses</plugin.name>
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
<plugin.author>AMinecraftDev</plugin.author>