diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/portablehole/PortableHoleListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/portablehole/PortableHoleListener.java deleted file mode 100644 index 9bc5a947..00000000 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/portablehole/PortableHoleListener.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2024 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.portablehole; - -import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.features.tpslimit.TPSUtils; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.block.BlockState; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerInteractEvent; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -// @Linked -public class PortableHoleListener implements Listener { - - private Map> toReplace = new HashMap<>(); - - { - Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> { - List blockStates = toReplace.remove(TPSUtils.currentRealTick.get()); - if (blockStates == null) return; - blockStates.forEach(blockState -> { - blockState.update(true, false); - }); - }, 1, 1); - } - - @EventHandler - public void onPlayerInteract(PlayerInteractEvent event) { - if (!event.hasItem()) return; - if (event.getItem().getType() != Material.FIREWORK_STAR) return; - - BlockFace blockFace; - if (event.getPlayer().getLocation().getPitch() < -45) { - blockFace = BlockFace.UP; - } else if (event.getPlayer().getLocation().getPitch() > 45) { - blockFace = BlockFace.DOWN; - } else if (event.getPlayer().getLocation().getYaw() > 135) { - blockFace = BlockFace.NORTH; - } else if (event.getPlayer().getLocation().getYaw() > 45) { - blockFace = BlockFace.WEST; - } else if (event.getPlayer().getLocation().getYaw() > -45) { - blockFace = BlockFace.SOUTH; - } else if (event.getPlayer().getLocation().getYaw() > -135) { - blockFace = BlockFace.EAST; - } else { - blockFace = BlockFace.NORTH; - } - - for (int i = 0; i < 10; i++) { - Location source = event.getPlayer().getLocation().getBlock().getLocation().clone(); - source.add(blockFace.getDirection().clone().multiply(i + 1 + (blockFace == BlockFace.UP ? 1 : 0))); - Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> { - long reappearTime = TPSUtils.currentRealTick.get() + 100; - if (blockFace == BlockFace.UP || blockFace == BlockFace.DOWN) { - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - Block block = source.clone().add(dx, 0, dz).getBlock(); - BlockState blockState = block.getState(); - if (blockState.getType().isAir()) continue; - toReplace.computeIfAbsent(reappearTime, __ -> new ArrayList<>()).add(blockState); - block.setType(Material.AIR); - } - } - } else if (blockFace == BlockFace.NORTH || blockFace == BlockFace.SOUTH) { - for (int dx = -1; dx <= 1; dx++) { - for (int dy = 0; dy <= 2; dy++) { - Block block = source.clone().add(dx, dy, 0).getBlock(); - BlockState blockState = block.getState(); - if (blockState.getType().isAir()) continue; - toReplace.computeIfAbsent(reappearTime, __ -> new ArrayList<>()).add(blockState); - block.setType(Material.AIR); - } - } - } else { - for (int dy = 0; dy <= 2; dy++) { - for (int dz = -1; dz <= 1; dz++) { - Block block = source.clone().add(0, dy, dz).getBlock(); - BlockState blockState = block.getState(); - if (blockState.getType().isAir()) continue; - toReplace.computeIfAbsent(reappearTime, __ -> new ArrayList<>()).add(blockState); - block.setType(Material.AIR); - } - } - } - }, i); - } - } -} diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTPoint.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTPoint.java index 4dc8cf39..42c6d662 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTPoint.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTPoint.java @@ -179,8 +179,13 @@ public class TNTPoint implements Externalizable { @Override public String toString() { - return "TNTRecord{" + - "explosion=" + explosion + + return "TNTPoint{" + + "tntId=" + tntId + + ", explosion=" + explosion + + ", inWater=" + inWater + + ", afterFirstExplosion=" + afterFirstExplosion + + ", destroyedBuildArea=" + destroyedBuildArea + + ", destroyedTestBlock=" + destroyedTestBlock + ", ticksSinceStart=" + ticksSinceStart + ", fuse=" + fuse + ", location=" + location + diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java index bb69bea2..f5292c38 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java @@ -279,8 +279,6 @@ public class Trace { records.add((TNTPoint) inputStream.readObject()); } - System.out.println("Loaded... " + records); - Map> histories = new HashMap<>(); for (TNTPoint record : records) { int tntId = record.getTntId(); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java index ee3467af..c88adc91 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java @@ -68,24 +68,24 @@ public class TraceCommand extends SWCommand { @Register(value = "show", description = "TRACE_COMMAND_HELP_SHOW") public void show(@Validator Player player, @OptionalValue("STRICT") BundleFilter bundleFilter, ViewFlag... flags) { - showInternal(player, 0, Integer.MAX_VALUE, bundleFilter, flags); + showInternal(player, bundleFilter, flags); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW", player); } - @Register(value = { "show", "at" }, description = "TRACE_COMMAND_HELP_SHOW_AT_WITH") + @Register(value = {"show", "at"}, description = "TRACE_COMMAND_HELP_SHOW_AT_WITH") public void showAt(@Validator Player player, @Min(intValue = 0) int time, @StaticValue("with") String with, @OptionalValue("STRICT") BundleFilter bundleFilter, @ArrayLength(min = 1) ViewFlag... flags) { showInternal(player, time, time, bundleFilter, flags); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_AT", player, time); } - @Register(value = { "show", "from" }, description = "TRACE_COMMAND_HELP_SHOW_FROM_WITH") + @Register(value = {"show", "from"}, description = "TRACE_COMMAND_HELP_SHOW_FROM_WITH") public void showFromTo(@Validator Player player, @Min(intValue = 0) int from, @StaticValue("with") String with, - @OptionalValue("STRICT") BundleFilter bundleFilter, @ArrayLength(min = 1) ViewFlag... flags) { + @OptionalValue("STRICT") BundleFilter bundleFilter, @ArrayLength(min = 1) ViewFlag... flags) { showInternal(player, from, Integer.MAX_VALUE, bundleFilter, flags); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_FROM", player, from); } - @Register(value = { "show", "from" }, description = "TRACE_COMMAND_HELP_SHOW_FROM_TO_WITH") + @Register(value = {"show", "from"}, description = "TRACE_COMMAND_HELP_SHOW_FROM_TO_WITH") public void showFromTo(@Validator Player player, @Min(intValue = 0) int from, @StaticValue("to") String toString, int to, @StaticValue("with") String with, @OptionalValue("STRICT") BundleFilter bundleFilter, @ArrayLength(min = 1) ViewFlag... flags) { if (to < from) { BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_TO_SMALLER", player); @@ -95,30 +95,36 @@ public class TraceCommand extends SWCommand { BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_FROM_TO", player, from, to); } - private void showInternal(Player player, int from, int to, BundleFilter bundleFilter, ViewFlag... flags) { - PlayerTraceShowData playerTraceShowData = new PlayerTraceShowData(bundleFilter, flags); - playerTraceShowData.addViewFlag(new AtFlag(from, to)); - TraceManager.instance.show(player, playerTraceShowData); - } - @Register(value = { "show", "at" }, description = "TRACE_COMMAND_HELP_SHOW_AT") + @Register(value = {"show", "at"}, description = "TRACE_COMMAND_HELP_SHOW_AT") public void showAt(@Validator Player player, @Min(intValue = 0) int time) { TraceManager.instance.renderAt(player, time, time); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_AT", player, time); } - @Register(value = { "show", "from" }, description = "TRACE_COMMAND_HELP_SHOW_FROM") + @Register(value = {"show", "from"}, description = "TRACE_COMMAND_HELP_SHOW_FROM") public void showFrom(@Validator Player player, @Min(intValue = 0) int from) { TraceManager.instance.renderAt(player, from, Integer.MAX_VALUE); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_FROM", player, from); } - @Register(value = { "show", "from" }, description = "TRACE_COMMAND_HELP_SHOW_FROM_TO") + @Register(value = {"show", "from"}, description = "TRACE_COMMAND_HELP_SHOW_FROM_TO") public void showFromTo(@Validator Player player, @Min(intValue = 0) int from, @StaticValue("to") String toString, int to) { TraceManager.instance.renderAt(player, from, to); BauSystem.MESSAGE.send("TRACE_MESSAGE_SHOW_FROM_TO", player, from, to); } + private void showInternal(Player player, BundleFilter bundleFilter, ViewFlag... flags) { + PlayerTraceShowData playerTraceShowData = new PlayerTraceShowData(bundleFilter, flags); + TraceManager.instance.show(player, playerTraceShowData); + } + + private void showInternal(Player player, int from, int to, BundleFilter bundleFilter, ViewFlag... flags) { + PlayerTraceShowData playerTraceShowData = new PlayerTraceShowData(bundleFilter, flags); + playerTraceShowData.addViewFlag(new AtFlag(from, to)); + TraceManager.instance.show(player, playerTraceShowData); + } + @Register(value = "hide", description = "TRACE_COMMAND_HELP_HIDE") public void hide(@Validator Player player) { TraceManager.instance.hide(player); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java index 6de2a88e..db49af71 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java @@ -202,8 +202,7 @@ public class TraceManager implements Listener { unfollow(player); Region region = Region.getRegion(player.getLocation()); - PlayerTraceShowData previous = showDataPerRegionPerPlayer.getOrDefault(region, Collections.emptyMap()) - .remove(player); + PlayerTraceShowData previous = showDataPerRegionPerPlayer.getOrDefault(region, Collections.emptyMap()).remove(player); if (previous == null) return; tracesByRegion.getOrDefault(player, Collections.emptyMap()).forEach((integer, trace) -> { trace.hide(player); @@ -221,9 +220,7 @@ public class TraceManager implements Listener { showDataPerRegionPerPlayer.forEach((region, playerPlayerTraceShowDataMap) -> { if (playerPlayerTraceShowDataMap.containsKey(follower)) { - tracesByRegion.getOrDefault(region, Collections.emptyMap()).forEach((integer, trace) -> { - trace.hide(follower); - }); + tracesByRegion.getOrDefault(region, Collections.emptyMap()).forEach((integer, trace) -> trace.hide(follower)); } PlayerTraceShowData playerTraceShowData = playerPlayerTraceShowDataMap.get(following); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java index 3266850f..7a118a9a 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -168,8 +168,7 @@ public class TraceRecorder implements Listener { } boolean afterFirstExplosion = wrappedTrace.isExplosionRecorded(); - TNTPoint record = new TNTPoint(tntID, tntPrimed, isExplosion, afterFirstExplosion, - TPSUtils.currentTick.get() - wrappedTrace.getStartTick(), history, destroyedBlocks); + TNTPoint record = new TNTPoint(tntID, tntPrimed, isExplosion, afterFirstExplosion, TPSUtils.currentTick.get() - wrappedTrace.getStartTick(), history, destroyedBlocks); history.add(record); return record; @@ -199,8 +198,7 @@ public class TraceRecorder implements Listener { trackedTNT.get(region).add((TNTPrimed) event.getEntity()); tntSpawnRegion.put((TNTPrimed) event.getEntity(), region); - activeTraces.get(region).addRecord( - record((TNTPrimed) event.getEntity(), activeTraces.get(region), Collections.emptyList())); + activeTraces.get(region).addRecord(record((TNTPrimed) event.getEntity(), activeTraces.get(region), Collections.emptyList())); } } @@ -219,7 +217,6 @@ public class TraceRecorder implements Listener { trackedTNT.get(region).remove((TNTPrimed) event.getEntity()); tntSpawnRegion.remove((TNTPrimed) event.getEntity()); - activeTraces.get(region) - .addRecord(record((TNTPrimed) event.getEntity(), activeTraces.get(region), event.blockList())); + activeTraces.get(region).addRecord(record((TNTPrimed) event.getEntity(), activeTraces.get(region), event.blockList())); } } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecordingWrapper.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecordingWrapper.java index 735a975d..3fe22bce 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecordingWrapper.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecordingWrapper.java @@ -38,7 +38,7 @@ public class TraceRecordingWrapper { private final long startTick; private final List recordsToAdd; private final List recordList; - private ObjectOutputStream recordsOutputStream; + private final ObjectOutputStream recordsOutputStream; private int nextOpenRecordId = 0; @Getter private boolean explosionRecorded = false; diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/PlayerTraceShowData.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/PlayerTraceShowData.java index 8ddff2d3..0e4320fb 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/PlayerTraceShowData.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/PlayerTraceShowData.java @@ -30,7 +30,7 @@ public class PlayerTraceShowData { @Setter private BundleFilter bundleFilter; - private Map, ViewFlag> viewFlags = new HashMap<>(); + private final Map, ViewFlag> viewFlags = new HashMap<>(); public PlayerTraceShowData(BundleFilter bundleFilter, ViewFlag... viewFlags) { this.bundleFilter = bundleFilter; @@ -49,6 +49,8 @@ public class PlayerTraceShowData { } } + System.out.println(flagList); + // Manage inverse flags ViewFlag.inverseFlags.forEach(viewFlag -> { if (!flagList.remove(viewFlag)) { @@ -56,6 +58,8 @@ public class PlayerTraceShowData { } }); + System.out.println(flagList); + return flagList; } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/ViewFlag.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/ViewFlag.java index a47d349d..ea47abac 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/ViewFlag.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/rendering/ViewFlag.java @@ -56,7 +56,7 @@ public abstract class ViewFlag { @Override public List filter(List records) { return records.stream() - .filter(record -> !record.isAfterFirstExplosion()) + .filter(record -> record.isAfterFirstExplosion()) .collect(Collectors.toList()); } }; diff --git a/MiningIII.md b/MiningIII.md deleted file mode 100644 index 4e2b1d32..00000000 --- a/MiningIII.md +++ /dev/null @@ -1,252 +0,0 @@ -# Mining III - -Stats menu, blocks broken -Pickaxe skins? / Cosmetics (Armor) -Crystals? -Music selector -McPrison enchantments? -Legendary enchantments? -> Overdrive entchantments via prestige points -Combo Perk Enchantments? -Show proc rate enchtantment -Crystal Level increase by mining? -Keeping -> Keep an enchantment or n levels on random enchantments -Max upgrade? +5 upgrade? -Auto buy? - -## Enchantments - -### Efficiency - -- Increases Mining speed -- id: efficiency -- max: 10 -- cost_block_base: 50 -- cost_block_inc: 10 -- cost_shards_base: -80 -- cost_shards_inc: 20 - -### Haste - -- Gain Haste -- id: haste -- max: 10 -- cost_block_base: 1000 -- cost_block_inc: 0 -- cost_gold_base: 100 -- cost_gold_inc: 100 - -### Speed - -- Gain Speed -- id: speed -- max: 5 -- cost_blocks_base: 500 -- cost_blocks_inc: -100 -- cost_shards_base: 100 -- cost_shards_inc: 150 - -### Fortune - -- Increases Blocks gained -- id: fortune -- max: 50 -- cost_block_base: 100 -- cost_block_inc: 25 -- cost_gold_base: 200 -- cost_gold_inc: 50 -- cost_shards_base: -40 -- cost_shards_inc: 10 - -### Prosperity - -- Rare chance to greatly increse block gain -- id: prosperity -- max: 10 -- cost_block_base: 1000 -- cost_block_inc: 100 -- cost_gold_base: 1000 -- cost_gold_inc: 100 -- cost_shards_base: 100 -- cost_shards_inc: 100 - -### Gifted - -- Get luckier prosperity procs -- id: gifted -- max: 25 -- cost_block_base: 10000 -- cost_block_inc: 1000 -- cost_shards_base: 1000 -- cost_shards_inc: 250 - -### Shard Fusing Tome - -- Chance to turn ores into shards -- id: shard_fusing_tome -- max: 10 -- cost_block_base: 5000 -- cost_block_inc: 500 -- cost_shards_base: 1000 -- cost_shards_inc: 0 - -### Unstable shards - -- Destroy every shard created by Shard Fusing Tome -- id: unstable_shards -- max: 1 -- cost_block_base: 100000 -- cost_block_inc: 0 -- cost_gold_base: 25000 -- cost_gold_inc: 0 -- cost_shards_base: 10000 -- cost_shards_inc: 0 - -### Gatherer - -- Chance to gain Gold on Block break -- id: gatherer -- max: 10 -- cost_block_base: 1000 -- cost_block_inc: 1000 -- cost_gold_base: 1000 -- cost_gold_inc: 0 - -### Block Shatterer - -- Greatly increase Block gain -- id: block_shatterer -- max: 10 -- cost_block_base: 5000 -- cost_block_inc: 5000 -- cost_gold_base: 1000 -- cost_gold_inc: 1000 -- cost_shards_base: 500 -- cost_shards_inc: 500 - -### Gold Shatterer - -- Greatly increase Gold gain -- id: gold_shatterer -- max: 10 -- cost_block_base: 1000 -- cost_block_inc: 1000 -- cost_gold_base: 5000 -- cost_gold_inc: 5000 -- cost_shards_base: 500 -- cost_shards_inc: 500 - -### Shard Shatterer - -- Greatly increase Shard gain -- id: shard_shatterer -- max: 10 -- cost_block_base: 5000 -- cost_block_inc: 5000 -- cost_gold_base: 500 -- cost_gold_inc: 500 -- cost_shards_base: 1000 -- cost_shards_inc: 1000 - -### Explosive - -- Chance to explode -- id: explosive -- max: 30 -- cost_block_base: 200 -- cost_block_inc: 50 -- cost_gold_base: -700 -- cost_gold_inc: 100 -- cost_shards_base: -3200 -- cost_shards_inc: 200 - -### Laser - -- Chance to fire a laser -- id: laser -- max: 300 -- cost_block_base: 1000 -- cost_block_inc: 0 -- cost_gold_base: 3000 -- cost_gold_inc: -20 -- cost_shards_base: 0 -- cost_shards_inc: 30 - -### Jackhammer - -- Chance to destroy 3*3*3 (100) or 5*5*5 (200) area -- id: jackhammer -- max: 200 -- cost_block_base: 10000 -- cost_block_inc: 100 -- cost_gold_base: -12250 -- cost_gold_inc: 250 -- cost_shards_base: -74500 -- cost_shards_inc: 500 - -### Corrosive Mine - -- Destroy level number of blocks in the vicinity -- id: corrosive_mine -- max: 25 -- cost_block_base: 5000 -- cost_block_inc: 100 -- cost_gold_base: 5000 -- cost_gold_inc: 100 -- cost_shards_base: 5000 -- cost_shards_inc: 100 - -### Jackpot - -- Chance to receive the jackpot of 1000 blocks, 1000 gold and 1000 shards -- id: jackpot -- max: 1 -- cost_shards_base: 50000 -- cost_shards_inc: 0 - -### Dual Pickaxe - -- Chance to proc enchantments on another block in vicinity -- id: dual_pickaxe -- max: 10 -- cost_block_base: 2500 -- cost_block_inc: 500 -- cost_gold_base: 2500 -- cost_gold_inc: 500 -- cost_shards_base: 2500 -- cost_shards_inc: 500 - -### Luck - -- Chance for laser bounces to proc any enchantment -- id: luck -- max: 10 -- cost_block_base: 10000 -- cost_block_inc: 10000 -- cost_gold_base: 10000 -- cost_gold_inc: 10000 -- cost_shards_base: 10000 -- cost_shards_inc: 10000 - -### Lumberjack - -- Change to axe while looking onto Wood -- id: lumberjack -- max: 1 -- cost_block_base: 5000 -- cost_block_inc: 0 -- cost_gold_base: 5000 -- cost_gold_inc: 0 -- cost_shards_base: 5000 -- cost_shards_inc: 0 - -### Soul Remover - -- Change to shovel while looking onto Wood -- id: soul_remover -- max: 1 -- cost_block_base: 5000 -- cost_block_inc: 0 -- cost_gold_base: 5000 -- cost_gold_inc: 0 -- cost_shards_base: 5000 -- cost_shards_inc: 0 \ No newline at end of file