Skip to content

Commit

Permalink
dont wanna use feature patches. only per file)
Browse files Browse the repository at this point in the history
  • Loading branch information
AltronMaxX committed Jan 17, 2025
1 parent a81946b commit 2345a36
Show file tree
Hide file tree
Showing 33 changed files with 1,781 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2976,6 +_,12 @@
}
// Paper end - Folia region threading API

+ // Leaves start - Photographer API
+ public static @NotNull org.leavesmc.leaves.entity.PhotographerManager getPhotographerManager() {
+ return server.getPhotographerManager();
+ }
+ // Leaves end - Photographer API
+
@NotNull
public static Server.Spigot spigot() {
return server.spigot();
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -66,6 +_,7 @@
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.leavesmc.leaves.entity.PhotographerManager;

/**
* Represents a server implementation.
@@ -83,6 +_,11 @@
*/
@NotNull
File getPluginsFolder();
+
+ // Leaves start - Photographer API
+ @NotNull
+ PhotographerManager getPhotographerManager();
+ // Leaves end - Photographer API

/**
* Used for all administrative messages, such as an operator using a
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/entity/Photographer.java
@@ -1,0 +_,27 @@
+package org.leavesmc.leaves.entity;
+
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.File;
+
+public interface Photographer extends Player {
+
+ @NotNull
+ public String getId();
+
+ public void setRecordFile(@NotNull File file);
+
+ public void stopRecording();
+
+ public void stopRecording(boolean async);
+
+ public void stopRecording(boolean async, boolean save);
+
+ public void pauseRecording();
+
+ public void resumeRecording();
+
+ public void setFollowPlayer(@Nullable Player player);
+}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java
@@ -1,0 +_,32 @@
+package org.leavesmc.leaves.entity;
+
+import org.bukkit.Location;
+import org.bukkit.util.Consumer;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.leavesmc.leaves.replay.BukkitRecorderOption;
+
+import java.util.Collection;
+import java.util.UUID;
+
+public interface PhotographerManager {
+ @Nullable
+ public Photographer getPhotographer(@NotNull UUID uuid);
+
+ @Nullable
+ public Photographer getPhotographer(@NotNull String id);
+
+ @Nullable
+ public Photographer createPhotographer(@NotNull String id, @NotNull Location location);
+
+ @Nullable
+ public Photographer createPhotographer(@NotNull String id, @NotNull Location location, @NotNull BukkitRecorderOption recorderOption);
+
+ public void removePhotographer(@NotNull String id);
+
+ public void removePhotographer(@NotNull UUID uuid);
+
+ public void removeAllPhotographers();
+
+ public Collection<Photographer> getPhotographers();
+}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--- /dev/null
+++ b/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java
@@ -1,0 +_,18 @@
+package org.leavesmc.leaves.replay;
+
+public class BukkitRecorderOption {
+
+ // public int recordDistance = -1;
+ public String serverName = "Leaves";
+ public BukkitRecordWeather forceWeather = BukkitRecordWeather.NULL;
+ public int forceDayTime = -1;
+ public boolean ignoreChat = false;
+ // public boolean ignoreItem = false;
+
+ public enum BukkitRecordWeather {
+ CLEAR,
+ RAIN,
+ THUNDER,
+ NULL
+ }
+}
4 changes: 3 additions & 1 deletion foldenor-server/build.gradle.kts.patch
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,16 @@
implementation("ca.spottedleaf:concurrentutil:0.0.3")
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
@@ -177,6 +_,11 @@
@@ -177,6 +_,13 @@
runtimeOnly("com.mysql:mysql-connector-j:9.1.0")
runtimeOnly("com.lmax:disruptor:3.4.4")

+ // LinearPaper start
+ implementation("com.github.luben:zstd-jni:1.5.6-6")
+ implementation("org.lz4:lz4-java:1.8.0")
+ // LinearPaper end
+
+ implementation("com.github.ben-manes.caffeine:caffeine:3.1.8")
+
runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6")
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- /dev/null
+++ b/net/edenor/foldenor/config/FoldenorConfig.java
@@ -1,0 +_,282 @@
@@ -1,0 +_,288 @@
+package net.edenor.foldenor.config;
+
+import com.google.common.base.Throwables;
Expand Down Expand Up @@ -63,6 +63,10 @@
+
+ public static boolean asyncPlayerDataSaveEnabled = false;
+
+ public static boolean villagersDontReleaseMemoryFix = true;
+
+ public static boolean skipSecondaryPOISensorIfAbsent = false;
+
+ public static void init(File configFile) {
+ init(configFile, true);
+ }
Expand Down Expand Up @@ -162,6 +166,8 @@
+ skipAIForNonAwareMob = getBoolean("optimizations.skip-ai-for-non-aware-mob", skipAIForNonAwareMob);
+ throttleHopperWhenFullEnabled = getBoolean("optimizations.throttle-hopper-when-full.enabled", throttleHopperWhenFullEnabled);
+ throttleHopperWhenFullSkipTicks = getInt("optimizations.throttle-hopper-when-full.skip-ticks", throttleHopperWhenFullSkipTicks);
+ villagersDontReleaseMemoryFix = getBoolean("optimizations.villagers-dont-release-memory-fix", villagersDontReleaseMemoryFix);
+ skipSecondaryPOISensorIfAbsent = getBoolean("optimizations.skip-secondary-POI-sensor-if-absent", skipSecondaryPOISensorIfAbsent);
+ }
+
+ private static void readMiscSettings() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
--- a/net/minecraft/commands/arguments/selector/EntitySelector.java
+++ b/net/minecraft/commands/arguments/selector/EntitySelector.java
@@ -128,11 +_,12 @@
return this.findPlayers(source);
} else if (this.playerName != null) {
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName);
+ playerByName = playerByName instanceof org.leavesmc.leaves.replay.ServerPhotographer ? null : playerByName; // Leaves - skip photographer
return playerByName == null ? List.of() : List.of(playerByName);
} else if (this.entityUUID != null) {
for (ServerLevel serverLevel : source.getServer().getAllLevels()) {
Entity entity = serverLevel.getEntity(this.entityUUID);
- if (entity != null) {
+ if (entity != null && !(entity instanceof org.leavesmc.leaves.replay.ServerPhotographer)) {
if (entity.getType().isEnabled(source.enabledFeatures())) {
return List.of(entity);
}
@@ -146,7 +_,7 @@
AABB absoluteAabb = this.getAbsoluteAabb(vec3);
if (this.currentEntity) {
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, null);
- return source.getEntity() != null && predicate.test(source.getEntity()) ? List.of(source.getEntity()) : List.of();
+ return source.getEntity() != null && !(source.getEntity() instanceof org.leavesmc.leaves.replay.ServerPhotographer) && predicate.test(source.getEntity()) ? List.of(source.getEntity()) : List.of(); // Leaves - skip photographer
} else {
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, source.enabledFeatures());
List<Entity> list = new ObjectArrayList<>();
@@ -157,6 +_,7 @@
this.addEntities(list, serverLevel1, absoluteAabb, predicate);
}
}
+ list.removeIf(entity -> entity instanceof org.leavesmc.leaves.replay.ServerPhotographer); // Leaves - skip photographer

return this.sortAndLimit(vec3, list);
}
@@ -192,26 +_,29 @@
this.checkPermissions(source);
if (this.playerName != null) {
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName);
+ playerByName = playerByName instanceof org.leavesmc.leaves.replay.ServerPhotographer ? null : playerByName; // Leaves - skip photographer
return playerByName == null ? List.of() : List.of(playerByName);
} else if (this.entityUUID != null) {
ServerPlayer playerByName = source.getServer().getPlayerList().getPlayer(this.entityUUID);
+ playerByName = playerByName instanceof org.leavesmc.leaves.replay.ServerPhotographer ? null : playerByName; // Leaves - skip photographer
return playerByName == null ? List.of() : List.of(playerByName);
} else {
Vec3 vec3 = this.position.apply(source.getPosition());
AABB absoluteAabb = this.getAbsoluteAabb(vec3);
Predicate<Entity> predicate = this.getPredicate(vec3, absoluteAabb, null);
if (this.currentEntity) {
- return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) ? List.of(serverPlayer) : List.of();
+ return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer)
+ && !(source.getEntity() instanceof org.leavesmc.leaves.replay.ServerPhotographer) ? List.of(serverPlayer) : List.of();
} else {
int resultLimit = this.getResultLimit();
List<ServerPlayer> players;
if (this.isWorldLimited()) {
- players = source.getLevel().getPlayers(predicate, resultLimit);
+ players = source.getLevel().getPlayers((entityplayer3 -> !(entityplayer3 instanceof org.leavesmc.leaves.replay.ServerPhotographer) && predicate.test(entityplayer3)), resultLimit); // Leaves - skip photographer
} else {
players = new ObjectArrayList<>();

for (ServerPlayer serverPlayer1 : source.getServer().getPlayerList().getPlayers()) {
- if (predicate.test(serverPlayer1)) {
+ if (predicate.test(serverPlayer1) && !(serverPlayer1 instanceof org.leavesmc.leaves.replay.ServerPhotographer)) { // Leaves - skip photographer
players.add(serverPlayer1);
if (players.size() >= resultLimit) {
return players;
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
--- a/net/minecraft/nbt/CompoundTag.java
+++ b/net/minecraft/nbt/CompoundTag.java
@@ -49,7 +_,7 @@

private static CompoundTag loadCompound(DataInput input, NbtAccounter nbtAccounter) throws IOException {
nbtAccounter.accountBytes(48L);
- it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<String, Tag> map = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(8, 0.8f); // Paper - Reduce memory footprint of CompoundTag
+ it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<String, Tag> map = new org.dreeam.leaf.util.map.StringCanonizingOpenHashMap<>(8, 0.8f); // Paper - Reduce memory footprint of CompoundTag // Leaf - Further reduce memory footprint of CompoundTag

byte b;
while ((b = input.readByte()) != 0) {
@@ -166,7 +_,7 @@
}

public CompoundTag() {
- this(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(8, 0.8f)); // Paper - Reduce memory footprint of CompoundTag
+ this(new org.dreeam.leaf.util.map.StringCanonizingOpenHashMap<>(8, 0.8f)); // Paper - Reduce memory footprint of CompoundTag // Leaf - Further reduce memory footprint of CompoundTag
}

@Override
@@ -497,6 +_,11 @@

@Override
public CompoundTag copy() {
+ // Leaf start - Further reduce memory footprint of CompoundTag
+ if (this.tags instanceof org.dreeam.leaf.util.map.StringCanonizingOpenHashMap<Tag> stringCanonizingTags) {
+ return new CompoundTag(org.dreeam.leaf.util.map.StringCanonizingOpenHashMap.deepCopy(stringCanonizingTags, Tag::copy));
+ }
+ // Leaf end - Further reduce memory footprint of CompoundTag
// Paper start - Reduce memory footprint of CompoundTag
it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<String, Tag> ret = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(this.tags.size(), 0.8f);
java.util.Iterator<java.util.Map.Entry<String, Tag>> iterator = (this.tags instanceof it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap) ? ((it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap)this.tags).object2ObjectEntrySet().fastIterator() : this.tags.entrySet().iterator();
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@
}

return flag;
@@ -1754,7 +_,7 @@
}

private ServerStatus.Players buildPlayerStatus() {
- List<ServerPlayer> players = new java.util.ArrayList<>(this.playerList.getPlayers()); // Folia - region threading
+ List<ServerPlayer> players = new java.util.ArrayList<>(this.playerList.realPlayers); // Folia - region threading // Leaves - only real player
int maxPlayers = this.getMaxPlayers();
if (this.hidesOnlinePlayers()) {
return new ServerStatus.Players(maxPlayers, players.size(), List.of());
@@ -1855,6 +_,7 @@
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/net/minecraft/server/commands/OpCommand.java
+++ b/net/minecraft/server/commands/OpCommand.java
@@ -25,7 +_,7 @@
(context, builder) -> {
PlayerList playerList = context.getSource().getServer().getPlayerList();
return SharedSuggestionProvider.suggest(
- playerList.getPlayers()
+ playerList.realPlayers // Leaves - only real player
.stream()
.filter(player -> !playerList.isOp(player.getGameProfile()))
.map(player -> player.getGameProfile().getName()),
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -197,7 +_,7 @@
);
public ServerGamePacketListenerImpl connection;
public final MinecraftServer server;
- public final ServerPlayerGameMode gameMode;
+ public ServerPlayerGameMode gameMode;
private final PlayerAdvancements advancements;
private final ServerStatsCounter stats;
private float lastRecordedHealthAndAbsorption = Float.MIN_VALUE;
Loading

0 comments on commit 2345a36

Please sign in to comment.