9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-27 18:59:06 +00:00

Add final to sakura classes and methods

This commit is contained in:
Samsuik
2024-02-20 15:55:00 +00:00
parent 26b3945f65
commit f089cdd10b
12 changed files with 73 additions and 73 deletions

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Sakura Utils
diff --git a/src/main/java/me/samsuik/sakura/utils/collections/OrderedComparatorList.java b/src/main/java/me/samsuik/sakura/utils/collections/OrderedComparatorList.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff4909a2ba8f451a7c6aa55ee98e33c88dd69e5e
index 0000000000000000000000000000000000000000..239fc8823b32ae5c8f6e3bfd6ecdde0ccd1e5a8b
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/collections/OrderedComparatorList.java
@@ -0,0 +1,51 @@
@@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..ff4909a2ba8f451a7c6aa55ee98e33c8
+import java.util.Arrays;
+import java.util.Comparator;
+
+public class OrderedComparatorList<T> extends ObjectArrayList<T> {
+public final class OrderedComparatorList<T> extends ObjectArrayList<T> {
+
+ private final Comparator<T> comparator;
+ private boolean binarySearch = true;
@@ -63,7 +63,7 @@ index 0000000000000000000000000000000000000000..ff4909a2ba8f451a7c6aa55ee98e33c8
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/collections/TrackedEntityChunkMap.java b/src/main/java/me/samsuik/sakura/utils/collections/TrackedEntityChunkMap.java
new file mode 100644
index 0000000000000000000000000000000000000000..e31998ac50b8bda8687d07b0022c0e039fa2e774
index 0000000000000000000000000000000000000000..267db86c5d12a804d2f9c868df996a3391910cbd
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/collections/TrackedEntityChunkMap.java
@@ -0,0 +1,34 @@
@@ -74,7 +74,7 @@ index 0000000000000000000000000000000000000000..e31998ac50b8bda8687d07b0022c0e03
+import it.unimi.dsi.fastutil.objects.ObjectCollection;
+import net.minecraft.server.level.ChunkMap;
+
+public class TrackedEntityChunkMap extends Int2ObjectOpenHashMap<ChunkMap.TrackedEntity> {
+public final class TrackedEntityChunkMap extends Int2ObjectOpenHashMap<ChunkMap.TrackedEntity> {
+
+ private final ObjectArrayList<ChunkMap.TrackedEntity> entityList = new UnorderedIndexedList<>();
+
@@ -103,7 +103,7 @@ index 0000000000000000000000000000000000000000..e31998ac50b8bda8687d07b0022c0e03
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/collections/UnorderedIndexedList.java b/src/main/java/me/samsuik/sakura/utils/collections/UnorderedIndexedList.java
new file mode 100644
index 0000000000000000000000000000000000000000..be4f5b4999c85fc6765e37cc9af0a87292327dbf
index 0000000000000000000000000000000000000000..4ca3bf6d6c7aec3a1b31e6ef4f863fa5c34888bd
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/collections/UnorderedIndexedList.java
@@ -0,0 +1,65 @@
@@ -112,7 +112,7 @@ index 0000000000000000000000000000000000000000..be4f5b4999c85fc6765e37cc9af0a872
+import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+
+public class UnorderedIndexedList<T> extends ObjectArrayList<T> {
+public final class UnorderedIndexedList<T> extends ObjectArrayList<T> {
+
+ private final Int2IntOpenHashMap elementToIndex = new Int2IntOpenHashMap();
+
@@ -174,13 +174,13 @@ index 0000000000000000000000000000000000000000..be4f5b4999c85fc6765e37cc9af0a872
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/objects/Expiry.java b/src/main/java/me/samsuik/sakura/utils/objects/Expiry.java
new file mode 100644
index 0000000000000000000000000000000000000000..a05e7d03f17f675e190d63a4206129a74f42cadc
index 0000000000000000000000000000000000000000..93a5655d9dc355d0596c86ea7b592d14ff941476
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/objects/Expiry.java
@@ -0,0 +1,21 @@
+package me.samsuik.sakura.utils.objects;
+
+public class Expiry {
+public final class Expiry {
+
+ private long expireAt;
+ private final int inc;

View File

@@ -137,7 +137,7 @@ index 0000000000000000000000000000000000000000..9b5af05f7a4593eb44f36fff90d94e98
+}
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommand.java b/src/main/java/me/samsuik/sakura/command/SakuraCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..f4e75ba8f2c53a82cb40868f0e1ab77ffcc19e3e
index 0000000000000000000000000000000000000000..2b145614bf189ae56622016436bfefd63f5271eb
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommand.java
@@ -0,0 +1,93 @@
@@ -162,7 +162,7 @@ index 0000000000000000000000000000000000000000..f4e75ba8f2c53a82cb40868f0e1ab77f
+import java.util.List;
+
+@DefaultQualifier(NonNull.class)
+public class SakuraCommand extends Command {
+public final class SakuraCommand extends Command {
+
+ private static final Component INFORMATION_MESSAGE = MiniMessage.miniMessage().deserialize("""
+ <dark_purple>.</dark_purple>
@@ -236,7 +236,7 @@ index 0000000000000000000000000000000000000000..f4e75ba8f2c53a82cb40868f0e1ab77f
+}
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
new file mode 100644
index 0000000000000000000000000000000000000000..c2651cac1dcf85fb67fe981b97efee4e56431de2
index 0000000000000000000000000000000000000000..3b08454cf7411d12bb33225df59800bd73312123
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
@@ -0,0 +1,26 @@
@@ -250,7 +250,7 @@ index 0000000000000000000000000000000000000000..c2651cac1dcf85fb67fe981b97efee4e
+import java.util.HashMap;
+import java.util.Map;
+
+public class SakuraCommands {
+public final class SakuraCommands {
+
+ static final Map<String, Command> COMMANDS = new HashMap<>();
+ static {
@@ -268,7 +268,7 @@ index 0000000000000000000000000000000000000000..c2651cac1dcf85fb67fe981b97efee4e
+}
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b5f50c7447d1c1732a745bae54c4fcd4f45da46
index 0000000000000000000000000000000000000000..75febc3f40910a27a9fc651dac9697da48338cc1
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/ConfigCommand.java
@@ -0,0 +1,45 @@
@@ -291,7 +291,7 @@ index 0000000000000000000000000000000000000000..0b5f50c7447d1c1732a745bae54c4fcd
+import static net.kyori.adventure.text.format.NamedTextColor.RED;
+
+@DefaultQualifier(NonNull.class)
+public class ConfigCommand extends BaseSubCommand {
+public final class ConfigCommand extends BaseSubCommand {
+
+ public ConfigCommand(String name) {
+ super(name);
@@ -921,7 +921,7 @@ index 45804711255f04110e9509df8d60900314aa10b7..174802d3ae69cc9a1f0ae16c078dca79
this.convertable = convertable_conversionsession;
this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile());
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..1efb7002cd1efe4b22a101cb95251f10751634c1 100644
index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..765dfd841ba212713cab76885b5ec632ab504979 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -175,6 +175,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -930,7 +930,7 @@ index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..1efb7002cd1efe4b22a101cb95251f10
// Paper end
+ // Sakura start
+ private final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig;
+ public me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig() {
+ public final me.samsuik.sakura.configuration.WorldConfiguration sakuraConfig() {
+ return this.sakuraConfig;
+ }
+ // Sakura end

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Local Config and Value Storage API
diff --git a/src/main/java/me/samsuik/sakura/local/config/LocalConfigManager.java b/src/main/java/me/samsuik/sakura/local/config/LocalConfigManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..3508755c11cc8f577d27a440f2f4a08d9856f5ae
index 0000000000000000000000000000000000000000..ff54d6b5d3f0299a37f36dde86fd00c5d04115dc
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/local/config/LocalConfigManager.java
@@ -0,0 +1,143 @@
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..3508755c11cc8f577d27a440f2f4a08d
+import java.util.List;
+import java.util.Map;
+
+public class LocalConfigManager implements LocalStorageHandler {
+public final class LocalConfigManager implements LocalStorageHandler {
+
+ private final Map<LocalRegion, LocalValueStorage> storageMap = new Object2ObjectOpenHashMap<>();
+ // tree is a tree. it may not be correct but it works.
@@ -155,7 +155,7 @@ index 0000000000000000000000000000000000000000..3508755c11cc8f577d27a440f2f4a08d
+}
diff --git a/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java b/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..fbd877356594f0cf8934452522cef4349801e5d7
index 0000000000000000000000000000000000000000..f0037f98e93fd1f0dea9c224ba402ebcacf9b21f
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java
@@ -0,0 +1,59 @@
@@ -174,7 +174,7 @@ index 0000000000000000000000000000000000000000..fbd877356594f0cf8934452522cef434
+
+import java.util.Map;
+
+public class LocalValueConfig {
+public final class LocalValueConfig {
+
+ private final Expiry expiry;
+ public Map<Block, DurableMaterial> durableMaterials;
@@ -231,7 +231,7 @@ index d0789c1e01255017e8a54e8b2e80f4c4dcf3dba4..8cb71110c16789a9fbc0b7f76f76f9d4
this.isIteratingOverLevels = false; // Paper
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 1efb7002cd1efe4b22a101cb95251f10751634c1..4f0b68f33c4fca1fa9f983f966b3899e75b837b8 100644
index 765dfd841ba212713cab76885b5ec632ab504979..6feb45464e2cae5cb84b8e3f5202f7364af17648 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -181,6 +181,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -241,7 +241,7 @@ index 1efb7002cd1efe4b22a101cb95251f10751634c1..4f0b68f33c4fca1fa9f983f966b3899e
+ // Sakura start
+ private final me.samsuik.sakura.local.config.LocalConfigManager localConfig = new me.samsuik.sakura.local.config.LocalConfigManager(this);
+
+ public me.samsuik.sakura.local.config.LocalConfigManager localConfig() {
+ public final me.samsuik.sakura.local.config.LocalConfigManager localConfig() {
+ return this.localConfig;
+ }
+ // Sakura end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Visibility API and Command
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
index c2651cac1dcf85fb67fe981b97efee4e56431de2..d7d0c49cc5d576c594dee16ddba037cd147e11fa 100644
index 3b08454cf7411d12bb33225df59800bd73312123..22676ec7a7ae9494b198e5e65e6be6d32e0feb85 100644
--- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
@@ -2,6 +2,9 @@ package me.samsuik.sakura.command;
@@ -18,7 +18,7 @@ index c2651cac1dcf85fb67fe981b97efee4e56431de2..d7d0c49cc5d576c594dee16ddba037cd
import net.minecraft.server.MinecraftServer;
import org.bukkit.command.Command;
@@ -14,6 +17,10 @@ public class SakuraCommands {
@@ -14,6 +17,10 @@ public final class SakuraCommands {
static {
COMMANDS.put("sakura", new SakuraCommand("sakura"));
COMMANDS.put("config", new ConfigCommand("config"));
@@ -31,7 +31,7 @@ index c2651cac1dcf85fb67fe981b97efee4e56431de2..d7d0c49cc5d576c594dee16ddba037cd
public static void registerCommands(final MinecraftServer server) {
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dc2a98123d671c945e85b97a898f56e527a81f5
index 0000000000000000000000000000000000000000..aa5ddf696b09226a0bd3d967d2ac2b11fc2deb32
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/FPSCommand.java
@@ -0,0 +1,26 @@
@@ -45,7 +45,7 @@ index 0000000000000000000000000000000000000000..1dc2a98123d671c945e85b97a898f56e
+import org.checkerframework.framework.qual.DefaultQualifier;
+
+@DefaultQualifier(NonNull.class)
+public class FPSCommand extends BaseSubCommand {
+public final class FPSCommand extends BaseSubCommand {
+
+ private final VisibilityGUI VISIBILITY_GUI = new VisibilityGUI();
+
@@ -63,7 +63,7 @@ index 0000000000000000000000000000000000000000..1dc2a98123d671c945e85b97a898f56e
+}
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..6027e4741e2de7c6d3bd7b094c196a212e34e2f5
index 0000000000000000000000000000000000000000..148a583279333eeb3e5db16652623082cd5e0e60
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/VisualCommand.java
@@ -0,0 +1,45 @@
@@ -82,7 +82,7 @@ index 0000000000000000000000000000000000000000..6027e4741e2de7c6d3bd7b094c196a21
+import java.util.Arrays;
+
+@DefaultQualifier(NonNull.class)
+public class VisualCommand extends BaseSubCommand {
+public final class VisualCommand extends BaseSubCommand {
+
+ private final Visibility.Setting type;
+
@@ -114,7 +114,7 @@ index 0000000000000000000000000000000000000000..6027e4741e2de7c6d3bd7b094c196a21
+}
diff --git a/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java b/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaffe63cec82e8d89a9b6cd6e1749ca983dc6a13
index 0000000000000000000000000000000000000000..8cd203d9643813ec04dfbaa9ef2550b5814ca38f
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/player/visibility/VisibilityGUI.java
@@ -0,0 +1,120 @@
@@ -138,7 +138,7 @@ index 0000000000000000000000000000000000000000..aaffe63cec82e8d89a9b6cd6e1749ca9
+
+import java.util.function.BiFunction;
+
+public class VisibilityGUI extends PlayerGUI {
+public final class VisibilityGUI extends PlayerGUI {
+
+ private static final BiFunction<Player, Holder, Inventory> CREATE_INVENTORY = (player, holder) -> {
+ Inventory inventory = Bukkit.createInventory(holder, 45, Component.text("FPS GUI"));
@@ -594,7 +594,7 @@ index dfdf7e7fc1070975ec18fd215c724f4fc84d3705..23ba4fc50c0d45f1e5d666ff583b9166
public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 4f0b68f33c4fca1fa9f983f966b3899e75b837b8..303c4a47b275e6c53a809c65482ad66734945622 100644
index 6feb45464e2cae5cb84b8e3f5202f7364af17648..7b60000ff3d6e359229d6bacfa0e6e0141d91838 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -287,6 +287,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] TPS Graph Command
diff --git a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
index d7d0c49cc5d576c594dee16ddba037cd147e11fa..2ed50a4fc9cddc036adc5b4288bd5d83442b1572 100644
index 22676ec7a7ae9494b198e5e65e6be6d32e0feb85..6edc5195c3b496a12b17b2b9b528505d37ffdb12 100644
--- a/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
+++ b/src/main/java/me/samsuik/sakura/command/SakuraCommands.java
@@ -4,6 +4,7 @@ import io.papermc.paper.command.PaperPluginsCommand;
@@ -16,7 +16,7 @@ index d7d0c49cc5d576c594dee16ddba037cd147e11fa..2ed50a4fc9cddc036adc5b4288bd5d83
import me.samsuik.sakura.player.visibility.Visibility;
import net.minecraft.server.MinecraftServer;
import org.bukkit.command.Command;
@@ -21,6 +22,7 @@ public class SakuraCommands {
@@ -21,6 +22,7 @@ public final class SakuraCommands {
COMMANDS.put("tntvisibility", new VisualCommand(Visibility.Setting.TNT_VISIBILITY, "tnttoggle"));
COMMANDS.put("sandvisibility", new VisualCommand(Visibility.Setting.SAND_VISIBILITY, "sandtoggle"));
COMMANDS.put("minimal", new VisualCommand(Visibility.Setting.MINIMAL, "minimaltnt", "tntlag"));
@@ -26,7 +26,7 @@ index d7d0c49cc5d576c594dee16ddba037cd147e11fa..2ed50a4fc9cddc036adc5b4288bd5d83
public static void registerCommands(final MinecraftServer server) {
diff --git a/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..13ad8f19806413ead42ab4d33265bf79b96b5a49
index 0000000000000000000000000000000000000000..7bd4c5696911730170320060c273f3a7f6a610be
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/command/subcommands/TPSCommand.java
@@ -0,0 +1,67 @@
@@ -46,7 +46,7 @@ index 0000000000000000000000000000000000000000..13ad8f19806413ead42ab4d33265bf79
+import net.minecraft.util.Mth;
+import org.bukkit.command.CommandSender;
+
+public class TPSCommand extends BaseSubCommand {
+public final class TPSCommand extends BaseSubCommand {
+
+ public TPSCommand(String name) {
+ super(name);
@@ -99,7 +99,7 @@ index 0000000000000000000000000000000000000000..13ad8f19806413ead42ab4d33265bf79
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java b/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java
new file mode 100644
index 0000000000000000000000000000000000000000..efbf8360657c862dd522d0264aa1c5d8f73bd8b5
index 0000000000000000000000000000000000000000..fa5d0c046d979901dd302ee3973df27442172add
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/tps/TPSGraph.java
@@ -0,0 +1,255 @@
@@ -116,7 +116,7 @@ index 0000000000000000000000000000000000000000..efbf8360657c862dd522d0264aa1c5d8
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
+import net.minecraft.util.Mth;
+
+public class TPSGraph {
+public final class TPSGraph {
+
+ private final Parts[][] parts;
+ private final TickTracking tracked;
@@ -360,7 +360,7 @@ index 0000000000000000000000000000000000000000..efbf8360657c862dd522d0264aa1c5d8
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/tps/TickTracking.java b/src/main/java/me/samsuik/sakura/utils/tps/TickTracking.java
new file mode 100644
index 0000000000000000000000000000000000000000..8a94b1a2cb1ff57664c97a7b471c99ec391103ae
index 0000000000000000000000000000000000000000..e36644b06bc91f593e831405c5dfe59daef0e244
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/tps/TickTracking.java
@@ -0,0 +1,53 @@
@@ -374,7 +374,7 @@ index 0000000000000000000000000000000000000000..8a94b1a2cb1ff57664c97a7b471c99ec
+import java.util.List;
+import java.util.stream.IntStream;
+
+public class TickTracking {
+public final class TickTracking {
+
+ private final List<Point> history = new ArrayList<>();
+ private final double[] msptSamples = new double[20];

View File

@@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..c579b375994652f2331a454210986bcc
+
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 7e2a9c3b356e2ac46c1a0badb82c444def901045..1bd5db8e0919d126d18e250bb1cb35cb96d63f5c 100644
index 7e2a9c3b356e2ac46c1a0badb82c444def901045..6b073e87fb6ebd7edd45dbe297ae6a3f00f1f718 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -547,6 +547,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -58,23 +58,23 @@ index 7e2a9c3b356e2ac46c1a0badb82c444def901045..1bd5db8e0919d126d18e250bb1cb35cb
+ // Sakura start - entity state (from start of tick)
+ private @Nullable me.samsuik.sakura.entity.EntityState entityState = null;
+
+ public Vec3 stuckSpeedMultiplier() {
+ public final Vec3 stuckSpeedMultiplier() {
+ return stuckSpeedMultiplier;
+ }
+
+ public void storeEntityState() {
+ public final void storeEntityState() {
+ entityState = me.samsuik.sakura.entity.EntityState.of(this);
+ }
+
+ public @Nullable me.samsuik.sakura.entity.EntityState entityState() {
+ public final @Nullable me.samsuik.sakura.entity.EntityState entityState() {
+ return entityState;
+ }
+
+ public boolean compareState(Entity to) {
+ public final boolean compareState(Entity to) {
+ return to.entityState() != null && to.entityState().isCurrentState(this);
+ }
+
+ public long getPackedOrigin() {
+ public final long getPackedOrigin() {
+ var v = getOriginVector();
+ if (v == null) return Long.MIN_VALUE;
+ // Note: vector#getBlockN may not be 100% exact
@@ -87,7 +87,7 @@ index 7e2a9c3b356e2ac46c1a0badb82c444def901045..1bd5db8e0919d126d18e250bb1cb35cb
public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 303c4a47b275e6c53a809c65482ad66734945622..aacb2bb7218eb486f8a76ce586de00225683b4ca 100644
index 7b60000ff3d6e359229d6bacfa0e6e0141d91838..2adba71265af5e9deb900414c1f52e91b02921c1 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -939,6 +939,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Merge Cannon Entities
diff --git a/src/main/java/me/samsuik/sakura/entity/merge/MergeHistory.java b/src/main/java/me/samsuik/sakura/entity/merge/MergeHistory.java
new file mode 100644
index 0000000000000000000000000000000000000000..90f36b2d3847e058cfa2b748838fc6ea3294c159
index 0000000000000000000000000000000000000000..3216f20b93b73277c4ad2ebb054eeee4db4fb8b6
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/entity/merge/MergeHistory.java
@@ -0,0 +1,127 @@
@@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..90f36b2d3847e058cfa2b748838fc6ea
+
+import java.util.List;
+
+public class MergeHistory {
+public final class MergeHistory {
+
+ // packed position -> known merging information
+ private final Long2ObjectMap<MergeData> mergeDataMap = new Long2ObjectOpenHashMap<>();
@@ -464,7 +464,7 @@ index 6097d495252c9c7ee54f7017ca2b39d42e5046fe..2bdd46350317a9fadf362b1a341993c9
this.explode();
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index aacb2bb7218eb486f8a76ce586de00225683b4ca..d1ca193575f531f0cb12e056bfda75b86c3940bb 100644
index 2adba71265af5e9deb900414c1f52e91b02921c1..890e862217947b21d976b45d271554abb210b622 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -288,6 +288,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Optimised Explosions
diff --git a/src/main/java/me/samsuik/sakura/explosion/DensityCache.java b/src/main/java/me/samsuik/sakura/explosion/DensityCache.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f6f34cc617efaad420485a7f613cfcad88e3783
index 0000000000000000000000000000000000000000..5c6d4124189d98421e2d6f351840c5d69bf2faf4
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/explosion/DensityCache.java
@@ -0,0 +1,130 @@
@@ -21,7 +21,7 @@ index 0000000000000000000000000000000000000000..3f6f34cc617efaad420485a7f613cfca
+
+import javax.annotation.Nullable;
+
+public class DensityCache {
+public final class DensityCache {
+
+ private final Int2ObjectMap<Density> densityMap = new Int2ObjectOpenHashMap<>();
+
@@ -142,7 +142,7 @@ index 0000000000000000000000000000000000000000..3f6f34cc617efaad420485a7f613cfca
+}
diff --git a/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java
new file mode 100644
index 0000000000000000000000000000000000000000..93c7be878632296683a794235455013c33bec9e7
index 0000000000000000000000000000000000000000..21e620a23ad5ba889760fe6234fe2c245f1d73a8
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java
@@ -0,0 +1,381 @@
@@ -190,7 +190,7 @@ index 0000000000000000000000000000000000000000..93c7be878632296683a794235455013c
+ * realistic to explode a big block of tnt in survival or factions. They only cause
+ * harm to a server and extremely wasteful for resources with minimal impact to terrain.
+ */
+public class SakuraExplosion extends Explosion {
+public final class SakuraExplosion extends Explosion {
+
+ private final Level level;
+
@@ -529,7 +529,7 @@ index 0000000000000000000000000000000000000000..93c7be878632296683a794235455013c
+}
diff --git a/src/main/java/me/samsuik/sakura/utils/ExplosionUtil.java b/src/main/java/me/samsuik/sakura/utils/ExplosionUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0387f16ff49031fdcbc8990613417da88d84e87
index 0000000000000000000000000000000000000000..84e5fe09f7432cdeec846dc1e26404706f1c298c
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/utils/ExplosionUtil.java
@@ -0,0 +1,64 @@
@@ -540,7 +540,7 @@ index 0000000000000000000000000000000000000000..e0387f16ff49031fdcbc8990613417da
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExplosionUtil {
+public final class ExplosionUtil {
+
+ private static final java.util.function.Function<double[], Double> highestOf = (vector) -> {
+ double highest = 0;
@@ -961,7 +961,7 @@ index 3cb5306a2ccfc1c53f90ecd56980d17be4042093..88fccb17260c203111147a2a458d8185
return blockDensity;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index d1ca193575f531f0cb12e056bfda75b86c3940bb..c62793c50e95e2e9588e20a59a1d8fb70ddf7760 100644
index 890e862217947b21d976b45d271554abb210b622..a246493bc7c0b589521c39ec5c10f5040ca19e33 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -289,6 +289,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Explosion Durable Blocks
diff --git a/src/main/java/me/samsuik/sakura/explosion/durable/DurableBlockManager.java b/src/main/java/me/samsuik/sakura/explosion/durable/DurableBlockManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e11ba36e9e820f17839d696e5d7d876e7437fbf
index 0000000000000000000000000000000000000000..c58e52f7cc012babf4235e405e5fb5015c6e95d9
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/explosion/durable/DurableBlockManager.java
@@ -0,0 +1,63 @@
@@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..2e11ba36e9e820f17839d696e5d7d876
+import net.minecraft.core.BlockPos;
+import net.minecraft.server.MinecraftServer;
+
+public class DurableBlockManager {
+public final class DurableBlockManager {
+
+ private final Long2ObjectOpenHashMap<DurableBlock> blocks = new Long2ObjectOpenHashMap<>();
+
@@ -162,7 +162,7 @@ index 88fccb17260c203111147a2a458d81855cf12152..2fdfd6bbe87d3c93efd368307447f057
Entity sourceEntity = this.source == null ? null : this.source;
BlockPos sourceBlock = sourceEntity == null ? BlockPos.containing(this.x, this.y, this.z) : null;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 87b7254406166f4b98bd2e2ca1e57b53d789867c..1bcd2400e4a1319e844592c9f313f4e396e4d97e 100644
index 9ebd7ae21f1fa492636bfa9979311a8105f5e3d6..c34d484661588d31d3ff59c5621c80c8c6b2c4ed 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -290,6 +290,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -53,7 +53,7 @@ index 22a2547810d0c029f29685faddf7ac21cde2df0b..0fad13769f5727279430ac7f650f3d4d
diff --git a/src/main/java/me/samsuik/sakura/redstone/RedstoneTracker.java b/src/main/java/me/samsuik/sakura/redstone/RedstoneTracker.java
new file mode 100644
index 0000000000000000000000000000000000000000..455e51b93c50f8bf3e84d11f373be7b1dc9fc6eb
index 0000000000000000000000000000000000000000..c4150b062ee1a15f1938fea2da926699edb804a9
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/redstone/RedstoneTracker.java
@@ -0,0 +1,283 @@
@@ -80,7 +80,7 @@ index 0000000000000000000000000000000000000000..455e51b93c50f8bf3e84d11f373be7b1
+import java.util.List;
+import java.util.function.Predicate;
+
+public class RedstoneTracker {
+public final class RedstoneTracker {
+
+ private static final int DEPTH_LIMIT = 512;
+
@@ -353,7 +353,7 @@ index cd095a5a921d1c1dd7cbc2adc2f3111801d23a5c..20ef1c7c94e4159bc1d177b2aaa9c773
this.isIteratingOverLevels = false; // Paper
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 1bcd2400e4a1319e844592c9f313f4e396e4d97e..890ef46187e555a49f216620a55dc6ac40f6530f 100644
index c34d484661588d31d3ff59c5621c80c8c6b2c4ed..8407bad739f4b314a5e31d47629da99880ec061c 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -291,6 +291,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View File

@@ -35,10 +35,10 @@ index 04305ed8e75c5e83d08392c0f7f431cb77ac272e..9132adee72a2ae9c1c069a4f385c2b8d
if (xSmaller && z != 0.0) {
z = performCollisionsZ(axisalignedbb, z, potentialCollisions);
diff --git a/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java
index 93c7be878632296683a794235455013c33bec9e7..c201c7e558205e3ca27db9b1f1486125996aee4f 100644
index 21e620a23ad5ba889760fe6234fe2c245f1d73a8..d2d90b89c1c476b61ef0534e981e0932da1613fa 100644
--- a/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java
+++ b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java
@@ -141,7 +141,7 @@ public class SakuraExplosion extends Explosion {
@@ -141,7 +141,7 @@ public final class SakuraExplosion extends Explosion {
// update explosion position
x = source.getX();
@@ -47,7 +47,7 @@ index 93c7be878632296683a794235455013c33bec9e7..c201c7e558205e3ca27db9b1f1486125
z = source.getZ();
}
@@ -232,10 +232,17 @@ public class SakuraExplosion extends Explosion {
@@ -232,10 +232,17 @@ public final class SakuraExplosion extends Explosion {
if (distanceFromBottom > 1.0) continue;
double x = entity.getX() - pos.x;
@@ -66,7 +66,7 @@ index 93c7be878632296683a794235455013c33bec9e7..c201c7e558205e3ca27db9b1f1486125
if (distance == 0.0D) continue;
x /= distance;
@@ -280,10 +287,17 @@ public class SakuraExplosion extends Explosion {
@@ -280,10 +287,17 @@ public final class SakuraExplosion extends Explosion {
if (distanceFromBottom <= 1.0) {
double x = entity.getX() - pos.x;
@@ -86,7 +86,7 @@ index 93c7be878632296683a794235455013c33bec9e7..c201c7e558205e3ca27db9b1f1486125
x /= distance;
y /= distance;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0c9324423b8caefcc8c6fa9b7c27c819ba24f208..e2fdb43a69944819152363f91f6fabee0443dbf6 100644
index 78815988e33a13c2fa73d7b77d36e032c19f8076..e49860d217b7848e9bbca45a553908df29a27f69 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -363,7 +363,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -105,7 +105,7 @@ index 0c9324423b8caefcc8c6fa9b7c27c819ba24f208..e2fdb43a69944819152363f91f6fabee
+ // Sakura start - physics version
+ protected me.samsuik.sakura.physics.PhysicsVersion physics = me.samsuik.sakura.physics.PhysicsVersion.LATEST;
+
+ public me.samsuik.sakura.physics.PhysicsVersion physics() {
+ public final me.samsuik.sakura.physics.PhysicsVersion physics() {
+ return this.physics;
+ }
+ // Sakura end
@@ -515,7 +515,7 @@ index 5455f99e88672c2163502616f9e820af46657062..e0ea2117efa3bb87e398b970a168840c
d8 /= d11;
d9 /= d11;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 890ef46187e555a49f216620a55dc6ac40f6530f..0ecbccd8a6e2d50f0ad61b6e86300009f122e737 100644
index 8407bad739f4b314a5e31d47629da99880ec061c..fd377b727a9f20556cb16d29bb1be445d21fd9a4 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -325,6 +325,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -953,7 +953,7 @@ index 6091e3c3adbcc92c9ca438c301a99f646e3cb549..df6e859688c5b45a541b11f204639547
}
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
index 26e11fbe0ddeed23d286e83adfa7d2a5e9cf88c8..21ede03d8e630169119d7432227cfba40461760f 100644
index 26e11fbe0ddeed23d286e83adfa7d2a5e9cf88c8..e4fc8772157bd40b08bc9b1631898ad2bb2a5faa 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
@@ -159,6 +159,13 @@ public class PistonMovingBlockEntity extends BlockEntity {
@@ -1016,7 +1016,7 @@ index 26e11fbe0ddeed23d286e83adfa7d2a5e9cf88c8..21ede03d8e630169119d7432227cfba4
+ return null;
+ }
+
+ public VoxelShape getCollisionShapeFromProgress(Level level, BlockPos pos) {
+ public final VoxelShape getCollisionShapeFromProgress(Level level, BlockPos pos) {
+ float progress = this.getProgress(0.0f);
+
+ if (this.extending) {

View File

@@ -39,7 +39,7 @@ index 9132adee72a2ae9c1c069a4f385c2b8d101484ba..aee02670c421dc238085871021a27266
if (predicate != null && !predicate.test(blockData, mutablePos)) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 28e568f3333cf1000a9bd2a39b89a569695e4238..8940b93d3a3bb6b5ee03d64b26d606114d6af64a 100644
index e49860d217b7848e9bbca45a553908df29a27f69..cc9c4aaf6aaf35b5f4c4da926b8c9baa9f6426db 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -685,6 +685,19 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -47,7 +47,7 @@ index 28e568f3333cf1000a9bd2a39b89a569695e4238..8940b93d3a3bb6b5ee03d64b26d60611
}
// Sakura end
+ // Sakura start - treat all collidable blocks as full
+ public boolean isTreatingBlocksAsFull() {
+ public final boolean isTreatingBlocksAsFull() {
+ if (level.sakuraConfig().cannons.treatAllBlocksAsFullWhenMoving && (this.isPrimedTNT || this.isFallingBlock)) {
+ this.syncDeltaMovement();
+ double horizontalMovementSqr = this.movementX*this.movementX + this.movementZ*this.movementZ;