mirror of
https://github.com/songoda/EpicBosses.git
synced 2024-09-28 21:37:33 +02:00
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:
parent
c7162a38df
commit
85fcf2a2c7
@ -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}'
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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."),
|
||||
|
2
pom.xml
2
pom.xml
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user