SteamWar/BauSystem2.0
Archiviert
12
0

LoaderRework #175

Zusammengeführt
YoyoNow hat 20 Commits von LoaderRework nach master 2023-05-09 18:31:42 +02:00 zusammengeführt
5 geänderte Dateien mit 60 neuen und 12 gelöschten Zeilen
Nur Änderungen aus Commit ac2900c080 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -810,7 +810,7 @@ LOADER_BUTTON_FENCEGATE=Fencegate
LOADER_HELP_SETUP=§8/§eloader setup §8- §7Starts recording actions LOADER_HELP_SETUP=§8/§eloader setup §8- §7Starts recording actions
LOADER_HELP_START=§8/§eloader start §8- §7Playback of previously recorded action LOADER_HELP_START=§8/§eloader start §8- §7Playback of previously recorded action
LOADER_HELP_PAUSE=§8/§7loader pause §8- §7Pauses Loader LOADER_HELP_PAUSE=§8/§7loader pause §8- §7Pauses Loader
LOADER_HELP_SETTINGS=§8/§7loader settings §8- §7Shows Loader settings LOADER_HELP_GUI=§8/§7loader gui §8- §7Shows Loader gui
LOADER_HELP_STOP=§8/§eloader stop §8- §7Stops recording/playback LOADER_HELP_STOP=§8/§eloader stop §8- §7Stops recording/playback
LOADER_NO_LOADER=§cYou have no Laoder. Create one with /loader setup LOADER_NO_LOADER=§cYou have no Laoder. Create one with /loader setup
LOADER_NEW=§7Load your cannon and fire it once, to initialise the loader. LOADER_NEW=§7Load your cannon and fire it once, to initialise the loader.

Datei anzeigen

@ -783,7 +783,7 @@ LOADER_BUTTON_FENCEGATE=Fencegate
LOADER_HELP_SETUP=§8/§eloader setup §8- §7Startet die Aufnahme der Aktionen LOADER_HELP_SETUP=§8/§eloader setup §8- §7Startet die Aufnahme der Aktionen
LOADER_HELP_START=§8/§eloader start §8- §7Spielt die zuvor aufgenommenen Aktionen ab LOADER_HELP_START=§8/§eloader start §8- §7Spielt die zuvor aufgenommenen Aktionen ab
LOADER_HELP_PAUSE=§8/§7loader pause §8- §7Pausiert das Abspielen LOADER_HELP_PAUSE=§8/§7loader pause §8- §7Pausiert das Abspielen
LOADER_HELP_SETTINGS=§8/§7loader settings §8- §7Zeigt die Einstellungen an LOADER_HELP_GUI=§8/§7loader settings §8- §7Zeigt die Einstellungen an
LOADER_HELP_STOP=§8/§eloader stop §8- §7Stoppt die Aufnahme bzw. das Abspielen LOADER_HELP_STOP=§8/§eloader stop §8- §7Stoppt die Aufnahme bzw. das Abspielen
LOADER_NO_LOADER=§cDu hast noch keinen Loader. Erstelle dir einen mit /loader setup LOADER_NO_LOADER=§cDu hast noch keinen Loader. Erstelle dir einen mit /loader setup
LOADER_NEW=§7Belade und feuer einmal die Kanone ab, um den Loader zu initialisieren. LOADER_NEW=§7Belade und feuer einmal die Kanone ab, um den Loader zu initialisieren.

Datei anzeigen

@ -24,6 +24,7 @@ import de.steamwar.bausystem.features.loadern.elements.LoaderElement;
import de.steamwar.bausystem.features.loadern.elements.impl.LoaderTNT; import de.steamwar.bausystem.features.loadern.elements.impl.LoaderTNT;
import de.steamwar.bausystem.features.loadern.elements.impl.LoaderWait; import de.steamwar.bausystem.features.loadern.elements.impl.LoaderWait;
import de.steamwar.bausystem.shared.EnumDisplay; import de.steamwar.bausystem.shared.EnumDisplay;
import de.steamwar.inventory.SWAnvilInv;
import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv; import de.steamwar.inventory.SWListInv;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -123,7 +124,7 @@ public class Loader implements Listener {
LOADER_MAP.remove(p); LOADER_MAP.remove(p);
} }
public void settings(SettingsSorting settingsSorting) { public void gui(SettingsSorting settingsSorting) {
List<SWListInv.SWListEntry<LoaderElement>> list = new ArrayList<>(); List<SWListInv.SWListEntry<LoaderElement>> list = new ArrayList<>();
for (LoaderElement element : elements) { for (LoaderElement element : elements) {
if (settingsSorting != null) { if (settingsSorting != null) {
@ -139,17 +140,62 @@ public class Loader implements Listener {
SWListInv<LoaderElement> swListInv = new SWListInv<>(p, "Loader Settings", false, list, (clickType, loaderElement) -> {}); SWListInv<LoaderElement> swListInv = new SWListInv<>(p, "Loader Settings", false, list, (clickType, loaderElement) -> {});
swListInv.setCallback((clickType, entry) -> entry.click(p, swListInv::open)); swListInv.setCallback((clickType, entry) -> entry.click(p, swListInv::open));
SWItem onlyInteractionsElements = new SWItem(Material.REPEATER, "§eNur Interaktionen", clickType -> {
gui(settingsSorting == SettingsSorting.INTERACTIONS ? null : SettingsSorting.INTERACTIONS);
});
if (settingsSorting == SettingsSorting.INTERACTIONS) onlyInteractionsElements.setEnchanted(true);
swListInv.setItem(47, onlyInteractionsElements);
SWItem onlyWaitElements = new SWItem(Material.CLOCK, "§eNur Warten", clickType -> { SWItem onlyWaitElements = new SWItem(Material.CLOCK, "§eNur Warten", clickType -> {
settings(settingsSorting == SettingsSorting.WAIT ? null : SettingsSorting.WAIT); gui(settingsSorting == SettingsSorting.WAIT ? null : SettingsSorting.WAIT);
}); });
if (settingsSorting == SettingsSorting.WAIT) onlyWaitElements.setEnchanted(true); if (settingsSorting == SettingsSorting.WAIT) onlyWaitElements.setEnchanted(true);
swListInv.setItem(48, onlyWaitElements); swListInv.setItem(48, onlyWaitElements);
SWItem onlyInteractionsElements = new SWItem(Material.REPEATER, "§eNur Interaktionen", clickType -> { if (settingsSorting == SettingsSorting.WAIT) {
settings(settingsSorting == SettingsSorting.INTERACTIONS ? null : SettingsSorting.INTERACTIONS); SWItem waitBetweenTNT = new SWItem(Material.TNT, "§7Wait Time zwischen TNT", clickType -> {
SWAnvilInv swAnvilInv = new SWAnvilInv(p, "§7Wartezeit", "");
swAnvilInv.setCallback(s -> {
try {
long delay = Long.parseLong(s);
if (delay < 0) delay = 0;
for (int i = 1; i < elements.size() - 1; i++) {
if (!(elements.get(i - 1) instanceof LoaderTNT)) continue;
if (!(elements.get(i + 1) instanceof LoaderTNT)) continue;
if (!(elements.get(i) instanceof LoaderWait)) continue;
((LoaderWait) elements.get(i)).setDelay(delay);
}
} catch (NumberFormatException ignored) {
}
gui(settingsSorting);
}); });
if (settingsSorting == SettingsSorting.INTERACTIONS) onlyInteractionsElements.setEnchanted(true); swAnvilInv.open();
swListInv.setItem(50, onlyInteractionsElements); });
swListInv.setItem(50, waitBetweenTNT);
SWItem waitTime = new SWItem(Material.PAPER, "§7Wait Time alle", clickType -> {
SWAnvilInv swAnvilInv = new SWAnvilInv(p, "§7Wartezeit", "");
swAnvilInv.setCallback(s -> {
try {
long delay = Long.parseLong(s);
if (delay < 0) delay = 0;
long finalDelay = delay;
elements.stream()
.filter(LoaderWait.class::isInstance)
.map(LoaderWait.class::cast)
.forEach(loaderWait -> loaderWait.setDelay(finalDelay));
} catch (NumberFormatException ignored) {
}
swListInv.open();
});
gui(settingsSorting);
});
swListInv.setItem(51, waitTime);
} else {
SWItem empty = new SWItem(Material.STRUCTURE_VOID, "§7", clickType -> {});
swListInv.setItem(50, empty);
swListInv.setItem(51, empty);
}
swListInv.open(); swListInv.open();
} }

Datei anzeigen

@ -76,11 +76,11 @@ public class LoaderCommand extends SWCommand {
BauSystem.MESSAGE.send("LOADER_PAUSED", player); BauSystem.MESSAGE.send("LOADER_PAUSED", player);
} }
@Register(value = "settings", description = "LOADER_HELP_SETTINGS") @Register(value = "gui", description = "LOADER_HELP_GUI")
public void settingsLoader(@Validator Player player) { public void guiLoader(@Validator Player player) {
Loader loader = Loader.getLoader(player); Loader loader = Loader.getLoader(player);
if (loaderNullCheck(loader, player)) return; if (loaderNullCheck(loader, player)) return;
loader.settings(null); loader.gui(null);
} }
@ClassValidator(value = Player.class, local = true) @ClassValidator(value = Player.class, local = true)

Datei anzeigen

@ -25,6 +25,7 @@ import de.steamwar.inventory.SWAnvilInv;
import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWItem;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -35,6 +36,7 @@ import java.util.Arrays;
public class LoaderWait implements LoaderElement, Listener { public class LoaderWait implements LoaderElement, Listener {
@Getter @Getter
@Setter
private long delay; private long delay;
public LoaderWait(long delay) { public LoaderWait(long delay) {