mirror of
https://github.com/songoda/EpicBosses.git
synced 2024-09-28 05:18:01 +02:00
1.0.0-SNAPSHOT-U186
+ Connected LocationButton and PlaceholderButton for the IntervalSpawn Panel
This commit is contained in:
parent
851c5f7785
commit
8ab23d96e8
@ -7,6 +7,9 @@ import com.songoda.epicbosses.autospawns.AutoSpawn;
|
|||||||
import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings;
|
import com.songoda.epicbosses.autospawns.settings.AutoSpawnSettings;
|
||||||
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
|
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
|
||||||
import com.songoda.epicbosses.entity.BossEntity;
|
import com.songoda.epicbosses.entity.BossEntity;
|
||||||
|
import com.songoda.epicbosses.handlers.AutoSpawnVariableHandler;
|
||||||
|
import com.songoda.epicbosses.handlers.variables.AutoSpawnLocationVariableHandler;
|
||||||
|
import com.songoda.epicbosses.handlers.variables.AutoSpawnPlaceholderVariableHandler;
|
||||||
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
import com.songoda.epicbosses.holder.ActiveBossHolder;
|
||||||
import com.songoda.epicbosses.holder.autospawn.ActiveIntervalAutoSpawnHolder;
|
import com.songoda.epicbosses.holder.autospawn.ActiveIntervalAutoSpawnHolder;
|
||||||
import com.songoda.epicbosses.listeners.IBossDeathHandler;
|
import com.songoda.epicbosses.listeners.IBossDeathHandler;
|
||||||
@ -74,15 +77,24 @@ public class IntervalSpawnHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ClickAction getSpawnAfterLastBossIsKilledAction(IntervalSpawnElement intervalSpawnElement) {
|
public ClickAction getSpawnAfterLastBossIsKilledAction(IntervalSpawnElement intervalSpawnElement) {
|
||||||
return event -> {};
|
return event -> {
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getSpawnAfterLastBossIsKilledExtraInformation() {
|
public List<String> getSpawnAfterLastBossIsKilledExtraInformation() {
|
||||||
return Arrays.asList("&7Click here to toggle the timer", "&7being enabled/reset after the last boss is killed.", "&7This will make it so only one active", "&7boss from this section can be spawned", "&7at a time.");
|
return Arrays.asList("&7Click here to toggle the timer", "&7being enabled/reset after the last boss is killed.", "&7This will make it so only one active", "&7boss from this section can be spawned", "&7at a time.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClickAction getLocationAction(IntervalSpawnElement intervalSpawnElement) {
|
public ClickAction getLocationAction(IntervalSpawnElement intervalSpawnElement, AutoSpawn autoSpawn, VariablePanelHandler<AutoSpawn> variablePanelHandler) {
|
||||||
return event -> {};
|
return event -> {
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
AutoSpawnVariableHandler autoSpawnVariableHandler = new AutoSpawnLocationVariableHandler(player, autoSpawn, intervalSpawnElement, CustomBosses.get().getAutoSpawnFileManager(), variablePanelHandler);
|
||||||
|
|
||||||
|
Message.Boss_AutoSpawn_SetLocation.msg(player);
|
||||||
|
autoSpawnVariableHandler.handle();
|
||||||
|
player.closeInventory();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getLocationExtraInformation() {
|
public List<String> getLocationExtraInformation() {
|
||||||
@ -90,7 +102,14 @@ public class IntervalSpawnHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ClickAction getPlaceholderAction(IntervalSpawnElement intervalSpawnElement, AutoSpawn autoSpawn, VariablePanelHandler<AutoSpawn> variablePanelHandler) {
|
public ClickAction getPlaceholderAction(IntervalSpawnElement intervalSpawnElement, AutoSpawn autoSpawn, VariablePanelHandler<AutoSpawn> variablePanelHandler) {
|
||||||
return event -> {};
|
return event -> {
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
AutoSpawnVariableHandler autoSpawnVariableHandler = new AutoSpawnPlaceholderVariableHandler(player, autoSpawn, intervalSpawnElement, CustomBosses.get().getAutoSpawnFileManager(), variablePanelHandler);
|
||||||
|
|
||||||
|
Message.Boss_AutoSpawn_SetLocation.msg(player);
|
||||||
|
autoSpawnVariableHandler.handle();
|
||||||
|
player.closeInventory();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getPlaceholderExtraInformation() {
|
public List<String> getPlaceholderExtraInformation() {
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.songoda.epicbosses.handlers;
|
package com.songoda.epicbosses.handlers;
|
||||||
|
|
||||||
|
import com.songoda.epicbosses.api.BossAPI;
|
||||||
import com.songoda.epicbosses.autospawns.AutoSpawn;
|
import com.songoda.epicbosses.autospawns.AutoSpawn;
|
||||||
|
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
|
||||||
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
|
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
|
||||||
import com.songoda.epicbosses.utils.IHandler;
|
import com.songoda.epicbosses.utils.IHandler;
|
||||||
import com.songoda.epicbosses.utils.Message;
|
import com.songoda.epicbosses.utils.Message;
|
||||||
@ -20,28 +22,32 @@ import java.util.UUID;
|
|||||||
/**
|
/**
|
||||||
* @author Charles Cullen
|
* @author Charles Cullen
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 07-Jan-19
|
* @since 08-Jan-19
|
||||||
*/
|
*/
|
||||||
public class AutoSpawnLocationHandler implements IHandler {
|
public abstract class AutoSpawnVariableHandler implements IHandler {
|
||||||
|
|
||||||
@Getter private final IVariablePanelHandler<AutoSpawn> panelHandler;
|
@Getter private final IVariablePanelHandler<AutoSpawn> panelHandler;
|
||||||
|
|
||||||
@Getter private AutoSpawnFileManager autoSpawnFileManager;
|
@Getter private final IntervalSpawnElement intervalSpawnElement;
|
||||||
|
@Getter private final AutoSpawnFileManager autoSpawnFileManager;
|
||||||
@Getter private final AutoSpawn autoSpawn;
|
@Getter private final AutoSpawn autoSpawn;
|
||||||
@Getter private final Player player;
|
@Getter private final Player player;
|
||||||
|
|
||||||
@Getter @Setter private boolean handled = false;
|
@Getter @Setter private boolean handled = false;
|
||||||
private Listener listener;
|
private Listener listener;
|
||||||
|
|
||||||
public AutoSpawnLocationHandler(Player player, AutoSpawn autoSpawn, AutoSpawnFileManager autoSpawnFileManager, IVariablePanelHandler<AutoSpawn> panelHandler) {
|
public AutoSpawnVariableHandler(Player player, AutoSpawn autoSpawn, IntervalSpawnElement intervalSpawnElement, AutoSpawnFileManager autoSpawnFileManager, IVariablePanelHandler<AutoSpawn> panelHandler) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.autoSpawn = autoSpawn;
|
this.autoSpawn = autoSpawn;
|
||||||
this.panelHandler = panelHandler;
|
this.panelHandler = panelHandler;
|
||||||
this.autoSpawnFileManager = autoSpawnFileManager;
|
this.autoSpawnFileManager = autoSpawnFileManager;
|
||||||
|
this.intervalSpawnElement = intervalSpawnElement;
|
||||||
|
|
||||||
this.listener = getListener();
|
this.listener = getListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract boolean confirmValue(String input, IntervalSpawnElement intervalSpawnElement);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() {
|
public void handle() {
|
||||||
ServerUtils.get().registerListener(this.listener);
|
ServerUtils.get().registerListener(this.listener);
|
||||||
@ -64,17 +70,13 @@ public class AutoSpawnLocationHandler implements IHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(input == null) {
|
if(input == null) {
|
||||||
|
finish();
|
||||||
}
|
|
||||||
|
|
||||||
Location location = StringUtils.get().fromStringToLocation(input);
|
|
||||||
|
|
||||||
if(location == null) {
|
|
||||||
Message.Boss_AutoSpawn_InvalidLocation.msg(getPlayer(), input);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
autoSpawn.getIntervalSpawnData().setLocation(input);
|
if(!confirmValue(input, getIntervalSpawnElement())) return;
|
||||||
|
|
||||||
|
getAutoSpawn().setCustomData(BossAPI.convertObjectToJsonObject(getIntervalSpawnElement()));
|
||||||
getAutoSpawnFileManager().save();
|
getAutoSpawnFileManager().save();
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
setHandled(true);
|
setHandled(true);
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.songoda.epicbosses.handlers.variables;
|
||||||
|
|
||||||
|
import com.songoda.epicbosses.autospawns.AutoSpawn;
|
||||||
|
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
|
||||||
|
import com.songoda.epicbosses.handlers.AutoSpawnVariableHandler;
|
||||||
|
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
|
||||||
|
import com.songoda.epicbosses.utils.Message;
|
||||||
|
import com.songoda.epicbosses.utils.StringUtils;
|
||||||
|
import com.songoda.epicbosses.utils.panel.base.IVariablePanelHandler;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 07-Jan-19
|
||||||
|
*/
|
||||||
|
public class AutoSpawnLocationVariableHandler extends AutoSpawnVariableHandler {
|
||||||
|
|
||||||
|
public AutoSpawnLocationVariableHandler(Player player, AutoSpawn autoSpawn, IntervalSpawnElement intervalSpawnElement, AutoSpawnFileManager autoSpawnFileManager, IVariablePanelHandler<AutoSpawn> panelHandler) {
|
||||||
|
super(player, autoSpawn, intervalSpawnElement, autoSpawnFileManager, panelHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean confirmValue(String input, IntervalSpawnElement intervalSpawnElement) {
|
||||||
|
Location location = StringUtils.get().fromStringToLocation(input);
|
||||||
|
|
||||||
|
if(location == null) {
|
||||||
|
Message.Boss_AutoSpawn_InvalidLocation.msg(getPlayer(), input);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
intervalSpawnElement.setLocation(StringUtils.get().translateLocation(location));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.songoda.epicbosses.handlers.variables;
|
||||||
|
|
||||||
|
import com.songoda.epicbosses.autospawns.AutoSpawn;
|
||||||
|
import com.songoda.epicbosses.autospawns.types.IntervalSpawnElement;
|
||||||
|
import com.songoda.epicbosses.handlers.AutoSpawnVariableHandler;
|
||||||
|
import com.songoda.epicbosses.managers.files.AutoSpawnFileManager;
|
||||||
|
import com.songoda.epicbosses.utils.panel.base.IVariablePanelHandler;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Charles Cullen
|
||||||
|
* @version 1.0.0
|
||||||
|
* @since 08-Jan-19
|
||||||
|
*/
|
||||||
|
public class AutoSpawnPlaceholderVariableHandler extends AutoSpawnVariableHandler {
|
||||||
|
|
||||||
|
public AutoSpawnPlaceholderVariableHandler(Player player, AutoSpawn autoSpawn, IntervalSpawnElement intervalSpawnElement, AutoSpawnFileManager autoSpawnFileManager, IVariablePanelHandler<AutoSpawn> panelHandler) {
|
||||||
|
super(player, autoSpawn, intervalSpawnElement, autoSpawnFileManager, panelHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean confirmValue(String input, IntervalSpawnElement intervalSpawnElement) {
|
||||||
|
intervalSpawnElement.setPlaceholder(input);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -28,6 +28,8 @@ public enum Message {
|
|||||||
Boss_AutoSpawn_NotCompleteEnough("&c&l(!) &cThe auto spawn is not set up enough to be enabled. Please make sure it has: &fA Spawn Entity(s) and Type&c before you try and enable the auto spawn."),
|
Boss_AutoSpawn_NotCompleteEnough("&c&l(!) &cThe auto spawn is not set up enough to be enabled. Please make sure it has: &fA Spawn Entity(s) and Type&c before you try and enable the auto spawn."),
|
||||||
Boss_AutoSpawn_SpawnRate("&b&lEpicBosses &8» &7You have {0} the spawn rate of the auto spawn to &f{1}&7."),
|
Boss_AutoSpawn_SpawnRate("&b&lEpicBosses &8» &7You have {0} the spawn rate of the auto spawn to &f{1}&7."),
|
||||||
Boss_AutoSpawn_InvalidLocation("&c&l(!) &cThe specified location string, &f{0}&c, is invalid. A correct example should be &fworld,10,150,-30&c . If you want to cancel the location update type &f- &cand you will be brought back to the settings menu."),
|
Boss_AutoSpawn_InvalidLocation("&c&l(!) &cThe specified location string, &f{0}&c, is invalid. A correct example should be &fworld,10,150,-30&c . If you want to cancel the location update type &f- &cand you will be brought back to the settings menu."),
|
||||||
|
Boss_AutoSpawn_SetLocation("&b&lEpicBosses &8» &7Your next input in to chat will be the location for the auto spawn. If you enter &f-&7 it will cancel the updating of the location. Use the format &fworld,10,150,-30&7."),
|
||||||
|
Boss_AutoSpawn_SetPlaceholder("&b&lEpicBosses &8» &7Your next input in to chat will be the placeholder for the auto spawn. If you enter &f-&7 it will cancel the updating of the location."),
|
||||||
|
|
||||||
Boss_Create_EntityTypeNotFound("&c&l(!) &cThe specified entity type {0} was not found. If you think this is an error please contact &fAMinecraftDev&c."),
|
Boss_Create_EntityTypeNotFound("&c&l(!) &cThe specified entity type {0} was not found. If you think this is an error please contact &fAMinecraftDev&c."),
|
||||||
Boss_Create_InvalidArgs("&c&l(!) &cYou must use &n/boss create [name] [entity] &c to create a boss."),
|
Boss_Create_InvalidArgs("&c&l(!) &cYou must use &n/boss create [name] [entity] &c to create a boss."),
|
||||||
|
2
pom.xml
2
pom.xml
@ -19,7 +19,7 @@
|
|||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<plugin.version>1.0.0-U185</plugin.version>
|
<plugin.version>1.0.0-U186</plugin.version>
|
||||||
<plugin.name>EpicBosses</plugin.name>
|
<plugin.name>EpicBosses</plugin.name>
|
||||||
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
|
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
|
||||||
<plugin.author>AMinecraftDev</plugin.author>
|
<plugin.author>AMinecraftDev</plugin.author>
|
||||||
|
Loading…
Reference in New Issue
Block a user