diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupChooserGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupChooserGui.java
new file mode 100644
index 00000000..3a2e78f7
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupChooserGui.java
@@ -0,0 +1,113 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.bausystem.features.simulator2.gui;
+
+import de.steamwar.bausystem.features.simulator2.SimulatorWatcher;
+import de.steamwar.bausystem.features.simulator2.data.Simulator;
+import de.steamwar.bausystem.features.simulator2.data.SimulatorElement;
+import de.steamwar.bausystem.features.simulator2.data.SimulatorGroup;
+import de.steamwar.bausystem.features.simulator2.data.redstone.RedstoneElement;
+import de.steamwar.bausystem.features.simulator2.data.tnt.TNTElement;
+import de.steamwar.bausystem.features.simulator2.gui.base.SimulatorBaseGui;
+import de.steamwar.bausystem.features.simulator2.gui.base.SimulatorPageGui;
+import de.steamwar.bausystem.features.simulator2.gui.utils.SimulatorMaterialGui;
+import de.steamwar.inventory.SWItem;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SimulatorGroupChooserGui extends SimulatorPageGui {
+
+ private final SimulatorElement> subject;
+ private final SimulatorGroup parent;
+ private final SimulatorBaseGui back;
+
+ public SimulatorGroupChooserGui(Player player, Simulator simulator, List data, SimulatorElement> subject, SimulatorGroup parent, SimulatorBaseGui back){
+ super(player, simulator, 6*9, data);
+ this.subject = subject;
+ this.parent = parent;
+ this.back = back;
+ }
+
+ @Override
+ public void headerAndFooter() {
+ simulator.getElements().removeIf(element -> element.getElements().isEmpty());
+
+ inventory.setItem(4, new SWItem(simulator.getMaterial(), "§e" + simulator.getName(), clickType -> {}));
+ if(parent.getElements().size() != 1){
+ inventory.setItem(49 , new SWItem(Material.BARRIER, "§c Remove from Group", clickType -> {
+ SimulatorGroup newParent = new SimulatorGroup();
+ newParent.add(subject);
+ simulator.getElements().add(newParent);
+ back.open();
+ SimulatorWatcher.update(simulator);
+ }));
+ }
+ }
+ @Override
+ public String baseTitle() {
+ return "§eChoose group to add to or element, to create new group";
+ }
+
+ @Override
+ public SWItem convert(SimulatorGroup simulatorGroup) {
+ List> elements = simulatorGroup.getElements();
+ if (elements.size() == 1) {
+ SimulatorElement> element = elements.get(0);
+ List lore = new ArrayList<>();
+ lore.add("§7Phase count§8:§e " + element.getPhases().size());
+ lore.add("§7Tick§8:§e " + element.getBaseTick());
+ lore.add("");
+ lore.add("§7X§8:§e " + element.getPosition().getX());
+ lore.add("§7Y§8:§e " + element.getPosition().getY());
+ lore.add("§7Z§8:§e " + element.getPosition().getZ());
+ if (element.isDisabled()) {
+ lore.add("");
+ lore.add("§cDisabled");
+ }
+ return new SWItem(element.getMaterial(), "§e" + element.getName(), lore, element.isDisabled(), clickType -> {
+ SimulatorGroup newParent = new SimulatorGroup();
+ newParent.add(subject);
+ newParent.add(element);
+ simulatorGroup.getElements().remove(element);
+ parent.getElements().remove(subject);
+ simulator.getElements().add(newParent);
+ back.open();
+ SimulatorWatcher.update(simulator);
+ });
+ }
+
+ List lore = new ArrayList<>();
+ lore.add("§7Element count§8:§e " + elements.size());
+ lore.add("§7Tick§8:§e " + simulatorGroup.getBaseTick());
+ if (simulatorGroup.isDisabled()) {
+ lore.add("");
+ lore.add("§cDisabled");
+ }
+ return new SWItem(simulatorGroup.getMaterial(), "§eGroup", lore, simulatorGroup.isDisabled(), clickType -> {
+ simulatorGroup.add(subject);
+ parent.getElements().remove(subject);
+ back.open();
+ SimulatorWatcher.update(simulator);
+ });
+ }
+}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupGui.java
index 85addcb4..47dc1586 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupGui.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGroupGui.java
@@ -35,7 +35,7 @@ import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
-public class SimulatorGroupGui extends SimulatorPageGui> {
+public class SimulatorGroupGui extends SimulatorPageGui> { //TODO Disolve group option ?
private final SimulatorGroup simulatorGroup;
private final SimulatorBaseGui back;
@@ -99,7 +99,7 @@ public class SimulatorGroupGui extends SimulatorPageGui> {
}
return new SWItem(element.getMaterial(), "§e" + element.getName(), lore, element.isDisabled(), clickType -> {
if (element instanceof TNTElement) {
- new SimulatorTNTGui(player, simulator, (TNTElement) element, this).open();
+ new SimulatorTNTGui(player, simulator, (TNTElement) element, simulatorGroup, this).open();
} else if (element instanceof RedstoneElement) {
new SimulatorRedstoneGui(player, simulator, simulatorGroup, (RedstoneElement) element, this).open();
}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGui.java
index 8387c540..c4e233e6 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGui.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorGui.java
@@ -34,7 +34,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-public class SimulatorGui extends SimulatorPageGui {
+public class SimulatorGui extends SimulatorPageGui {//TODO Groupcreation
public SimulatorGui(Player player, Simulator simulator) {
super(player, simulator, 6 * 9, simulator.getElements());
@@ -47,11 +47,7 @@ public class SimulatorGui extends SimulatorPageGui {
@Override
public void headerAndFooter() {
- for (Iterator i = simulator.getElements().iterator(); i.hasNext(); ) {
- if (i.next().getElements().isEmpty()) {
- i.remove();
- }
- }
+ simulator.getElements().removeIf(element -> element.getElements().isEmpty());
inventory.setItem(4, new SWItem(simulator.getMaterial(), "§e" + simulator.getName(), clickType -> {
new SimulatorMaterialGui(player, simulator, simulator::getMaterial, simulator::setMaterial, this).open();
@@ -79,7 +75,7 @@ public class SimulatorGui extends SimulatorPageGui {
}
return new SWItem(element.getMaterial(), "§e" + element.getName(), lore, element.isDisabled(), clickType -> {
if (element instanceof TNTElement) {
- new SimulatorTNTGui(player, simulator, (TNTElement) element, this).open();
+ new SimulatorTNTGui(player, simulator, (TNTElement) element, simulatorGroup,this).open();
} else if (element instanceof RedstoneElement) {
new SimulatorRedstoneGui(player, simulator, simulatorGroup, (RedstoneElement) element, this).open();
}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorRedstoneGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorRedstoneGui.java
index 759aa0ed..6d66cd33 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorRedstoneGui.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorRedstoneGui.java
@@ -89,7 +89,9 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui {
new SimulatorRedstoneSettingsGui(player, simulator, redstone, this).open();
}));
- // 49 Lead?
+ inventory.setItem(49, new SWItem(Material.LEAD, "§eMove", clickType -> {
+ new SimulatorGroupChooserGui(player, simulator, simulator.getElements(), redstone, simulatorGroup, this).open();
+ }));
//Enable/Disable
inventory.setItem(50, new SWItem(redstone.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, redstone.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTGui.java
index 9ea81ce6..1672564f 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTGui.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTGui.java
@@ -21,11 +21,13 @@ package de.steamwar.bausystem.features.simulator2.gui;
import de.steamwar.bausystem.features.simulator2.SimulatorWatcher;
import de.steamwar.bausystem.features.simulator2.data.Simulator;
+import de.steamwar.bausystem.features.simulator2.data.SimulatorGroup;
import de.steamwar.bausystem.features.simulator2.data.tnt.TNTElement;
import de.steamwar.bausystem.features.simulator2.data.tnt.TNTPhase;
import de.steamwar.bausystem.features.simulator2.gui.base.SimulatorBaseGui;
import de.steamwar.bausystem.features.simulator2.gui.base.SimulatorScrollGui;
import de.steamwar.bausystem.features.simulator2.gui.utils.SimulatorMaterialGui;
+import de.steamwar.bausystem.features.simulator2.gui.SimulatorTNTPhaseSettingsGui;
import de.steamwar.inventory.SWItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -38,9 +40,10 @@ import java.util.List;
public class SimulatorTNTGui extends SimulatorScrollGui {
private TNTElement tnt;
+ private SimulatorGroup parent;
private SimulatorBaseGui back;
- public SimulatorTNTGui(Player player, Simulator simulator, TNTElement tnt, SimulatorBaseGui back) {
+ public SimulatorTNTGui(Player player, Simulator simulator, TNTElement tnt, SimulatorGroup parent, SimulatorBaseGui back) {
super(player, simulator, 6 * 9, tnt.getPhases());
this.tnt = tnt;
this.back = back;
@@ -84,7 +87,9 @@ public class SimulatorTNTGui extends SimulatorScrollGui {
inventory.setItem(48, new SWItem(Material.REPEATER, "§eSettings", clickType -> {
new SimulatorTNTSettingsGui(player, simulator, tnt, this).open();
}));
- // 49 Lead?
+ inventory.setItem(49, new SWItem(Material.LEAD, "§eMove", clickType -> {
+ new SimulatorGroupChooserGui(player, simulator, simulator.getElements(), tnt, parent, this).open();
+ }));
inventory.setItem(50, new SWItem(tnt.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, tnt.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
tnt.setDisabled(!tnt.isDisabled());
SimulatorWatcher.update(simulator);
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTSettingsGui.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTSettingsGui.java
index c9d47366..1daf0ae4 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTSettingsGui.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator2/gui/SimulatorTNTSettingsGui.java
@@ -109,12 +109,12 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
}));
// X
- inventory.setItem(12, new SWItem(Material.OAK_BUTTON, "§7Align§8: §eNegativ X", clickType -> {
+ inventory.setItem(12, new SWItem(Material.STONE_BUTTON, "§7Align§8: §eNegativ X", clickType -> {
tnt.align(new Vector(0.49, 0, 0));
SimulatorWatcher.update(simulator);
}));
- inventory.setItem(30, new SWItem(Material.OAK_BUTTON, "§7Align§8: §ePositiv X", clickType -> {
+ inventory.setItem(30, new SWItem(Material.STONE_BUTTON, "§7Align§8: §ePositiv X", clickType -> {
tnt.align(new Vector(0.51, 0, 0));
SimulatorWatcher.update(simulator);
}));