SimRework2.0 #216
@ -24,6 +24,7 @@ import lombok.Setter;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -38,6 +39,10 @@ public class SimulatorGroup {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sort() {
|
||||||
|
elements.sort(Comparator.comparingInt(SimulatorElement::getBaseTick));
|
||||||
|
}
|
||||||
|
|
||||||
public int getBaseTick() {
|
public int getBaseTick() {
|
||||||
return elements.stream()
|
return elements.stream()
|
||||||
.mapToInt(SimulatorElement::getBaseTick)
|
.mapToInt(SimulatorElement::getBaseTick)
|
||||||
|
@ -25,11 +25,9 @@ import lombok.Setter;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public abstract class SimulatorPhase {
|
public abstract class SimulatorPhase {
|
||||||
public static final int ORDER_LIMIT = 64;
|
public static final int ORDER_LIMIT = 30;
|
||||||
|
|
||||||
protected int tickOffset = 0;
|
protected int tickOffset = 0;
|
||||||
protected int lifetime = 80;
|
protected int lifetime = 80;
|
||||||
protected int order = 1;
|
protected int order = 1;
|
||||||
|
|
||||||
public SimulatorPhase(){};
|
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
public class RedstoneElement extends SimulatorElement<RedstonePhase> {
|
public class RedstoneElement extends SimulatorElement<RedstonePhase> {
|
||||||
|
|
||||||
public RedstoneElement(Vector position) {
|
public RedstoneElement(Vector position) {
|
||||||
super(Material.REDSTONE_BLOCK, position);
|
super(Material.REDSTONE_BLOCK, position);
|
||||||
}
|
}
|
||||||
|
@ -20,11 +20,17 @@
|
|||||||
package de.steamwar.bausystem.features.simulator2.data.redstone;
|
package de.steamwar.bausystem.features.simulator2.data.redstone;
|
||||||
|
|
||||||
import de.steamwar.bausystem.features.simulator2.data.SimulatorPhase;
|
import de.steamwar.bausystem.features.simulator2.data.SimulatorPhase;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
public class RedstonePhase extends SimulatorPhase {
|
public class RedstonePhase extends SimulatorPhase {
|
||||||
public RedstonePhase(){};
|
|
||||||
public RedstonePhase(int tickOffset) {
|
public RedstonePhase(int tickOffset) {
|
||||||
this.tickOffset = tickOffset;
|
this.tickOffset = tickOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
this.lifetime = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,23 +21,24 @@ package de.steamwar.bausystem.features.simulator2.data.tnt;
|
|||||||
|
|
||||||
import de.steamwar.bausystem.features.simulator2.data.SimulatorPhase;
|
import de.steamwar.bausystem.features.simulator2.data.SimulatorPhase;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
public class TNTPhase extends SimulatorPhase {
|
public class TNTPhase extends SimulatorPhase {
|
||||||
private int count = 1;
|
private int count = 1;
|
||||||
private boolean xJump = false;
|
private boolean xJump = false;
|
||||||
private boolean yJump = false;
|
private boolean yJump = false;
|
||||||
private boolean zJump = false;
|
private boolean zJump = false;
|
||||||
|
|
||||||
public TNTPhase(){}
|
public TNTPhase(int tickOffset) {
|
||||||
|
this.tickOffset = tickOffset;
|
||||||
public TNTPhase(int tickOffset){this.tickOffset = tickOffset;}
|
}
|
||||||
|
|
||||||
public boolean hasJump() {
|
public boolean hasJump() {
|
||||||
if(xJump || yJump || zJump) return true;
|
return xJump || yJump || zJump;
|
||||||
else return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setJump(boolean jump) {
|
public void setJump(boolean jump) {
|
||||||
|
@ -58,6 +58,8 @@ public class SimulatorGroupGui extends SimulatorPageGui<SimulatorElement<?>> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
simulatorGroup.sort();
|
||||||
|
|
||||||
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
||||||
back.open();
|
back.open();
|
||||||
}));
|
}));
|
||||||
|
@ -78,7 +78,8 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
simulatorGroup.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
simulatorGroup.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {});
|
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {
|
||||||
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
|
@ -30,6 +30,7 @@ import de.steamwar.bausystem.features.simulator2.gui.utils.SimulatorMaterialGui;
|
|||||||
import de.steamwar.inventory.SWItem;
|
import de.steamwar.inventory.SWItem;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -38,13 +39,13 @@ import java.util.List;
|
|||||||
public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
||||||
|
|
||||||
private final SimulatorGroup simulatorGroup;
|
private final SimulatorGroup simulatorGroup;
|
||||||
private final RedstoneElement redstoneElement;
|
private final RedstoneElement redstone;
|
||||||
private final SimulatorBaseGui back;
|
private final SimulatorBaseGui back;
|
||||||
|
|
||||||
public SimulatorRedstoneGui(Player player, Simulator simulator, SimulatorGroup simulatorGroup, RedstoneElement redstoneElement, SimulatorBaseGui back) {
|
public SimulatorRedstoneGui(Player player, Simulator simulator, SimulatorGroup simulatorGroup, RedstoneElement redstone, SimulatorBaseGui back) {
|
||||||
super(player, simulator, 6 * 9, redstoneElement.getPhases());
|
super(player, simulator, 6 * 9, redstone.getPhases());
|
||||||
this.simulatorGroup = simulatorGroup;
|
this.simulatorGroup = simulatorGroup;
|
||||||
this.redstoneElement = redstoneElement;
|
this.redstone = redstone;
|
||||||
this.back = back;
|
this.back = back;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +56,12 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void headerAndFooter() {
|
public void headerAndFooter() {
|
||||||
redstoneElement.sort();
|
if (redstone.getPhases().isEmpty()) {
|
||||||
|
back.open();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
redstone.sort();
|
||||||
|
|
||||||
// Back Arrow
|
// Back Arrow
|
||||||
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
||||||
@ -65,38 +71,37 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
|||||||
// Material Chooser
|
// Material Chooser
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
lore.add("§7Activation count§8:§e " + data.size());
|
lore.add("§7Activation count§8:§e " + data.size());
|
||||||
lore.add("§7Tick§8:§e " + redstoneElement.getBaseTick());
|
lore.add("§7Tick§8:§e " + redstone.getBaseTick());
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add("§7X§8:§e " + redstoneElement.getPosition().getX());
|
lore.add("§7X§8:§e " + redstone.getPosition().getX());
|
||||||
lore.add("§7Y§8:§e " + redstoneElement.getPosition().getY());
|
lore.add("§7Y§8:§e " + redstone.getPosition().getY());
|
||||||
lore.add("§7Z§8:§e " + redstoneElement.getPosition().getZ());
|
lore.add("§7Z§8:§e " + redstone.getPosition().getZ());
|
||||||
if (redstoneElement.isDisabled()) {
|
if (redstone.isDisabled()) {
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add("§cDisabled");
|
lore.add("§cDisabled");
|
||||||
}
|
}
|
||||||
inventory.setItem(4, new SWItem(redstoneElement.getMaterial(), "§eTNT", lore, redstoneElement.isDisabled(), clickType -> {
|
inventory.setItem(4, new SWItem(redstone.getMaterial(), "§eTNT", lore, redstone.isDisabled(), clickType -> {
|
||||||
new SimulatorMaterialGui(player, simulator, redstoneElement::getMaterial, redstoneElement::setMaterial, this).open();
|
new SimulatorMaterialGui(player, simulator, redstone::getMaterial, redstone::setMaterial, this).open();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
//Settings
|
//Settings
|
||||||
inventory.setItem(48, new SWItem(Material.REPEATER, "§eSettings", clickType -> {
|
inventory.setItem(48, new SWItem(Material.REPEATER, "§eSettings", clickType -> {
|
||||||
new SimulatorRedstoneSettingsGui(player, simulator, redstoneElement, this).open();
|
new SimulatorRedstoneSettingsGui(player, simulator, redstone, this).open();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// 49 Lead?
|
// 49 Lead?
|
||||||
|
|
||||||
//Enable/Disable
|
//Enable/Disable
|
||||||
inventory.setItem(50, new SWItem(redstoneElement.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, redstoneElement.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
|
inventory.setItem(50, new SWItem(redstone.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, redstone.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
|
||||||
redstoneElement.setDisabled(!redstoneElement.isDisabled());
|
redstone.setDisabled(!redstone.isDisabled());
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SWItem[] column(RedstonePhase redstoneSetting) {
|
public SWItem[] column(RedstonePhase redstoneSetting) {
|
||||||
SWItem redstone = new SWItem(Material.REDSTONE_BLOCK, "§eRedstone§8:§7 " + redstoneSetting.getTickOffset(), Arrays.asList("§7Fuse§8:§e " + redstoneSetting.getLifetime(), "", "§7Order§8:§e " + redstoneSetting.getOrder()), false, clickType -> {
|
SWItem redstone = new SWItem(Material.REDSTONE_BLOCK, "§eRedstone§8:§7 " + redstoneSetting.getTickOffset(), Arrays.asList("§7Activation Time§8:§e " + redstoneSetting.getLifetime(), "", "§7Middle-Click§8:§e Remove"), false, clickType -> {
|
||||||
//Quick remove per rightclick
|
if (clickType == ClickType.MIDDLE) this.redstone.getPhases().remove(redstoneSetting);
|
||||||
if (clickType.isRightClick()) redstoneElement.getPhases().remove(redstoneSetting);
|
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
redstone.getItemStack().setAmount(Math.max(1, Math.min(redstoneSetting.getTickOffset(), 64)));
|
redstone.getItemStack().setAmount(Math.max(1, Math.min(redstoneSetting.getTickOffset(), 64)));
|
||||||
@ -112,7 +117,7 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}),
|
}),
|
||||||
new SWItem(Material.ANVIL, "§eEdit Activation", clickType -> {
|
new SWItem(Material.ANVIL, "§eEdit Activation", clickType -> {
|
||||||
new SimulatorRedstonePhaseSettingsGui(player, simulator, redstoneElement, redstoneSetting, this).open();
|
new SimulatorRedstonePhaseSettingsGui(player, simulator, this.redstone, redstoneSetting, this).open();
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -120,15 +125,23 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<RedstonePhase> {
|
|||||||
@Override
|
@Override
|
||||||
public SWItem[] lastColumn() {
|
public SWItem[] lastColumn() {
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§aNew Phase", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
RedstonePhase lastElement = redstoneElement.getPhases().get(redstoneElement.getPhases().size() - 1);
|
addNewPhase(clickType.isShiftClick());
|
||||||
RedstonePhase newPhase = new RedstonePhase(lastElement.getTickOffset() + 1);
|
}),
|
||||||
if(clickType.isShiftClick()) newPhase.setTickOffset(newPhase.getTickOffset() + 4);
|
new SWItem(Material.REDSTONE_BLOCK, "§eRedstone§8:§a New Phase", clickType -> {
|
||||||
redstoneElement.add(newPhase);
|
addNewPhase(false);
|
||||||
SimulatorWatcher.update(simulator);
|
}),
|
||||||
|
new SWItem(SWItem.getDye(8), "§7", clickType -> {
|
||||||
}),
|
}),
|
||||||
new SWItem(Material.REDSTONE_BLOCK, "§eRedstone§8:§a New Phase", Arrays.asList(), false, clickType -> {}),
|
|
||||||
new SWItem(SWItem.getDye(8), "", Arrays.asList(), false, clickType -> {}),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addNewPhase(boolean shift) {
|
||||||
|
RedstonePhase lastElement = redstone.getPhases().get(redstone.getPhases().size() - 1);
|
||||||
|
RedstonePhase newPhase = new RedstonePhase(lastElement.getTickOffset() + 1);
|
||||||
|
if (shift) newPhase.setTickOffset(newPhase.getTickOffset() + 5);
|
||||||
|
scroll++;
|
||||||
|
redstone.add(newPhase);
|
||||||
|
SimulatorWatcher.update(simulator);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,8 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem offsetItem = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + offset, clickType -> {});
|
SWItem offsetItem = new SWItem(Material.REPEATER, "§eStart at§8:§7 " + offset, clickType -> {
|
||||||
|
});
|
||||||
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
||||||
inventory.setItem(20, offsetItem);
|
inventory.setItem(20, offsetItem);
|
||||||
|
|
||||||
@ -96,7 +97,8 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem lifetimeItem = new SWItem(Material.CLOCK, "§eLifetime§8:§7 " + lifetime, clickType -> {});
|
SWItem lifetimeItem = new SWItem(Material.CLOCK, "§eActivation Time§8:§7 " + lifetime, clickType -> {
|
||||||
|
});
|
||||||
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
||||||
inventory.setItem(21, lifetimeItem);
|
inventory.setItem(21, lifetimeItem);
|
||||||
|
|
||||||
@ -106,13 +108,15 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
|
|
||||||
//Order
|
//Order
|
||||||
|
/*
|
||||||
int order = redstone.getOrder();
|
int order = redstone.getOrder();
|
||||||
inventory.setItem(14, SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(14, SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
redstone.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem orderItem = new SWItem(Material.COMPASS, "§eOrder§8:§7 " + order, clickType -> {});
|
SWItem orderItem = new SWItem(Material.COMPASS, "§eOrder§8:§7 " + order, clickType -> {
|
||||||
|
});
|
||||||
orderItem.getItemStack().setAmount(Math.max(1, Math.min(order, 64)));
|
orderItem.getItemStack().setAmount(Math.max(1, Math.min(order, 64)));
|
||||||
inventory.setItem(23, orderItem);
|
inventory.setItem(23, orderItem);
|
||||||
|
|
||||||
@ -120,5 +124,6 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
redstone.setOrder(Math.max(1, order - (clickType.isShiftClick() ? -5 : -1)));
|
redstone.setOrder(Math.max(1, order - (clickType.isShiftClick() ? -5 : -1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,8 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
redstone.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
redstone.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {});
|
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {
|
||||||
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
@ -94,7 +95,8 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
redstone.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
redstone.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(24, new SWItem(Material.PAPER, "§eX"));
|
inventory.setItem(24, new SWItem(Material.PAPER, "§eX§8:§7 " + redstone.getPosition().getBlockX(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(33, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(33, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
redstone.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
redstone.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@ -105,7 +107,8 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
redstone.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
redstone.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(25, new SWItem(Material.PAPER, "§eY"));
|
inventory.setItem(25, new SWItem(Material.PAPER, "§eY§8:§7 " + redstone.getPosition().getBlockY(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(34, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(34, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
redstone.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
redstone.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@ -116,7 +119,8 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
redstone.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
redstone.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ"));
|
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ§8:§7" + redstone.getPosition().getBlockZ(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(35, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(35, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
redstone.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
redstone.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
@ -29,6 +29,7 @@ import de.steamwar.bausystem.features.simulator2.gui.utils.SimulatorMaterialGui;
|
|||||||
import de.steamwar.inventory.SWItem;
|
import de.steamwar.inventory.SWItem;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -36,12 +37,12 @@ import java.util.List;
|
|||||||
|
|
||||||
public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
||||||
|
|
||||||
private TNTElement tntElement;
|
private TNTElement tnt;
|
||||||
private SimulatorBaseGui back;
|
private SimulatorBaseGui back;
|
||||||
|
|
||||||
public SimulatorTNTGui(Player player, Simulator simulator, TNTElement tntElement, SimulatorBaseGui back) {
|
public SimulatorTNTGui(Player player, Simulator simulator, TNTElement tnt, SimulatorBaseGui back) {
|
||||||
super(player, simulator, 6 * 9, tntElement.getPhases());
|
super(player, simulator, 6 * 9, tnt.getPhases());
|
||||||
this.tntElement = tntElement;
|
this.tnt = tnt;
|
||||||
this.back = back;
|
this.back = back;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +53,12 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void headerAndFooter() {
|
public void headerAndFooter() {
|
||||||
tntElement.sort();
|
if (tnt.getPhases().isEmpty()) {
|
||||||
|
back.open();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tnt.sort();
|
||||||
|
|
||||||
// Back Arrow
|
// Back Arrow
|
||||||
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
||||||
@ -62,34 +68,33 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
// Material Chooser
|
// Material Chooser
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
lore.add("§7Phase count§8:§e " + data.size());
|
lore.add("§7Phase count§8:§e " + data.size());
|
||||||
lore.add("§7Tick§8:§e " + tntElement.getBaseTick());
|
lore.add("§7Tick§8:§e " + tnt.getBaseTick());
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add("§7X§8:§e " + tntElement.getPosition().getX());
|
lore.add("§7X§8:§e " + tnt.getPosition().getX());
|
||||||
lore.add("§7Y§8:§e " + tntElement.getPosition().getY());
|
lore.add("§7Y§8:§e " + tnt.getPosition().getY());
|
||||||
lore.add("§7Z§8:§e " + tntElement.getPosition().getZ());
|
lore.add("§7Z§8:§e " + tnt.getPosition().getZ());
|
||||||
if (tntElement.isDisabled()) {
|
if (tnt.isDisabled()) {
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add("§cDisabled");
|
lore.add("§cDisabled");
|
||||||
}
|
}
|
||||||
inventory.setItem(4, new SWItem(tntElement.getMaterial(), "§eTNT", lore, tntElement.isDisabled(), clickType -> {
|
inventory.setItem(4, new SWItem(tnt.getMaterial(), "§eTNT", lore, tnt.isDisabled(), clickType -> {
|
||||||
new SimulatorMaterialGui(player, simulator, tntElement::getMaterial, tntElement::setMaterial, this).open();
|
new SimulatorMaterialGui(player, simulator, tnt::getMaterial, tnt::setMaterial, this).open();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
inventory.setItem(48, new SWItem(Material.REPEATER, "§eSettings", clickType -> {
|
inventory.setItem(48, new SWItem(Material.REPEATER, "§eSettings", clickType -> {
|
||||||
// new SimulatorGroupSettingsGui(player, simulator, simulatorGroup, this).open();
|
new SimulatorTNTSettingsGui(player, simulator, tnt, this).open();
|
||||||
}));
|
}));
|
||||||
// 49 Lead?
|
// 49 Lead?
|
||||||
inventory.setItem(50, new SWItem(tntElement.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, tntElement.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
|
inventory.setItem(50, new SWItem(tnt.isDisabled() ? Material.ENDER_PEARL : Material.ENDER_EYE, tnt.isDisabled() ? "§cDisabled" : "§aEnabled", clickType -> {
|
||||||
tntElement.setDisabled(!tntElement.isDisabled());
|
tnt.setDisabled(!tnt.isDisabled());
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SWItem[] column(TNTPhase tntSetting) {
|
public SWItem[] column(TNTPhase tntSetting) {
|
||||||
SWItem tnt = new SWItem(Material.TNT, "§eTNT§8:§7 " + tntSetting.getCount(), Arrays.asList("§7Tick§8: §e" + tntSetting.getTickOffset(), "§7Fuse§8:§e " + tntSetting.getLifetime(), "", "§7Order§8:§e " + tntSetting.getOrder(), "", "§7X-Jump§8: " + (tntSetting.isXJump() ? "§aOn" : "§cOff"), "§7Y-Jump§8: " + (tntSetting.isYJump() ? "§aOn" : "§cOff"), "§7Z-Jump§8: " + (tntSetting.isZJump() ? "§aOn" : "§cOff")), false, clickType -> {
|
SWItem tnt = new SWItem(Material.TNT, "§eTNT§8:§7 " + tntSetting.getCount(), Arrays.asList("§7Tick§8: §e" + tntSetting.getTickOffset(), "§7Fuse§8:§e " + tntSetting.getLifetime(), "", "§7Order§8:§e " + tntSetting.getOrder(), "", "§7X-Jump§8: " + (tntSetting.isXJump() ? "§aOn" : "§cOff"), "§7Y-Jump§8: " + (tntSetting.isYJump() ? "§aOn" : "§cOff"), "§7Z-Jump§8: " + (tntSetting.isZJump() ? "§aOn" : "§cOff"), "", "§7Middle-Click§8:§e Remove"), false, clickType -> {
|
||||||
//Quick remove per rightclick
|
if (clickType == ClickType.MIDDLE) this.tnt.getPhases().remove(tntSetting);
|
||||||
if (clickType.isRightClick()) tntElement.getPhases().remove(tntSetting);
|
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
tnt.getItemStack().setAmount(Math.min(tntSetting.getCount(), 64));
|
tnt.getItemStack().setAmount(Math.min(tntSetting.getCount(), 64));
|
||||||
@ -105,7 +110,7 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}),
|
}),
|
||||||
new SWItem(Material.ANVIL, "§eEdit Phase", clickType -> {
|
new SWItem(Material.ANVIL, "§eEdit Phase", clickType -> {
|
||||||
new SimulatorTntPhaseSettingsGui(player, simulator, tntElement, tntSetting, this).open();
|
new SimulatorTNTPhaseSettingsGui(player, simulator, this.tnt, tntSetting, this).open();
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -113,15 +118,23 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
@Override
|
@Override
|
||||||
public SWItem[] lastColumn() {
|
public SWItem[] lastColumn() {
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§aNew Phase", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
TNTPhase lastElement = tntElement.getPhases().get(tntElement.getPhases().size() - 1);
|
addNewPhase(clickType.isShiftClick());
|
||||||
TNTPhase newPhase = new TNTPhase(lastElement.getTickOffset() + 1);
|
}),
|
||||||
if(clickType.isShiftClick()) newPhase.setCount(newPhase.getCount() + 4);
|
new SWItem(Material.TNT, "§eTNT§8:§a New Phase", clickType -> {
|
||||||
tntElement.add(newPhase);
|
addNewPhase(false);
|
||||||
SimulatorWatcher.update(simulator);
|
}),
|
||||||
|
new SWItem(SWItem.getDye(8), "§7", clickType -> {
|
||||||
}),
|
}),
|
||||||
new SWItem(Material.TNT, "§TNT§8:§a New Phase", Arrays.asList(), false, clickType -> {}),
|
|
||||||
new SWItem(SWItem.getDye(8), "", Arrays.asList(), false, clickType -> {}),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addNewPhase(boolean shift) {
|
||||||
|
TNTPhase lastElement = tnt.getPhases().get(tnt.getPhases().size() - 1);
|
||||||
|
TNTPhase newPhase = new TNTPhase(lastElement.getTickOffset() + 1);
|
||||||
|
if (shift) newPhase.setCount(newPhase.getCount() + 5);
|
||||||
|
scroll++;
|
||||||
|
tnt.add(newPhase);
|
||||||
|
SimulatorWatcher.update(simulator);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,12 +32,12 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
||||||
private final TNTElement tntElement;
|
private final TNTElement tntElement;
|
||||||
private final TNTPhase tnt;
|
private final TNTPhase tnt;
|
||||||
private final SimulatorBaseGui back;
|
private final SimulatorBaseGui back;
|
||||||
|
|
||||||
public SimulatorTntPhaseSettingsGui(Player player, Simulator simulator, TNTElement tntElement, TNTPhase tnt, SimulatorBaseGui back) {
|
public SimulatorTNTPhaseSettingsGui(Player player, Simulator simulator, TNTElement tntElement, TNTPhase tnt, SimulatorBaseGui back) {
|
||||||
super(player, simulator, 5 * 9);
|
super(player, simulator, 5 * 9);
|
||||||
this.tntElement = tntElement;
|
this.tntElement = tntElement;
|
||||||
this.tnt = tnt;
|
this.tnt = tnt;
|
||||||
@ -46,7 +46,7 @@ public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String title() {
|
public String title() {
|
||||||
return "Tnt";
|
return "TNT";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -75,14 +75,15 @@ public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
|||||||
|
|
||||||
//Count
|
//Count
|
||||||
int count = tnt.getCount();
|
int count = tnt.getCount();
|
||||||
inventory.setItem(10, SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
tnt.setCount(count + (clickType.isShiftClick() ? 5 : 1));
|
tnt.setCount(count + (clickType.isShiftClick() ? 5 : 1));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem countItem = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + count, clickType -> {});
|
SWItem countItem = new SWItem(Material.TNT, "§eCount§8:§7 " + count, clickType -> {
|
||||||
|
});
|
||||||
countItem.getItemStack().setAmount(Math.max(1, Math.min(count, 64)));
|
countItem.getItemStack().setAmount(Math.max(1, Math.min(count, 64)));
|
||||||
inventory.setItem(19, countItem);
|
inventory.setItem(18, countItem);
|
||||||
|
|
||||||
inventory.setItem(28, SWItem.getDye(count > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(28, SWItem.getDye(count > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
tnt.setCount(Math.max(1, count - (clickType.isShiftClick() ? -5 : -1)));
|
tnt.setCount(Math.max(1, count - (clickType.isShiftClick() ? -5 : -1)));
|
||||||
@ -96,7 +97,8 @@ public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem offsetItem = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + offset, clickType -> {});
|
SWItem offsetItem = new SWItem(Material.REPEATER, "§eStart at§8:§7 " + offset, clickType -> {
|
||||||
|
});
|
||||||
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
||||||
inventory.setItem(19, offsetItem);
|
inventory.setItem(19, offsetItem);
|
||||||
|
|
||||||
@ -112,7 +114,8 @@ public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem lifetimeItem = new SWItem(Material.CLOCK, "§eLifetime§8:§7 " + lifetime, clickType -> {});
|
SWItem lifetimeItem = new SWItem(Material.CLOCK, "§eLifetime§8:§7 " + lifetime, clickType -> {
|
||||||
|
});
|
||||||
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
||||||
inventory.setItem(20, lifetimeItem);
|
inventory.setItem(20, lifetimeItem);
|
||||||
|
|
||||||
@ -128,8 +131,9 @@ public class SimulatorTntPhaseSettingsGui extends SimulatorBaseGui{
|
|||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
|
|
||||||
SWItem orderItem = new SWItem(Material.COMPASS, "§eLifetime§8:§7 " + order, clickType -> {});
|
SWItem orderItem = new SWItem(Material.COMPASS, "§eCalculation Order§8:§7 " + order, clickType -> {
|
||||||
orderItem.getItemStack().setAmount(Math.max(1, Math.min(order, 64)));
|
});
|
||||||
|
orderItem.getItemStack().setAmount(Math.max(1, Math.min(order, 30)));
|
||||||
inventory.setItem(22, orderItem);
|
inventory.setItem(22, orderItem);
|
||||||
|
|
||||||
inventory.setItem(31, SWItem.getDye(order > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(31, SWItem.getDye(order > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
@ -50,6 +50,11 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void populate() {
|
public void populate() {
|
||||||
|
if (tnt.getPhases().isEmpty()) {
|
||||||
|
back.open();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Back Arrow
|
// Back Arrow
|
||||||
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
||||||
back.open();
|
back.open();
|
||||||
@ -73,7 +78,8 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
tnt.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
tnt.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {});
|
SWItem baseTick = new SWItem(Material.REPEATER, "§eTicks§8:§7 " + baseTicks, clickType -> {
|
||||||
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
@ -86,29 +92,29 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Subpixel Alignment
|
// Subpixel Alignment
|
||||||
inventory.setItem(24, new SWItem(Material.SUNFLOWER, "§7Align§8: §eCenter", clickType -> {
|
inventory.setItem(21, new SWItem(Material.SUNFLOWER, "§7Align§8: §eCenter", clickType -> {
|
||||||
tnt.align(new Vector(0.5, 0, 0.5));
|
tnt.align(new Vector(0.5, 0, 0.5));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
//z
|
// Z
|
||||||
inventory.setItem(23, new SWItem(Material.OAK_BUTTON, "§7Align§8: §eNegativ Z", clickType -> {
|
inventory.setItem(20, new SWItem(Material.OAK_BUTTON, "§7Align§8: §eNegativ Z", clickType -> {
|
||||||
tnt.align(new Vector(0, 0, 0.49));
|
tnt.align(new Vector(0, 0, 0.49));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
inventory.setItem(25, new SWItem(Material.OAK_BUTTON, "§7Align§8: §ePositiv Z", clickType -> {
|
inventory.setItem(22, new SWItem(Material.OAK_BUTTON, "§7Align§8: §ePositiv Z", clickType -> {
|
||||||
tnt.align(new Vector(0, 0, 0.51));
|
tnt.align(new Vector(0, 0, 0.51));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// X
|
// X
|
||||||
inventory.setItem(15, new SWItem(Material.OAK_BUTTON, "§7Align§8: §eNegativ X", clickType -> {
|
inventory.setItem(12, new SWItem(Material.OAK_BUTTON, "§7Align§8: §eNegativ X", clickType -> {
|
||||||
tnt.align(new Vector(0.49, 0, 0));
|
tnt.align(new Vector(0.49, 0, 0));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
inventory.setItem(33, new SWItem(Material.OAK_BUTTON, "§7Align§8: §ePositiv X", clickType -> {
|
inventory.setItem(30, new SWItem(Material.OAK_BUTTON, "§7Align§8: §ePositiv X", clickType -> {
|
||||||
tnt.align(new Vector(0.51, 0, 0));
|
tnt.align(new Vector(0.51, 0, 0));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}));
|
}));
|
||||||
@ -118,7 +124,8 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
tnt.move(clickType.isShiftClick() ? 0.0625 : 1, 0, 0);
|
tnt.move(clickType.isShiftClick() ? 0.0625 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(24, new SWItem(Material.PAPER, "§eX"));
|
inventory.setItem(24, new SWItem(Material.PAPER, "§eX§8:§7 " + tnt.getPosition().getX(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(33, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(33, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
tnt.move(clickType.isShiftClick() ? -0.0625 : -1, 0, 0);
|
tnt.move(clickType.isShiftClick() ? -0.0625 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@ -129,7 +136,8 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
tnt.move(0, clickType.isShiftClick() ? 0.0625 : 1, 0);
|
tnt.move(0, clickType.isShiftClick() ? 0.0625 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(25, new SWItem(Material.PAPER, "§eY"));
|
inventory.setItem(25, new SWItem(Material.PAPER, "§eY§8:§7 " + tnt.getPosition().getY(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(34, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(34, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
tnt.move(0, clickType.isShiftClick() ? -0.0625 : -1, 0);
|
tnt.move(0, clickType.isShiftClick() ? -0.0625 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@ -140,7 +148,8 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
tnt.move(0, 0, clickType.isShiftClick() ? 0.0625 : 1);
|
tnt.move(0, 0, clickType.isShiftClick() ? 0.0625 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
});
|
});
|
||||||
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ"));
|
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ§8:§7 " + tnt.getPosition().getZ(), clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(35, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(35, SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
tnt.move(0, 0, clickType.isShiftClick() ? -0.0625 : -1);
|
tnt.move(0, 0, clickType.isShiftClick() ? -0.0625 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
@ -21,6 +21,7 @@ package de.steamwar.bausystem.features.simulator2.gui.base;
|
|||||||
|
|
||||||
import de.steamwar.bausystem.features.simulator2.SimulatorWatcher;
|
import de.steamwar.bausystem.features.simulator2.SimulatorWatcher;
|
||||||
import de.steamwar.bausystem.features.simulator2.data.Simulator;
|
import de.steamwar.bausystem.features.simulator2.data.Simulator;
|
||||||
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.inventory.SWInventory;
|
import de.steamwar.inventory.SWInventory;
|
||||||
import de.steamwar.inventory.SWItem;
|
import de.steamwar.inventory.SWItem;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -44,7 +45,9 @@ public abstract class SimulatorBaseGui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void open() {
|
public final void open() {
|
||||||
if (inv != null) {
|
if (inv != null && Core.getVersion() > 19) {
|
||||||
|
inv.clear();
|
||||||
|
setup();
|
||||||
if (player.getOpenInventory().getTopInventory() != inv) {
|
if (player.getOpenInventory().getTopInventory() != inv) {
|
||||||
inventory.open();
|
inventory.open();
|
||||||
SimulatorWatcher.watch(player, simulator, this::open);
|
SimulatorWatcher.watch(player, simulator, this::open);
|
||||||
@ -60,10 +63,7 @@ public abstract class SimulatorBaseGui {
|
|||||||
inv = Bukkit.createInventory(null, size, title());
|
inv = Bukkit.createInventory(null, size, title());
|
||||||
return inv;
|
return inv;
|
||||||
});
|
});
|
||||||
for (int i = 0; i < 9; i++) {
|
setup();
|
||||||
inventory.setItem(i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§8", clickType -> {}));
|
|
||||||
inventory.setItem(size - 9 + i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§8", clickType -> {}));
|
|
||||||
}
|
|
||||||
inventory.addCloseCallback(clickType -> {
|
inventory.addCloseCallback(clickType -> {
|
||||||
SimulatorWatcher.watch(player, null, null);
|
SimulatorWatcher.watch(player, null, null);
|
||||||
});
|
});
|
||||||
@ -73,6 +73,15 @@ public abstract class SimulatorBaseGui {
|
|||||||
populate();
|
populate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setup() {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
inventory.setItem(i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§8", clickType -> {
|
||||||
|
}));
|
||||||
|
inventory.setItem(size - 9 + i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§8", clickType -> {
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract String title();
|
public abstract String title();
|
||||||
|
|
||||||
public abstract void populate();
|
public abstract void populate();
|
||||||
|
@ -78,5 +78,6 @@ public abstract class SimulatorPageGui<T> extends SimulatorBaseGui {
|
|||||||
|
|
||||||
public void headerAndFooter() {
|
public void headerAndFooter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract SWItem convert(T t);
|
public abstract SWItem convert(T t);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ public abstract class SimulatorScrollGui<T> extends SimulatorBaseGui {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final String title() {
|
public final String title() {
|
||||||
return baseTitle() + " " + scroll + "/" + maxScroll();
|
return baseTitle() + " " + maxScroll() + "/" + Math.max((data.size() - 9 + 1), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,21 +56,20 @@ public abstract class SimulatorScrollGui<T> extends SimulatorBaseGui {
|
|||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
boolean hasNext = scroll < maxScroll() - (data.size() % 9 == 0 ? 1 : 0);
|
boolean hasNext = (data.size() + 1) - scroll > 9;
|
||||||
inventory.setItem(size - 1, SWItem.getDye(hasNext ? 10 : 8), hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
inventory.setItem(size - 1, SWItem.getDye(hasNext ? 10 : 8), hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
||||||
if (hasNext) {
|
if (hasNext) {
|
||||||
scroll = Math.min(scroll + 9, maxScroll());
|
scroll = Math.min(scroll + 9, data.size() + 1 - 9);
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
if(i < data.size()){
|
if (scroll + i < data.size()) {
|
||||||
T element = data.get(scroll + i);
|
T element = data.get(scroll + i);
|
||||||
SWItem[] column = column(element);
|
SWItem[] column = column(element);
|
||||||
populateColumn(column, i);
|
populateColumn(column, i);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
SWItem[] column = lastColumn();
|
SWItem[] column = lastColumn();
|
||||||
populateColumn(column, i);
|
populateColumn(column, i);
|
||||||
break;
|
break;
|
||||||
@ -88,6 +87,7 @@ public abstract class SimulatorScrollGui<T> extends SimulatorBaseGui {
|
|||||||
inventory.setItem(index + j * 9 + 9, column[j]);
|
inventory.setItem(index + j * 9 + 9, column[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract SWItem[] column(T t);
|
public abstract SWItem[] column(T t);
|
||||||
|
|
||||||
public abstract SWItem[] lastColumn();
|
public abstract SWItem[] lastColumn();
|
||||||
|
@ -61,7 +61,8 @@ public class SimulatorMaterialGui extends SimulatorPageGui<Material> {
|
|||||||
@Override
|
@Override
|
||||||
public void headerAndFooter() {
|
public void headerAndFooter() {
|
||||||
material = currentMaterial.get();
|
material = currentMaterial.get();
|
||||||
inventory.setItem(4, new SWItem(material, "§eMaterial", clickType -> {}));
|
inventory.setItem(4, new SWItem(material, "§eMaterial", clickType -> {
|
||||||
|
}));
|
||||||
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
inventory.setItem(0, new SWItem(Material.ARROW, "§eBack", clickType -> {
|
||||||
back.open();
|
back.open();
|
||||||
}));
|
}));
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren