Skip to content

Commit

Permalink
Complete Rewrite of everything
Browse files Browse the repository at this point in the history
  • Loading branch information
C0D3-M4513R committed Mar 19, 2024
1 parent 97b815e commit 3b829ee
Show file tree
Hide file tree
Showing 19 changed files with 313 additions and 388 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,10 @@
}

private void readScoreboard(DimensionDataStorage p_129842_) {
@@ -297,7 +_,19 @@
@@ -297,6 +_,18 @@

protected abstract boolean initServer() throws IOException;

- protected void loadLevel() {
+ //Ketting start
+ private String loadLevel$worldName;
+ protected void prepareLoadLevel(String worldName) {
Expand All @@ -99,10 +98,9 @@
+ }
+ //Ketting end
+
+ protected void loadLevel() { // CraftBukkit
protected void loadLevel() {
if (!JvmProfiler.INSTANCE.isRunning()) {
}

@@ -308,6 +_,13 @@
this.createLevels(chunkprogresslistener);
this.forceDifficulty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
private static final Logger LOGGER = LogUtils.getLogger();
private static final CompletableFuture<Unit> DATA_RELOAD_INITIAL_TASK = CompletableFuture.completedFuture(Unit.INSTANCE);
private final CommandBuildContext.Configurable commandBuildContext;
- private final Commands commands;
- public final Commands commands;
- private final RecipeManager recipes = new RecipeManager();
+ public Commands commands;
+ private final RecipeManager recipes;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
--- a/net/minecraft/server/commands/GiveCommand.java
+++ b/net/minecraft/server/commands/GiveCommand.java
@@ -49,7 +_,7 @@
@@ -49,7 +_,8 @@
boolean flag = serverplayer.getInventory().add(itemstack1);
if (flag && itemstack1.isEmpty()) {
itemstack1.setCount(1);
- ItemEntity itementity1 = serverplayer.drop(itemstack1, false);
+ ItemEntity itementity1 = serverplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event
+ serverplayer.ketting$drop$callEvent.set(false); // Ketting - SPIGOT-2942: Add boolean to call event
+ ItemEntity itementity1 = serverplayer.drop(itemstack1, false, false);
if (itementity1 != null) {
itementity1.makeFakeItem();
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
--- a/net/minecraft/server/commands/SetSpawnCommand.java
+++ b/net/minecraft/server/commands/SetSpawnCommand.java
@@ -33,7 +_,7 @@
@@ -33,6 +_,7 @@
ResourceKey<Level> resourcekey = p_138650_.getLevel().dimension();

for(ServerPlayer serverplayer : p_138651_) {
- serverplayer.setRespawnPosition(resourcekey, p_138652_, p_138653_, true, false);
+ serverplayer.setRespawnPosition(resourcekey, p_138652_, p_138653_, true, false, org.bukkit.event.player.PlayerSpawnChangeEvent.Cause.COMMAND); // CraftBukkit
+ serverplayer.ketting$respawnPositionCause.set(org.bukkit.event.player.PlayerSpawnChangeEvent.Cause.COMMAND); // Ketting - CraftBukkit
serverplayer.setRespawnPosition(resourcekey, p_138652_, p_138653_, true, false);
}

String s = resourcekey.location().toString();
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
--- a/net/minecraft/server/commands/SummonCommand.java
+++ b/net/minecraft/server/commands/SummonCommand.java
@@ -60,7 +_,7 @@
@@ -60,6 +_,7 @@
((Mob)entity).finalizeSpawn(p_270582_.getLevel(), p_270582_.getLevel().getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.COMMAND, (SpawnGroupData)null, (CompoundTag)null);
}

- if (!serverlevel.tryAddFreshEntityWithPassengers(entity)) {
+ if (!serverlevel.tryAddFreshEntityWithPassengers(entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.COMMAND)) { // CraftBukkit - pass a spawn reason of "COMMAND"
+ serverlevel.ketting$tryAddFreshEntityWithPassengers$spawnReason.set(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.COMMAND); // Ketting - CraftBukkit - pass a spawn reason of "COMMAND"
if (!serverlevel.tryAddFreshEntityWithPassengers(entity)) {
throw ERROR_DUPLICATE_UUID.create();
} else {
return entity;
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,10 @@
public final boolean onlineMode = this.get("online-mode", true);
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
public final String serverIp = this.get("server-ip", "");
@@ -103,27 +_,46 @@
private final DedicatedServerProperties.WorldDimensionData worldDimensionData;
public final WorldOptions worldOptions;
@@ -118,12 +_,31 @@
this.initialDataPackConfiguration = getDatapackConfig(this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())), this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled())));
}

- public DedicatedServerProperties(Properties p_180926_) {
- super(p_180926_);
- String s = this.get("level-seed", "");
- boolean flag = this.get("generate-structures", true);
- long i = WorldOptions.parseSeed(s).orElse(WorldOptions.randomSeed());
- this.worldOptions = new WorldOptions(i, flag, false);
- this.worldDimensionData = new DedicatedServerProperties.WorldDimensionData(this.get("generator-settings", (p_211543_) -> {
- return GsonHelper.parse(!p_211543_.isEmpty() ? p_211543_ : "{}");
- }, new JsonObject()), this.get("level-type", (p_211541_) -> {
- return p_211541_.toLowerCase(Locale.ROOT);
- }, WorldPresets.NORMAL.location().toString()));
- this.serverResourcePackInfo = getServerPackInfo(this.get("resource-pack", ""), this.get("resource-pack-sha1", ""), this.getLegacyString("resource-pack-hash"), this.get("require-resource-pack", false), this.get("resource-pack-prompt", ""));
- this.initialDataPackConfiguration = getDatapackConfig(this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())), this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled())));
- }
-
- public static DedicatedServerProperties fromFile(Path p_180930_) {
- return new DedicatedServerProperties(loadFromFile(p_180930_));
- }
Expand All @@ -50,21 +35,6 @@
+ this.initialDataPackConfiguration = getDatapackConfig(this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())), this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled())));
+ }
+
+ public DedicatedServerProperties(Properties properties) {
+ super(properties);
+ String s = this.get("level-seed", "");
+ boolean flag = this.get("generate-structures", true);
+ long i = WorldOptions.parseSeed(s).orElse(WorldOptions.randomSeed());
+ this.worldOptions = new WorldOptions(i, flag, false);
+ this.worldDimensionData = new DedicatedServerProperties.WorldDimensionData(this.get("generator-settings", (p_211543_) -> {
+ return GsonHelper.parse(!p_211543_.isEmpty() ? p_211543_ : "{}");
+ }, new JsonObject()), this.get("level-type", (p_211541_) -> {
+ return p_211541_.toLowerCase(Locale.ROOT);
+ }, WorldPresets.NORMAL.location().toString()));
+ this.serverResourcePackInfo = getServerPackInfo(this.get("resource-pack", ""), this.get("resource-pack-sha1", ""), this.getLegacyString("resource-pack-hash"), this.get("require-resource-pack", false), this.get("resource-pack-prompt", ""));
+ this.initialDataPackConfiguration = getDatapackConfig(this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())), this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled())));
+ }
+
+ // CraftBukkit start
+ public static DedicatedServerProperties fromFile(Path p_180930_, joptsimple.OptionSet optionset) {
+ return new DedicatedServerProperties(loadFromFile(p_180930_), optionset);
Expand Down
51 changes: 28 additions & 23 deletions patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
}

}
@@ -946,21 +_,39 @@
@@ -946,21 +_,48 @@

private CompletableFuture<Optional<CompoundTag>> readChunk(ChunkPos p_214964_) {
return this.read(p_214964_).thenApplyAsync((p_214907_) -> {
Expand All @@ -149,25 +149,34 @@
}, Util.backgroundExecutor());
}

- private CompoundTag upgradeChunkTag(CompoundTag p_214948_) {
- return this.upgradeChunkTag(this.level.dimension(), this.overworldDataStorage, p_214948_, this.generator.getTypeNameForDataFixer());
+ // CraftBukkit start
+ public java.util.concurrent.atomic.AtomicReference<ChunkPos> ketting$upgradeChunkTag$pos = new java.util.concurrent.atomic.AtomicReference<>(null);
+ private CompoundTag upgradeChunkTag(CompoundTag p_214948_, ChunkPos pos) {
+ return this.upgradeChunkTag(Registries.levelToLevelStem(this.level.dimension()), this.overworldDataStorage, p_214948_, this.generator.getTypeNameForDataFixer(), pos, level);
+ ketting$upgradeChunkTag$pos.set(pos);
+ return upgradeChunkTag(p_214948_);
+ }
private CompoundTag upgradeChunkTag(CompoundTag p_214948_) {
- return this.upgradeChunkTag(this.level.dimension(), this.overworldDataStorage, p_214948_, this.generator.getTypeNameForDataFixer());
- }
+ return this.upgradeChunkTag(Registries.levelToLevelStem(this.level.dimension()), this.overworldDataStorage, p_214948_, this.generator.getTypeNameForDataFixer(), ketting$upgradeChunkTag$pos.getAndSet(null), level);
+ // CraftBukkit end
}

boolean anyPlayerCloseEnoughForSpawning(ChunkPos p_183880_) {
+ // Spigot start
+ return anyPlayerCloseEnoughForSpawning(p_183880_, false);
+ }
+
+ //Ketting start
+ public java.util.concurrent.atomic.AtomicBoolean ketting$anyPlayerCloseEnoughForSpawning$reducedRange = new java.util.concurrent.atomic.AtomicBoolean(false);
+ boolean anyPlayerCloseEnoughForSpawning(ChunkPos p_183880_, boolean reducedRange) {
+ ketting$anyPlayerCloseEnoughForSpawning$reducedRange.set(reducedRange);
+ // Spigot start
+ return anyPlayerCloseEnoughForSpawning(p_183880_);
+ }
+ //Ketting end

boolean anyPlayerCloseEnoughForSpawning(ChunkPos p_183880_) {
+ int chunkRange = level.spigotConfig.mobSpawnRange;
+ chunkRange = (chunkRange > level.spigotConfig.viewDistance) ? (byte) level.spigotConfig.viewDistance : chunkRange;
+ chunkRange = (chunkRange > 8) ? 8 : chunkRange;
+
+ double blockRange = (reducedRange) ? Math.pow(chunkRange << 4, 2) : 16384.0D;
+ double blockRange = (ketting$anyPlayerCloseEnoughForSpawning$reducedRange.getAndSet(false)) ? Math.pow(chunkRange << 4, 2) : 16384.0D;
+ // Spigot end
long i = p_183880_.toLong();
if (!this.distanceManager.hasPlayersNearby(i)) {
Expand All @@ -179,27 +188,23 @@
return true;
}
}
@@ -977,7 +_,7 @@
ImmutableList.Builder<ServerPlayer> builder = ImmutableList.builder();

for(ServerPlayer serverplayer : this.playerMap.getPlayers(i)) {
- if (this.playerIsCloseEnoughForSpawning(serverplayer, p_183889_)) {
+ if (this.playerIsCloseEnoughForSpawning(serverplayer, p_183889_, 16384.0D)) {
builder.add(serverplayer);
}
}
@@ -986,12 +_,12 @@
@@ -986,12 +_,18 @@
}
}

- private boolean playerIsCloseEnoughForSpawning(ServerPlayer p_183752_, ChunkPos p_183753_) {
+ private boolean playerIsCloseEnoughForSpawning(ServerPlayer p_183752_, ChunkPos p_183753_, double range) { // Spigot
+ public final java.util.concurrent.atomic.AtomicReference<java.lang.Double> ketting$playerIsCloseEnoughForSpawning$range = new java.util.concurrent.atomic.AtomicReference<>(16384.0D);
+ private boolean playerIsCloseEnoughForSpawning(ServerPlayer p_183752_, ChunkPos p_183753_, double range) {
+ ketting$playerIsCloseEnoughForSpawning$range.set(range);
+ return playerIsCloseEnoughForSpawning(p_183752_, p_183753_);
+ }
private boolean playerIsCloseEnoughForSpawning(ServerPlayer p_183752_, ChunkPos p_183753_) {
if (p_183752_.isSpectator()) {
+ ketting$playerIsCloseEnoughForSpawning$range.set(16384.0D);
return false;
} else {
double d0 = euclideanDistanceSquared(p_183753_, p_183752_);
- return d0 < 16384.0D;
+ return d0 < range; // Spigot
+ return d0 < java.util.Objects.requireNonNullElse(ketting$playerIsCloseEnoughForSpawning$range.getAndSet(16384.0D), 16384.0D); // Ketting - Spigot
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,15 @@
return true;
} else {
if (!this.ticketsToRelease.isEmpty()) {
@@ -150,7 +_,7 @@
@@ -150,6 +_,7 @@
}
}

- void addTicket(long p_140785_, Ticket<?> p_140786_) {
+ boolean addTicket(long p_140785_, Ticket<?> p_140786_) { // CraftBukkit - void -> boolean
+ public boolean ketting$addTicket$returnValue = false;
void addTicket(long p_140785_, Ticket<?> p_140786_) {
SortedArraySet<Ticket<?>> sortedarrayset = this.getTickets(p_140785_);
int i = getTicketLevelAt(sortedarrayset);
Ticket<?> ticket = sortedarrayset.addOrGet(p_140786_);
@@ -159,11 +_,20 @@
@@ -159,11 +_,21 @@
this.ticketTracker.update(p_140785_, p_140786_.getTicketLevel(), true);
}

Expand All @@ -60,11 +59,11 @@
+ tickets.addOrGet(ticket);
+ }
+
+ return p_140786_ == ticket; // CraftBukkit
+ ketting$addTicket$returnValue = (p_140786_ == ticket); // CraftBukkit
}

- void removeTicket(long p_140819_, Ticket<?> p_140820_) {
+ boolean removeTicket(long p_140819_, Ticket<?> p_140820_) { // CraftBukkit - void -> boolean
+ public boolean ketting$removeTicket$returnValue = false;
void removeTicket(long p_140819_, Ticket<?> p_140820_) {
SortedArraySet<Ticket<?>> sortedarrayset = this.getTickets(p_140819_);
+
+ boolean removed = false; // CraftBukkit
Expand All @@ -86,66 +85,60 @@
+ }
+ }
+
+ return removed; // CraftBukkit
+ ketting$removeTicket$returnValue = removed; // CraftBukkit
}

public <T> void addTicket(TicketType<T> p_140793_, ChunkPos p_140794_, int p_140795_, T p_140796_) {
@@ -182,18 +_,48 @@
this.removeTicket(p_140825_.toLong(), ticket);
}

+ private boolean addRegionTicket$forceTicks; //Ketting
+ public boolean ketting$addRegionTicket$forceTicks; //Ketting
public <T> void addRegionTicket(TicketType<T> p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_) {
- Ticket<T> ticket = new Ticket<>(p_140841_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140843_, p_140844_);
- long i = p_140842_.toLong();
- this.addTicket(i, ticket);
- this.tickingTicketsTracker.addTicket(i, ticket);
- }
-
+ // CraftBukkit start
+ addRegionTicketAtDistance(p_140841_, p_140842_, p_140843_, p_140844_);
+ }
+
+ public <T> boolean addRegionTicketAtDistance(TicketType<T> tickettype, ChunkPos chunkcoordintpair, int i, T t0) {
+ public <T> boolean addRegionTicketAtDistance(TicketType<T> p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_) {
+ // CraftBukkit end
+ Ticket<T> ticket = new Ticket<>(tickettype, ChunkLevel.byStatus(FullChunkStatus.FULL) - i, t0, addRegionTicket$forceTicks); //Ketting
+ long j = chunkcoordintpair.toLong();
+
+ boolean added = this.addTicket(j, ticket); // CraftBukkit
+ this.tickingTicketsTracker.addTicket(j, ticket);
+ Ticket<T> ticket = new Ticket<>(p_140841_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140843_, p_140844_, ketting$addRegionTicket$forceTicks); //Ketting
long i = p_140842_.toLong();
this.addTicket(i, ticket);
+ boolean added = ketting$addTicket$returnValue;
this.tickingTicketsTracker.addTicket(i, ticket);
- }
-
+ return added; // CraftBukkit
+ }
+
+ public <T> void addRegionTicket(TicketType<T> p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_, boolean forceTicks) {
+ addRegionTicket$forceTicks = forceTicks; //Ketting
+ ketting$addRegionTicket$forceTicks = forceTicks; //Ketting
+ addRegionTicket(p_140841_, p_140842_, p_140843_, p_140844_);
+ addRegionTicket$forceTicks = false; //Ketting
+ ketting$addRegionTicket$forceTicks = false; //Ketting
+ }
+
+ private boolean removeRegionTicket$forceTicks; //Ketting
+ public boolean ketting$removeRegionTicket$forceTicks; //Ketting
public <T> void removeRegionTicket(TicketType<T> p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_) {
- Ticket<T> ticket = new Ticket<>(p_140850_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140852_, p_140853_);
- long i = p_140851_.toLong();
- this.removeTicket(i, ticket);
- this.tickingTicketsTracker.removeTicket(i, ticket);
+ // CraftBukkit start
+ removeRegionTicketAtDistance(p_140850_, p_140851_, p_140852_, p_140853_);
+ }
+
+ public <T> boolean removeRegionTicketAtDistance(TicketType<T> tickettype, ChunkPos chunkcoordintpair, int i, T t0) {
+ public <T> boolean removeRegionTicketAtDistance(TicketType<T> p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_) {
+ // CraftBukkit end
+ Ticket<T> ticket = new Ticket<>(tickettype, ChunkLevel.byStatus(FullChunkStatus.FULL) - i, t0, removeRegionTicket$forceTicks); //Ketting
+ long j = chunkcoordintpair.toLong();
+
+ boolean removed = this.removeTicket(j, ticket); // CraftBukkit
+ this.tickingTicketsTracker.removeTicket(j, ticket);
+ Ticket<T> ticket = new Ticket<>(p_140850_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140852_, p_140853_, ketting$removeRegionTicket$forceTicks); //Ketting
long i = p_140851_.toLong();
this.removeTicket(i, ticket);
+ boolean removed = ketting$removeTicket$returnValue;
this.tickingTicketsTracker.removeTicket(i, ticket);
+ return removed; // CraftBukkit
+ }
+
+ public <T> void removeRegionTicket(TicketType<T> p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_, boolean forceTicks) {
+ removeRegionTicket$forceTicks = forceTicks; //Ketting
+ ketting$removeRegionTicket$forceTicks = forceTicks; //Ketting
+ removeRegionTicket(p_140850_, p_140851_, p_140852_, p_140853_);
+ removeRegionTicket$forceTicks = false; //Ketting
+ ketting$removeRegionTicket$forceTicks = false; //Ketting
}

private SortedArraySet<Ticket<?>> getTickets(long p_140858_) {
Expand Down
Loading

0 comments on commit 3b829ee

Please sign in to comment.