diff --git a/BauSystem_API/src/de/steamwar/bausystem/region/Point.java b/BauSystem_API/src/de/steamwar/bausystem/region/Point.java
index 5d8d626e..31afb234 100644
--- a/BauSystem_API/src/de/steamwar/bausystem/region/Point.java
+++ b/BauSystem_API/src/de/steamwar/bausystem/region/Point.java
@@ -21,6 +21,7 @@ package de.steamwar.bausystem.region;
import lombok.*;
+import org.bukkit.Location;
@Getter
@@ -33,11 +34,15 @@ public class Point {
private final int y;
private final int z;
+ public static Point fromLocation(final Location location) {
+ return new Point(location.getBlockX(), location.getBlockY(), location.getBlockZ());
+ }
+
public Point add(int x, int y, int z) {
return new Point(this.x + x, this.y + y, this.z + z);
}
- public Point substract(int x, int y, int z) {
+ public Point subtract(int x, int y, int z) {
return new Point(this.x - x, this.y - y, this.z - z);
}
}
\ No newline at end of file
diff --git a/BauSystem_API/src/de/steamwar/bausystem/shared/Pair.java b/BauSystem_API/src/de/steamwar/bausystem/shared/Pair.java
new file mode 100644
index 00000000..9d808fbb
--- /dev/null
+++ b/BauSystem_API/src/de/steamwar/bausystem/shared/Pair.java
@@ -0,0 +1,56 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.shared;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+
+
+@Getter
+@EqualsAndHashCode
+public class Pair {
+
+ private K key;
+
+ private V value;
+
+
+ public Pair(final K key, final V value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public K setKey(final K key) {
+ final K currentKey = this.key;
+ this.key = key;
+ return currentKey;
+ }
+
+ public V setValue(final V value) {
+ final V currentValue = this.value;
+ this.value = value;
+ return currentValue;
+ }
+
+ @Override
+ public String toString() {
+ return this.key + "=" + this.value;
+ }
+}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/autostart/AutoStartGuiItem.java b/BauSystem_Main/src/de/steamwar/bausystem/features/autostart/AutoStartGuiItem.java
new file mode 100644
index 00000000..a3013c96
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/autostart/AutoStartGuiItem.java
@@ -0,0 +1,57 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.autostart;
+
+import de.steamwar.bausystem.Permission;
+import de.steamwar.bausystem.linkage.GuiItem;
+import de.steamwar.bausystem.linkage.LinkageType;
+import de.steamwar.bausystem.linkage.Linked;
+import de.steamwar.inventory.SWItem;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.Arrays;
+
+@Linked(LinkageType.GUI_ITEM)
+public class AutoStartGuiItem extends GuiItem {
+
+ public AutoStartGuiItem() {
+ super(24);
+ }
+
+ @Override
+ public ItemStack getItem(Player player) {
+ return new SWItem(Material.FIREWORK_STAR, "§eAutostartTimer", Arrays.asList("§eRechtsklick Block §8- §7Starte den Timer"), false, null).getItemStack();
+ }
+
+ @Override
+ public boolean click(ClickType click, Player p) {
+ p.closeInventory();
+ p.performCommand("timer");
+ return false;
+ }
+
+ @Override
+ public Permission permission() {
+ return Permission.MEMBER;
+ }
+}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/Countingwand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/Countingwand.java
new file mode 100644
index 00000000..cb1c0fa8
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/Countingwand.java
@@ -0,0 +1,104 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.countingwand;
+
+import de.steamwar.bausystem.BauSystem;
+import de.steamwar.bausystem.config.ColorConfig;
+import de.steamwar.bausystem.region.Point;
+import de.steamwar.bausystem.shared.Pair;
+import de.steamwar.inventory.SWItem;
+import java.util.*;
+import lombok.experimental.UtilityClass;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+
+
+@UtilityClass
+public class Countingwand {
+
+ public final ItemStack WAND_ITEM = new SWItem(Material.STICK,
+ ColorConfig.HIGHLIGHT + "Counting Wand",
+ Arrays.asList(ColorConfig.HIGHLIGHT + "Linksklick" + ColorConfig.OTHER + " - " + ColorConfig.BASE + "Setzt die 1. Position",
+ ColorConfig.HIGHLIGHT + "Rechtsklick" + ColorConfig.OTHER + " - " + ColorConfig.BASE + "Setzt die 2. Position"),
+ false, clickType -> {
+ }).getItemStack();
+
+ private final Map> selections = new HashMap<>();
+
+ public boolean isCountingwand(final ItemStack item) {
+ return WAND_ITEM.isSimilar(item);
+ }
+
+ public void checkSelection(final Point point, final boolean pos1, final Player p) {
+ Pair selection = selections.get(p.getUniqueId().toString());
+ final boolean newPos;
+ if (selection != null) {
+ if (pos1) {
+ newPos = !point.equals(selection.setKey(point));
+ } else {
+ newPos = !point.equals(selection.setValue(point));
+ }
+ } else {
+ if (pos1) {
+ selection = new Pair<>(point, null);
+ } else {
+ selection = new Pair<>(null, point);
+ }
+ selections.put(p.getUniqueId().toString(), selection);
+ newPos = true;
+ }
+
+ if (newPos) {
+ p.sendMessage(BauSystem.PREFIX
+ + (pos1 ? "Erste Position bei: " : "Zweite Position bei: ")
+ + ColorConfig.OTHER
+ + "["
+ + ColorConfig.BASE
+ + point.getX()
+ + ColorConfig.OTHER
+ + ", "
+ + ColorConfig.BASE
+ + point.getY()
+ + ColorConfig.OTHER
+ + ", "
+ + ColorConfig.BASE
+ + point.getZ()
+ + ColorConfig.OTHER
+ + "] ("
+ + ColorConfig.HIGHLIGHT
+ + Countingwand.getAmount(selection.getKey(), selection.getValue())
+ + ColorConfig.OTHER
+ + ")");
+ }
+ }
+
+ public void removePlayer(Player p) {
+ selections.remove(p);
+ }
+
+ public int getAmount(final Point point1, final Point point2) {
+ if (point1 == null || point2 == null) {
+ return 0;
+ }
+
+ return (Math.abs(point1.getX() - point2.getX()) + 1) * (Math.abs(point1.getY() - point2.getY()) + 1) * (Math.abs(point1.getZ() - point2.getZ()) + 1);
+ }
+}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandCommand.java
new file mode 100644
index 00000000..c8cdccba
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandCommand.java
@@ -0,0 +1,40 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.countingwand;
+
+import de.steamwar.bausystem.SWUtils;
+import de.steamwar.bausystem.linkage.LinkageType;
+import de.steamwar.bausystem.linkage.Linked;
+import de.steamwar.command.SWCommand;
+import org.bukkit.entity.Player;
+
+
+@Linked(LinkageType.COMMAND)
+public class CountingwandCommand extends SWCommand {
+
+ public CountingwandCommand() {
+ super("countingwand", "/countingwand", "cwand", "/cwand");
+ }
+
+ @Register
+ public void genericCommand(final Player p) {
+ SWUtils.giveItemToPlayer(p, Countingwand.WAND_ITEM);
+ }
+}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandGuiItem.java b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandGuiItem.java
new file mode 100644
index 00000000..97e88047
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandGuiItem.java
@@ -0,0 +1,64 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.countingwand;
+
+import de.steamwar.bausystem.Permission;
+import de.steamwar.bausystem.config.ColorConfig;
+import de.steamwar.bausystem.features.gui.BauGUI;
+import de.steamwar.bausystem.linkage.GuiItem;
+import de.steamwar.bausystem.linkage.LinkageType;
+import de.steamwar.bausystem.linkage.Linked;
+import de.steamwar.inventory.SWItem;
+import java.util.Arrays;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
+
+
+@Linked(LinkageType.GUI_ITEM)
+public class CountingwandGuiItem extends GuiItem {
+
+ public CountingwandGuiItem() {
+ super(22);
+ }
+
+ @Override
+ public ItemStack getItem(Player player) {
+ return new SWItem(Material.STICK,
+ ColorConfig.HIGHLIGHT + "Counting Wand",
+ Arrays.asList(ColorConfig.HIGHLIGHT + "Linksklick" + ColorConfig.OTHER + " - " + ColorConfig.BASE + "Setzt die 1. Position",
+ ColorConfig.HIGHLIGHT + "Rechtsklick" + ColorConfig.OTHER + " - " + ColorConfig.BASE + "Setzt die 2. Position"),
+ false, clickType -> {
+ }).getItemStack();
+ }
+
+ @Override
+ public boolean click(ClickType click, Player p) {
+ p.closeInventory();
+ p.performCommand("countingwand");
+ return false;
+ }
+
+ @Override
+ public Permission permission() {
+ return Permission.WORLDEDIT;
+ }
+}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandListener.java
new file mode 100644
index 00000000..9f913a1a
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/countingwand/CountingwandListener.java
@@ -0,0 +1,65 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.countingwand;
+
+import de.steamwar.bausystem.linkage.LinkageType;
+import de.steamwar.bausystem.linkage.Linked;
+import de.steamwar.bausystem.region.Point;
+import java.util.Objects;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.Action;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+
+
+@Linked(LinkageType.LISTENER)
+public class CountingwandListener implements Listener {
+
+ @EventHandler
+ public void onBlockBreak(final BlockBreakEvent event) {
+ if (!Countingwand.isCountingwand(event.getPlayer().getInventory().getItemInMainHand())) {
+ return;
+ }
+
+ event.setCancelled(true);
+ Countingwand.checkSelection(Point.fromLocation(event.getBlock().getLocation()), true, event.getPlayer());
+ }
+
+ @EventHandler
+ public void onPlayerInteract(final PlayerInteractEvent event) {
+ if (!Countingwand.isCountingwand(event.getItem())) {
+ return;
+ }
+
+ if (event.getAction() != Action.RIGHT_CLICK_BLOCK) {
+ return;
+ }
+
+ event.setCancelled(true);
+ Countingwand.checkSelection(Point.fromLocation(Objects.requireNonNull(event.getClickedBlock()).getLocation()), false, event.getPlayer());
+ }
+
+ @EventHandler
+ public void onLeave(PlayerQuitEvent event) {
+ Countingwand.removePlayer(event.getPlayer());
+ }
+}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstoneTesterGuiItem.java b/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstoneTesterGuiItem.java
new file mode 100644
index 00000000..9650ad49
--- /dev/null
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstoneTesterGuiItem.java
@@ -0,0 +1,58 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2021 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.redstonetester;
+
+import de.steamwar.bausystem.Permission;
+import de.steamwar.bausystem.config.ColorConfig;
+import de.steamwar.bausystem.linkage.GuiItem;
+import de.steamwar.bausystem.linkage.LinkageType;
+import de.steamwar.bausystem.linkage.Linked;
+import de.steamwar.inventory.SWItem;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.Arrays;
+
+@Linked(LinkageType.GUI_ITEM)
+public class RedstoneTesterGuiItem extends GuiItem {
+
+ public RedstoneTesterGuiItem() {
+ super(23);
+ }
+
+ @Override
+ public ItemStack getItem(Player player) {
+ return new SWItem(Material.REPEATER, ColorConfig.HIGHLIGHT + "Redstonetester", Arrays.asList(ColorConfig.HIGHLIGHT + "Linksklick Block " + ColorConfig.OTHER + "-" + ColorConfig.BASE + " Setzt die 1. Position", ColorConfig.HIGHLIGHT + "Rechtsklick Block " + ColorConfig.OTHER + "-" + ColorConfig.BASE + " Setzt die 2. Position", ColorConfig.HIGHLIGHT + "Shift-Rechtsklick Luft " + ColorConfig.OTHER + "-" + ColorConfig.BASE + " Zurücksetzten"), false, null).getItemStack();
+ }
+
+ @Override
+ public boolean click(ClickType click, Player p) {
+ p.closeInventory();
+ p.performCommand("redstonetester");
+ return false;
+ }
+
+ @Override
+ public Permission permission() {
+ return Permission.MEMBER;
+ }
+}
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstonetesterCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstonetesterCommand.java
index ef84d72b..0bbf47a5 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstonetesterCommand.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/redstonetester/RedstonetesterCommand.java
@@ -25,7 +25,6 @@ import de.steamwar.bausystem.config.ColorConfig;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.command.SWCommand;
-import de.steamwar.core.VersionedRunnable;
import org.bukkit.entity.Player;
@Linked(LinkageType.COMMAND)
@@ -42,9 +41,7 @@ public class RedstonetesterCommand extends SWCommand {
@Register
public void genericCommand(Player p) {
- VersionedRunnable.call(new VersionedRunnable(() -> p.sendMessage(BauSystem.PREFIX + "Der RedstoneTester ist nicht in der 1.12 verfügbar"), 8), new VersionedRunnable(() -> {
- p.sendMessage(BauSystem.PREFIX + "Messe die Zeit zwischen der Aktivierung zweier Redstone Komponenten");
- SWUtils.giveItemToPlayer(p, RedstonetesterUtils.WAND);
- }, 15));
+ p.sendMessage(BauSystem.PREFIX + "Messe die Zeit zwischen der Aktivierung zweier Redstone Komponenten");
+ SWUtils.giveItemToPlayer(p, RedstonetesterUtils.WAND);
}
}
\ No newline at end of file
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java
index 8ca28941..4e5d62e1 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/world/AutoShutdownListener.java
@@ -68,10 +68,6 @@ public class AutoShutdownListener implements Listener {
Bukkit.shutdown();
return;
}
- count++;
- if (count <= 120) {
- return;
- }
try {
if (RamUsage.getUsage() > 0.8) {
Bukkit.shutdown();
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java b/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java
index 6a525271..4996b0aa 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/features/world/RamUsage.java
@@ -19,43 +19,14 @@
package de.steamwar.bausystem.features.world;
-import de.steamwar.bausystem.BauSystem;
-import de.steamwar.bausystem.linkage.LinkageType;
-import de.steamwar.bausystem.linkage.Linked;
+import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
-import org.bukkit.boss.BarColor;
-import org.bukkit.boss.BarStyle;
-import org.bukkit.boss.BossBar;
-import org.bukkit.event.Listener;
import java.lang.management.ManagementFactory;
import java.util.logging.Level;
-@Linked(LinkageType.PLAIN)
-public class RamUsage implements Listener {
-
- private boolean mode = false;
- private BossBar bossBar;
-
- public RamUsage() {
- bossBar = Bukkit.createBossBar("§eRAM", BarColor.YELLOW, BarStyle.SEGMENTED_10);
- Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> {
- long allocatedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
- long presumableFreeMemory = Runtime.getRuntime().maxMemory() - allocatedMemory;
- double percentageFree = presumableFreeMemory / (double) Runtime.getRuntime().maxMemory();
- bossBar.setProgress(1 - percentageFree);
- if (mode && percentageFree > 0.5) {
- mode = false;
- } else if (!mode && percentageFree < 0.3) {
- mode = true;
- }
- if (mode) {
- Bukkit.getOnlinePlayers().forEach(bossBar::addPlayer);
- } else {
- bossBar.removeAll();
- }
- }, 1, 1);
- }
+@UtilityClass
+public class RamUsage {
public static double getUsage() {
try {
diff --git a/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java b/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java
index b169fc43..f05d2ee8 100644
--- a/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java
+++ b/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java
@@ -139,7 +139,7 @@ public class Region {
this.minPointTestblock = point.add(prototype.getTestblock().getOffsetX(), prototype.getTestblock().getOffsetY(), prototype.getTestblock().getOffsetZ());
this.maxPointTestblock = this.minPointTestblock.add(prototype.getTestblock().getSizeX() - 1, prototype.getTestblock().getSizeY() - 1, prototype.getTestblock().getSizeZ() - 1);
- this.minPointTestblockExtension = this.minPointTestblock.substract(prototype.getTestblock().getExtensionNegativeX(), prototype.getTestblock().getExtensionNegativeY(), prototype.getTestblock().getExtensionNegativeZ());
+ this.minPointTestblockExtension = this.minPointTestblock.subtract(prototype.getTestblock().getExtensionNegativeX(), prototype.getTestblock().getExtensionNegativeY(), prototype.getTestblock().getExtensionNegativeZ());
this.maxPointTestblockExtension = this.maxPointTestblock.add(prototype.getTestblock().getExtensionPositiveX(), prototype.getTestblock().getExtensionPositiveY(), prototype.getTestblock().getExtensionPositiveZ());
}
@@ -147,7 +147,7 @@ public class Region {
this.minPointBuild = point.add(prototype.getBuild().getOffsetX(), prototype.getBuild().getOffsetY(), prototype.getBuild().getOffsetZ());
this.maxPointBuild = this.minPointBuild.add(prototype.getBuild().getSizeX() - 1, prototype.getBuild().getSizeY() - 1, prototype.getBuild().getSizeZ() - 1);
- this.minPointBuildExtension = this.minPointBuild.substract(prototype.getBuild().getExtensionNegativeX(), prototype.getBuild().getExtensionNegativeY(), prototype.getBuild().getExtensionNegativeZ());
+ this.minPointBuildExtension = this.minPointBuild.subtract(prototype.getBuild().getExtensionNegativeX(), prototype.getBuild().getExtensionNegativeY(), prototype.getBuild().getExtensionNegativeZ());
this.maxPointBuildExtension = this.maxPointBuild.add(prototype.getBuild().getExtensionPositiveX(), prototype.getBuild().getExtensionPositiveY(), prototype.getBuild().getExtensionPositiveZ());
}