Update TNTSimulator
Dieser Commit ist enthalten in:
Ursprung
011711841b
Commit
469c06d7ec
@ -69,8 +69,6 @@ public class SimulatorCommand extends SWCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean cannotUse(Player player) {
|
private boolean cannotUse(Player player) {
|
||||||
// TODO: remove this
|
|
||||||
if (true) return false;
|
|
||||||
if (!Permission.hasPermission(player, Permission.WORLD)) {
|
if (!Permission.hasPermission(player, Permission.WORLD)) {
|
||||||
player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Simulator nutzen");
|
player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Simulator nutzen");
|
||||||
return true;
|
return true;
|
||||||
|
@ -29,8 +29,6 @@ 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 de.steamwar.inventory.SWListInv;
|
import de.steamwar.inventory.SWListInv;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -49,6 +47,10 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
public class TNTSimulator {
|
public class TNTSimulator {
|
||||||
|
|
||||||
|
private static final Vector X_VECTOR = new Vector(0.0625, 0, 0);
|
||||||
|
private static final Vector Y_VECTOR = new Vector(0, 0.0625, 0);
|
||||||
|
private static final Vector Z_VECTOR = new Vector(0, 0, 0.0625);
|
||||||
|
|
||||||
private static final World WORLD = Bukkit.getWorlds().get(0);
|
private static final World WORLD = Bukkit.getWorlds().get(0);
|
||||||
private static final List<String> LORE = Collections.singletonList("§eZum Ändern klicken");
|
private static final List<String> LORE = Collections.singletonList("§eZum Ändern klicken");
|
||||||
private static final List<TNTSpawn> EMPTY = new ArrayList<>();
|
private static final List<TNTSpawn> EMPTY = new ArrayList<>();
|
||||||
@ -300,18 +302,14 @@ public class TNTSimulator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setFuseTicks(int fuseTicks) {
|
private void setFuseTicks(int fuseTicks) {
|
||||||
if (fuseTicks < 0)
|
if (fuseTicks < 0) fuseTicks = 0;
|
||||||
fuseTicks = 0;
|
if (fuseTicks > 160) fuseTicks = 160;
|
||||||
if (fuseTicks > 80)
|
|
||||||
fuseTicks = 80;
|
|
||||||
this.fuseTicks = fuseTicks;
|
this.fuseTicks = fuseTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setCount(int count) {
|
private void setCount(int count) {
|
||||||
if (count < 1)
|
if (count < 1) count = 1;
|
||||||
count = 1;
|
if (count > 400) count = 400;
|
||||||
if (count > 400)
|
|
||||||
count = 400;
|
|
||||||
this.count = count;
|
this.count = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,10 +318,8 @@ public class TNTSimulator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setTickOffset(int tickOffset) {
|
private void setTickOffset(int tickOffset) {
|
||||||
if (tickOffset < 0)
|
if (tickOffset < 0) tickOffset = 0;
|
||||||
tickOffset = 0;
|
if (tickOffset > 400) tickOffset = 400;
|
||||||
if (tickOffset > 400)
|
|
||||||
tickOffset = 400;
|
|
||||||
this.tickOffset = tickOffset;
|
this.tickOffset = tickOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +332,7 @@ public class TNTSimulator {
|
|||||||
SWInventory swInventory = new SWInventory(player, 54, "TNT konfigurieren");
|
SWInventory swInventory = new SWInventory(player, 54, "TNT konfigurieren");
|
||||||
|
|
||||||
// Change Count of spawned TNT
|
// Change Count of spawned TNT
|
||||||
swInventory.setItem(29, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
swInventory.setItem(1, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
||||||
setCount(count + 1);
|
setCount(count + 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
@ -345,14 +341,14 @@ public class TNTSimulator {
|
|||||||
editTNT();
|
editTNT();
|
||||||
}, this::editTNT));
|
}, this::editTNT));
|
||||||
countItem.getItemStack().setAmount(count);
|
countItem.getItemStack().setAmount(count);
|
||||||
swInventory.setItem(37, countItem);
|
swInventory.setItem(10, countItem);
|
||||||
swInventory.setItem(46, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
swInventory.setItem(19, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
||||||
setCount(count - 1);
|
setCount(count - 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Change TickOffset
|
// Change TickOffset
|
||||||
swInventory.setItem(30, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
swInventory.setItem(2, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
||||||
setTickOffset(tickOffset + 1);
|
setTickOffset(tickOffset + 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
@ -361,14 +357,14 @@ public class TNTSimulator {
|
|||||||
editTNT();
|
editTNT();
|
||||||
}, this::editTNT));
|
}, this::editTNT));
|
||||||
tickItem.getItemStack().setAmount(Math.max(tickOffset, 1));
|
tickItem.getItemStack().setAmount(Math.max(tickOffset, 1));
|
||||||
swInventory.setItem(38, tickItem);
|
swInventory.setItem(11, tickItem);
|
||||||
swInventory.setItem(47, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
swInventory.setItem(20, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
||||||
setTickOffset(tickOffset - 1);
|
setTickOffset(tickOffset - 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Change FuseTicks
|
// Change FuseTicks
|
||||||
swInventory.setItem(31, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
swInventory.setItem(3, new SWItem(SWItem.getDye(10), "§7+1", clickType -> {
|
||||||
setFuseTicks(fuseTicks + 1);
|
setFuseTicks(fuseTicks + 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
@ -377,41 +373,74 @@ public class TNTSimulator {
|
|||||||
editTNT();
|
editTNT();
|
||||||
}, this::editTNT));
|
}, this::editTNT));
|
||||||
fuseTickItem.getItemStack().setAmount(Math.max(fuseTicks, 1));
|
fuseTickItem.getItemStack().setAmount(Math.max(fuseTicks, 1));
|
||||||
swInventory.setItem(39, fuseTickItem);
|
swInventory.setItem(12, fuseTickItem);
|
||||||
swInventory.setItem(48, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
swInventory.setItem(21, new SWItem(SWItem.getDye(1), "§7-1", clickType -> {
|
||||||
setFuseTicks(fuseTicks - 1);
|
setFuseTicks(fuseTicks - 1);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Velocity Settings
|
// Velocity Settings
|
||||||
swInventory.setItem(11, Material.TNT, "TNT", clickType -> {
|
swInventory.setItem(38, Material.TNT, "TNT", clickType -> {
|
||||||
});
|
});
|
||||||
swInventory.setItem(19, new SWItem(getDye(xVelocity), getColor(xVelocity), "§7TNT §eSprung X §8- " + active(xVelocity), clickType -> {
|
swInventory.setItem(46, new SWItem(getWool(xVelocity), getColor(xVelocity), "§7TNT §eSprung X §8- " + active(xVelocity), clickType -> {
|
||||||
xVelocity = !xVelocity;
|
xVelocity = !xVelocity;
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
swInventory.setItem(2, new SWItem(getDye(yVelocity), getColor(yVelocity), "§7TNT §eSprung Y §8- " + active(yVelocity), clickType -> {
|
swInventory.setItem(29, new SWItem(getWool(yVelocity), getColor(yVelocity), "§7TNT §eSprung Y §8- " + active(yVelocity), clickType -> {
|
||||||
yVelocity = !yVelocity;
|
yVelocity = !yVelocity;
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
swInventory.setItem(21, new SWItem(getDye(zVelocity), getColor(zVelocity), "§7TNT §eSprung Z §8- " + active(zVelocity), clickType -> {
|
swInventory.setItem(48, new SWItem(getWool(zVelocity), getColor(zVelocity), "§7TNT §eSprung Z §8- " + active(zVelocity), clickType -> {
|
||||||
zVelocity = !zVelocity;
|
zVelocity = !zVelocity;
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Position Settings
|
// Position Settings
|
||||||
swInventory.setItem(15, Material.TNT, "TNT", clickType -> {
|
// X Position
|
||||||
});
|
swInventory.setItem(5, new SWItem(SWItem.getDye(10), "§7+0,0625", clickType -> {
|
||||||
swInventory.setItem(23, new SWItem(getDye(xVelocity), getColor(xVelocity), "§7TNT §eSprung X §8- " + active(xVelocity), clickType -> {
|
position.add(X_VECTOR);
|
||||||
xVelocity = !xVelocity;
|
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
swInventory.setItem(6, new SWItem(getDye(yVelocity), getColor(yVelocity), "§7TNT §eSprung Y §8- " + active(yVelocity), clickType -> {
|
swInventory.setItem(14, new SWItem(Material.PAPER, "§7x-Position §8- §e" + position.getX(), LORE, false, clickType -> {
|
||||||
yVelocity = !yVelocity;
|
changePosition(player, position.getX(), x -> {
|
||||||
|
position.setX(clamp(x));
|
||||||
|
editTNT();
|
||||||
|
}, this::editTNT);
|
||||||
|
}));
|
||||||
|
swInventory.setItem(23, new SWItem(SWItem.getDye(1), "§7-0,0625", clickType -> {
|
||||||
|
position.subtract(X_VECTOR);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
swInventory.setItem(25, new SWItem(getDye(zVelocity), getColor(zVelocity), "§7TNT §eSprung Z §8- " + active(zVelocity), clickType -> {
|
|
||||||
zVelocity = !zVelocity;
|
// Y Position
|
||||||
|
swInventory.setItem(6, new SWItem(SWItem.getDye(10), "§7+0,0625", clickType -> {
|
||||||
|
position.add(Y_VECTOR);
|
||||||
|
editTNT();
|
||||||
|
}));
|
||||||
|
swInventory.setItem(15, new SWItem(Material.PAPER, "§7y-Position §8- §e" + position.getY(), LORE, false, clickType -> {
|
||||||
|
changePosition(player, position.getY(), y -> {
|
||||||
|
position.setY(clamp(y));
|
||||||
|
editTNT();
|
||||||
|
}, this::editTNT);
|
||||||
|
}));
|
||||||
|
swInventory.setItem(24, new SWItem(SWItem.getDye(1), "§7-0,0625", clickType -> {
|
||||||
|
position.subtract(Y_VECTOR);
|
||||||
|
editTNT();
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Z Position
|
||||||
|
swInventory.setItem(7, new SWItem(SWItem.getDye(10), "§7+0,0625", clickType -> {
|
||||||
|
position.add(Z_VECTOR);
|
||||||
|
editTNT();
|
||||||
|
}));
|
||||||
|
swInventory.setItem(16, new SWItem(Material.PAPER, "§7z-Position §8- §e" + position.getZ(), LORE, false, clickType -> {
|
||||||
|
changePosition(player, position.getZ(), z -> {
|
||||||
|
position.setZ(clamp(z));
|
||||||
|
editTNT();
|
||||||
|
}, this::editTNT);
|
||||||
|
}));
|
||||||
|
swInventory.setItem(25, new SWItem(SWItem.getDye(1), "§7-0,0625", clickType -> {
|
||||||
|
position.subtract(Z_VECTOR);
|
||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -421,10 +450,19 @@ public class TNTSimulator {
|
|||||||
editTNT();
|
editTNT();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
swInventory.setItem(42, new SWItem(Material.TNT, "§eZündphase hinzufügen", clickType -> {
|
swInventory.setItem(33, new SWItem(Material.TNT, "§eZündphase hinzufügen", clickType -> {
|
||||||
spawns.add(new TNTSpawn(position, entity));
|
spawns.add(new TNTSpawn(position, entity));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
swInventory.setItem(42, new SWItem(Material.ARROW, "§eZurück", clickType -> {
|
||||||
|
showGUI();
|
||||||
|
}));
|
||||||
|
|
||||||
|
swInventory.setItem(51, new SWItem(Material.DISPENSER, "§eTNT hinzufügen", clickType -> {
|
||||||
|
Vector vector = position.clone();
|
||||||
|
spawns.add(new TNTSpawn(vector, SimulatorEntityShowMode.createEntity(player, vector, false)));
|
||||||
|
}));
|
||||||
|
|
||||||
// Delete tnt
|
// Delete tnt
|
||||||
swInventory.setItem(43, new SWItem(Material.BARRIER, "§cEntfernen", clickType -> {
|
swInventory.setItem(43, new SWItem(Material.BARRIER, "§cEntfernen", clickType -> {
|
||||||
hide();
|
hide();
|
||||||
@ -432,6 +470,9 @@ public class TNTSimulator {
|
|||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
swInventory.addCloseCallback(clickType -> {
|
||||||
|
TNTSimulator.get(player).show(TNTSimulatorListener.trace(player, player.getLocation()));
|
||||||
|
});
|
||||||
swInventory.open();
|
swInventory.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,8 +489,25 @@ public class TNTSimulator {
|
|||||||
swAnvilInv.open();
|
swAnvilInv.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Material getDye(boolean b) {
|
private void changePosition(Player player, double defaultValue, Consumer<Double> result, Runnable failure) {
|
||||||
return SWItem.getDye(getColor(b));
|
SWAnvilInv swAnvilInv = new SWAnvilInv(player, "Position", defaultValue + "");
|
||||||
|
swAnvilInv.setItem(Material.PAPER);
|
||||||
|
swAnvilInv.setCallback(s -> {
|
||||||
|
try {
|
||||||
|
result.accept(Double.parseDouble(s.replace(',', '.')));
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
failure.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
swAnvilInv.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
private double clamp(double d) {
|
||||||
|
return (int) (d * 100) * 0.01;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Material getWool(boolean b) {
|
||||||
|
return b ? Material.LIME_WOOL : Material.RED_WOOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte getColor(boolean b) {
|
private byte getColor(boolean b) {
|
||||||
|
@ -45,8 +45,6 @@ import static de.steamwar.bausystem.features.simulator.TNTSimulator.get;
|
|||||||
public class TNTSimulatorListener implements Listener {
|
public class TNTSimulatorListener implements Listener {
|
||||||
|
|
||||||
private boolean permissionCheck(Player player) {
|
private boolean permissionCheck(Player player) {
|
||||||
// TODO: remove this
|
|
||||||
if (true) return true;
|
|
||||||
if (!Permission.hasPermission(player, Permission.WORLD)) {
|
if (!Permission.hasPermission(player, Permission.WORLD)) {
|
||||||
player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Simulator nutzen");
|
player.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht den Simulator nutzen");
|
||||||
return false;
|
return false;
|
||||||
@ -54,7 +52,7 @@ public class TNTSimulatorListener implements Listener {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private RayTraceResult trace(Player player, Location to) {
|
static RayTraceResult trace(Player player, Location to) {
|
||||||
Location startPos = to.clone().add(0.0, player.getEyeHeight(), 0.0);
|
Location startPos = to.clone().add(0.0, player.getEyeHeight(), 0.0);
|
||||||
Vector direction = to.getDirection();
|
Vector direction = to.getDirection();
|
||||||
RayTraceResult blocks = player.getWorld().rayTraceBlocks(startPos, direction, 10.0, FluidCollisionMode.NEVER, true);
|
RayTraceResult blocks = player.getWorld().rayTraceBlocks(startPos, direction, 10.0, FluidCollisionMode.NEVER, true);
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren