mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 01:47:42 +01:00
Merge branch 'ver/1.20.6' into feat/quiver-bundle
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -5,47 +5,45 @@ Subject: [PATCH] Rebrand
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index f8b27b3992f1d59bf0e95bba0961540e88345754..e372110a189857056e4fae3cd1d996ce8cb69493 100644
|
||||
index 5d448d8a7cf6626a11791f30ad52baf41a099272..81996f00384674b29368e8bea944bdd14d631da3 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
||||
@@ -12,8 +12,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
|
||||
val alsoShade: Configuration by configurations.creating
|
||||
|
||||
dependencies {
|
||||
- implementation(project(":pufferfish-api")) // Pufferfish // Paper
|
||||
- // Pufferfish start
|
||||
- implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") {
|
||||
- implementation(project(":paper-api"))
|
||||
- implementation(project(":paper-mojangapi"))
|
||||
+ // Purpur start
|
||||
+ implementation(project(":purpur-api"))
|
||||
+ implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
|
||||
exclude("io.papermc.paper", "paper-api")
|
||||
}
|
||||
- // Pufferfish end
|
||||
+ exclude("io.papermc.paper", "paper-api")
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// Paper start
|
||||
implementation("org.jline:jline-terminal-jansi:3.21.0")
|
||||
implementation("net.minecrell:terminalconsoleappender:1.3.0")
|
||||
@@ -63,6 +63,10 @@ dependencies {
|
||||
}
|
||||
// Pufferfish end
|
||||
@@ -47,6 +51,10 @@ dependencies {
|
||||
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
|
||||
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
|
||||
|
||||
+ implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
|
||||
+ implementation("org.mozilla:rhino-engine:1.7.14") // Purpur
|
||||
+ implementation("dev.omega24:upnp4j:1.0") // Purpur
|
||||
+
|
||||
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||
testImplementation("org.hamcrest:hamcrest:2.2")
|
||||
@@ -89,7 +93,7 @@ tasks.jar {
|
||||
@@ -79,7 +87,7 @@ tasks.jar {
|
||||
attributes(
|
||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||
"Implementation-Title" to "CraftBukkit",
|
||||
- "Implementation-Version" to "git-Pufferfish-$implementationVersion", // Pufferfish
|
||||
- "Implementation-Version" to "git-Paper-$implementationVersion",
|
||||
+ "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
|
||||
"Implementation-Vendor" to date, // Paper
|
||||
"Specification-Title" to "Bukkit",
|
||||
"Specification-Version" to project.version,
|
||||
@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask(
|
||||
@@ -138,7 +146,7 @@ fun TaskContainer.registerRunTask(
|
||||
name: String,
|
||||
block: JavaExec.() -> Unit
|
||||
): TaskProvider<JavaExec> = register<JavaExec>(name) {
|
||||
@@ -162,10 +160,10 @@ index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..3cb56595822799926a8141e60a42f5d1
|
||||
.completer(new ConsoleCommandCompleter(this.server))
|
||||
.option(LineReader.Option.COMPLETE_IN_WORD, true);
|
||||
diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java
|
||||
index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae2834b0918a9 100644
|
||||
index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..c366d84518979e842a6f10f969a5951539ecac93 100644
|
||||
--- a/src/main/java/net/minecraft/CrashReport.java
|
||||
+++ b/src/main/java/net/minecraft/CrashReport.java
|
||||
@@ -123,6 +123,10 @@ public class CrashReport {
|
||||
@@ -125,6 +125,10 @@ public class CrashReport {
|
||||
StringBuilder stringbuilder = new StringBuilder();
|
||||
|
||||
stringbuilder.append("---- Minecraft Crash Report ----\n");
|
||||
@@ -177,10 +175,10 @@ index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae283
|
||||
stringbuilder.append(CrashReport.getErrorComment());
|
||||
stringbuilder.append("\n\n");
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 371049c1236c6443384c0ce184e99d5b9f8e57c2..ebcd6c821379f4feb3b2c094266645ae552972db 100644
|
||||
index 8dc2f9df367c849ca333bf1a1fd92ff91617b548..57e6aaa63c1308baa5e2863b82b7521d5f4a4f31 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -910,7 +910,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -960,7 +960,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
shutdownThread = Thread.currentThread();
|
||||
org.spigotmc.WatchdogThread.doStop(); // Paper
|
||||
if (!isSameThread()) {
|
||||
@@ -189,24 +187,24 @@ index 371049c1236c6443384c0ce184e99d5b9f8e57c2..ebcd6c821379f4feb3b2c094266645ae
|
||||
while (this.getRunningThread().isAlive()) {
|
||||
this.getRunningThread().stop();
|
||||
try {
|
||||
@@ -1699,7 +1699,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1924,7 +1924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
|
||||
@DontObfuscate
|
||||
public String getServerModName() {
|
||||
- return "Pufferfish"; // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
|
||||
+ return "Purpur"; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
|
||||
- return "Paper"; // Paper
|
||||
+ return "Purpur"; // Purpur - Purpur > // Pufferfish > // Paper
|
||||
}
|
||||
|
||||
public SystemReport fillSystemReport(SystemReport details) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 5a95dcc02241d6036ee520a6a7a05e8713c6081f..ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d 100644
|
||||
index 05e304f9fc8d0291fa779da589bd060ef4165b49..62c18b61ee58e76a90938976e9ec96ef28a7106c 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper
|
||||
@@ -268,7 +268,7 @@ import javax.annotation.Nullable; // Paper
|
||||
import javax.annotation.Nonnull; // Paper
|
||||
|
||||
public final class CraftServer implements Server {
|
||||
- private final String serverName = "Pufferfish"; // Paper // Pufferfish
|
||||
- private final String serverName = "Paper"; // Paper
|
||||
+ private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
|
||||
private final String serverVersion;
|
||||
private final String bukkitVersion = Versioning.getBukkitVersion();
|
||||
@@ -237,25 +235,12 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee
|
||||
+ this.sendMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index daadfec2d86f7957072a639e1e36d4082448f35f..3579715faa33a722cccb13d8d7c86a3de740d6fc 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
return EntityCategory.WATER;
|
||||
}
|
||||
|
||||
- throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Spigot.");
|
||||
+ throw new UnsupportedOperationException("Unsupported monster type: " + type + ". This is a bug, report this to Purpur."); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||
index d7ce4971d9271dbeff4adb9d852e4e7bdf60bf03..5a47a8785bc2e251d041f80a79295c43459de3bc 100644
|
||||
index e85b9bb3f9c225d289a4959921970b9963881199..c1e2d3a75b9d4710ab6d8b5c62af4bc136a2b668 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
|
||||
@@ -501,7 +501,7 @@ public class CraftScheduler implements BukkitScheduler {
|
||||
@@ -503,7 +503,7 @@ public class CraftScheduler implements BukkitScheduler {
|
||||
this.parsePending();
|
||||
} else {
|
||||
// this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper
|
||||
@@ -265,33 +250,33 @@ index d7ce4971d9271dbeff4adb9d852e4e7bdf60bf03..5a47a8785bc2e251d041f80a79295c43
|
||||
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index 3298aac109e08da4801a6f08aa6f7acfc5e6bf16..33ea5172bb7fe1018bc39acc16963f4998ac52b2 100644
|
||||
index a1c9989df460d7ae3666fffe7968750832a30b85..ad7f21566271260270db452e2f15c32f8a829d28 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
@@ -507,7 +507,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
|
||||
@Override
|
||||
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
|
||||
- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish
|
||||
+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur
|
||||
- return new com.destroystokyo.paper.PaperVersionFetcher();
|
||||
+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur - TODO: Pufferfish
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||
index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644
|
||||
index 774556a62eb240da42e84db4502e2ed43495be17..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||
@@ -11,7 +11,7 @@ public final class Versioning {
|
||||
public static String getBukkitVersion() {
|
||||
String result = "Unknown-Version";
|
||||
|
||||
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish
|
||||
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties");
|
||||
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
|
||||
Properties properties = new Properties();
|
||||
|
||||
if (stream != null) {
|
||||
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||
index 50c72e5db369a180f425eaaa0411cb8871bc3463..dbd502761ff6e6efb252bb41376a7ff028c73895 100644
|
||||
index 6db566e3111ec08a99aa429624979cb83a85e272..a353eb9f45af7b7f9bfd92a4a89403335b841840 100644
|
||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||
@@ -96,7 +96,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||
@@ -321,7 +306,7 @@ index 50c72e5db369a180f425eaaa0411cb8871bc3463..dbd502761ff6e6efb252bb41376a7ff0
|
||||
//
|
||||
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
|
||||
{
|
||||
@@ -185,12 +185,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||
@@ -184,12 +184,12 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||
// Paper end
|
||||
} else
|
||||
{
|
||||
@@ -333,10 +318,10 @@ index 50c72e5db369a180f425eaaa0411cb8871bc3463..dbd502761ff6e6efb252bb41376a7ff0
|
||||
log.log( Level.SEVERE, "------------------------------" );
|
||||
- log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper
|
||||
+ log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur
|
||||
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system
|
||||
io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper - rewrite chunk system
|
||||
this.dumpTickingInfo(); // Paper - log detailed tick information
|
||||
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
|
||||
@@ -206,7 +206,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||
@@ -205,7 +205,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
||||
WatchdogThread.dumpThread( thread, log );
|
||||
}
|
||||
} else {
|
||||
@@ -1,80 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <blake.galbreath@gmail.com>
|
||||
Date: Sun, 12 Jun 2022 09:18:57 -0500
|
||||
Subject: [PATCH] Fix pufferfish issues
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 57739f9dd7d045d1a585a9fc1be290a1a007db6a..f8b27b3992f1d59bf0e95bba0961540e88345754 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -229,5 +229,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src ->
|
||||
}
|
||||
tasks.registerRunTask("runDev") {
|
||||
description = "Spin up a non-relocated Mojang-mapped test server"
|
||||
- classpath(sourceSets.main.map { it.runtimeClasspath })
|
||||
+ classpath(tasks.filterProjectDir.flatMap { it.outputJar })
|
||||
+ classpath(runtimeClasspathForRunDev)
|
||||
+ jvmArgs("-DPaper.isRunDev=true")
|
||||
}
|
||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||
index cc66657cb4f978aa2df3ca1be6c683759952cc7a..26f08b7fb16484c39135ed172c246f76c9e089c7 100644
|
||||
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
|
||||
@@ -224,7 +224,7 @@ public class PufferfishConfig {
|
||||
public static int activationDistanceMod;
|
||||
|
||||
private static void dynamicActivationOfBrains() throws IOException {
|
||||
- dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", true);
|
||||
+ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur
|
||||
startDistance = getInt("dab.start-distance", "activation-range.start-distance", 12,
|
||||
"This value determines how far away an entity has to be",
|
||||
"from the player to start being effected by DEAR.");
|
||||
@@ -268,7 +268,7 @@ public class PufferfishConfig {
|
||||
|
||||
public static boolean throttleInactiveGoalSelectorTick;
|
||||
private static void inactiveGoalSelectorThrottle() {
|
||||
- throttleInactiveGoalSelectorTick = getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", true,
|
||||
+ throttleInactiveGoalSelectorTick = getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", false, // Purpur
|
||||
"Throttles the AI goal selector in entity inactive ticks.",
|
||||
"This can improve performance by a few percent, but has minor gameplay implications.");
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index c1b03e4c37ea85ddf283479682d0eb2eca57ee3c..cf2fd8eba6aa4cf15cac924577507a700f7f72b5 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -976,7 +976,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
}
|
||||
// Paper start - optimise random block ticking
|
||||
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
|
||||
- // private final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(); // Pufferfish - moved to super
|
||||
+ private final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(this.random.nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - moved to super // Purpur - dont break ABI
|
||||
// Paper end
|
||||
|
||||
private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index 1e2620338f0b6fd1c160a8f8d6b659e273f2f1c9..6c0e33323922de72dcb941a10883a07c72808b5f 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -210,7 +210,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
|
||||
public abstract ResourceKey<LevelStem> getTypeKey();
|
||||
|
||||
- protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter
|
||||
+ //protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter // Purpur - dont break ABI
|
||||
|
||||
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
|
||||
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
index b78476223637722efe12520d3c2e301603abd8a1..e2ea90469352346b43f0a86746179a6adc53d82a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
@@ -122,7 +122,7 @@ public class LevelChunk extends ChunkAccess {
|
||||
this.blockTicks = blockTickScheduler;
|
||||
this.fluidTicks = fluidTickScheduler;
|
||||
|
||||
- this.lightningTick = this.level.getThreadUnsafeRandom().nextInt(100000) << 1; // Pufferfish - initialize lightning tick
|
||||
+ this.lightningTick = java.util.concurrent.ThreadLocalRandom.current().nextInt(100000) << 1; // Pufferfish - initialize lightning tick // Purpur - any random will do
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -5,14 +5,14 @@ Subject: [PATCH] Purpur config files
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||
index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644
|
||||
index 4b002e8b75d117b726b0de274a76d3596fce015b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
|
||||
@@ -593,7 +593,7 @@ public class Metrics {
|
||||
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
|
||||
// Only start Metrics, if it's enabled in the config
|
||||
if (config.getBoolean("enabled", true)) {
|
||||
- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish
|
||||
- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger());
|
||||
+ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
|
||||
|
||||
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
|
||||
@@ -26,21 +26,21 @@ index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f
|
||||
- final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion();
|
||||
- if (implVersion != null) {
|
||||
- final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1);
|
||||
- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish
|
||||
- paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash);
|
||||
- } else {
|
||||
- paperVersion = "unknown";
|
||||
- }
|
||||
- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish
|
||||
- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion));
|
||||
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur
|
||||
+ metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur
|
||||
|
||||
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
||||
diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66ab9d4a70 100644
|
||||
index e6c7f62ed379a78645933670299e4fcda8540ed1..edb94e5601acc38994dac20a167b145de778d426 100644
|
||||
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
@@ -332,6 +332,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
|
||||
@@ -331,6 +331,30 @@ public class CommandSourceStack implements ExecutionCommandSource<CommandSourceS
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,13 +72,13 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66
|
||||
boolean flag1 = this.source.acceptsSuccess() && !this.silent;
|
||||
boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent;
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7cabf41dd 100644
|
||||
index eb4fc900164d1fb3a78653ae8bc42ea30323f5b7..6d47aa73788eef78aa6714384db879b4e907de9b 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
thread.start(); // Paper - start console thread after MinecraftServer.console & PaperConfig are initialized
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this);
|
||||
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics();
|
||||
@@ -232,6 +232,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
|
||||
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
|
||||
+ // Purpur start
|
||||
+ try {
|
||||
+ org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings"));
|
||||
@@ -88,42 +88,42 @@ index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7
|
||||
+ }
|
||||
+ org.purpurmc.purpur.PurpurConfig.registerCommands();
|
||||
+ // Purpur end
|
||||
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now
|
||||
io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider
|
||||
// Paper end
|
||||
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
|
||||
io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd2adcd6ed 100644
|
||||
index b4ef3ad2c17168085372f1fe46809f02d9dfe74a..04f7f6743aabdca54892b2b155386f86032cf807 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
// Paper end
|
||||
@@ -170,6 +170,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
// Paper end - add paper world config
|
||||
|
||||
public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
|
||||
+ public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur
|
||||
public final co.aikar.timings.WorldTimingsHandler timings; // Paper
|
||||
public static BlockPos lastPhysicsProblem; // Spigot
|
||||
private org.spigotmc.TickLimiter entityLimiter;
|
||||
@@ -215,6 +216,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
|
||||
@@ -216,6 +217,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
protected Level(WritableLevelData worlddatamutable, ResourceKey<Level> resourcekey, RegistryAccess iregistrycustom, Holder<DimensionType> holder, Supplier<ProfilerFiller> supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function<org.spigotmc.SpigotWorldConfig, io.papermc.paper.configuration.WorldConfiguration> paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor
|
||||
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
|
||||
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
|
||||
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config
|
||||
+ this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur
|
||||
this.generator = gen;
|
||||
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed05f9a714 100644
|
||||
index 467ef4ffd6ee13b247ac9e453b006ec3d89362c9..d97f33d654086c892f01e47a59be7e37f6e03ae7 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1039,6 +1039,7 @@ public final class CraftServer implements Server {
|
||||
@@ -1054,6 +1054,7 @@ public final class CraftServer implements Server {
|
||||
|
||||
org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot
|
||||
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
|
||||
this.console.paperConfigurations.reloadConfigs(this.console);
|
||||
+ org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur
|
||||
for (ServerLevel world : this.console.getAllLevels()) {
|
||||
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
||||
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
|
||||
@@ -1054,6 +1055,7 @@ public final class CraftServer implements Server {
|
||||
@@ -1069,6 +1070,7 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
}
|
||||
world.spigotConfig.init(); // Spigot
|
||||
@@ -131,7 +131,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed
|
||||
}
|
||||
|
||||
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
|
||||
@@ -1069,6 +1071,7 @@ public final class CraftServer implements Server {
|
||||
@@ -1084,6 +1086,7 @@ public final class CraftServer implements Server {
|
||||
this.reloadData();
|
||||
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
|
||||
@@ -139,7 +139,7 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed
|
||||
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
||||
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
|
||||
|
||||
@@ -2919,6 +2922,18 @@ public final class CraftServer implements Server {
|
||||
@@ -3048,6 +3051,18 @@ public final class CraftServer implements Server {
|
||||
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
|
||||
}
|
||||
|
||||
@@ -159,10 +159,10 @@ index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed
|
||||
public void restart() {
|
||||
org.spigotmc.RestartCommand.restart();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index e4cacb17f56c618bef19e1165c07aac86af61150..a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f 100644
|
||||
index c988afa496d25314451435eedd64079a0d87cef0..45a33086e1bb8a70e0fa01090731d27a0474da41 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -173,6 +173,14 @@ public class Main {
|
||||
@@ -175,6 +175,14 @@ public class Main {
|
||||
.describedAs("Jar file");
|
||||
// Paper end
|
||||
|
||||
@@ -179,7 +179,7 @@ index e4cacb17f56c618bef19e1165c07aac86af61150..a6b1c83e289bd0a9ad59288ed2da88ac
|
||||
.withRequiredArg()
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366cff1eca9
|
||||
index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02ad405d09
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -0,0 +1,175 @@
|
||||
@@ -260,8 +260,8 @@ index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366
|
||||
+ commands = new HashMap<>();
|
||||
+ commands.put("purpur", new PurpurCommand("purpur"));
|
||||
+
|
||||
+ version = getInt("config-version", 33);
|
||||
+ set("config-version", 33);
|
||||
+ version = getInt("config-version", 35);
|
||||
+ set("config-version", 35);
|
||||
+
|
||||
+ readConfig(PurpurConfig.class, null);
|
||||
+
|
||||
@@ -332,7 +332,7 @@ index 0000000000000000000000000000000000000000..61d193d8ddd87817bf2c560037d42366
|
||||
+ return config.getInt(path, config.getInt(path));
|
||||
+ }
|
||||
+
|
||||
+ private static <T> List getList(String path, T def) {
|
||||
+ private static <T> List<?> getList(String path, T def) {
|
||||
+ config.addDefault(path, def);
|
||||
+ return config.getList(path, config.getList(path));
|
||||
+ }
|
||||
@@ -5,30 +5,30 @@ Subject: [PATCH] Purpur client support
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a 100644
|
||||
index 8437316888c6056060a2780652147590b6fe7443..8b07eb1c428bc70b8ee07ea2209f1898d6034809 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -274,6 +274,7 @@ public class ServerPlayer extends Player {
|
||||
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
|
||||
public @Nullable String clientBrandName = null; // Paper - Brand name
|
||||
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
|
||||
@@ -298,6 +298,7 @@ public class ServerPlayer extends Player {
|
||||
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
|
||||
public @Nullable String clientBrandName = null; // Paper - Brand support
|
||||
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
|
||||
+ public boolean purpurClient = false; // Purpur
|
||||
|
||||
// Paper start - replace player chunk loader
|
||||
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e091c0775f 100644
|
||||
index 8ac5d8ccf731100a1be690cb2ed1be82cadba8ed..4228fd441f8350d43bd545e31c920304f07968bc 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
@@ -55,6 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
private volatile boolean suspendFlushingOnServerThread = false;
|
||||
@@ -78,6 +78,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
public final java.util.Map<java.util.UUID, net.kyori.adventure.resource.ResourcePackCallback> packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks
|
||||
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
|
||||
protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support
|
||||
+ protected static final ResourceLocation PURPUR_CLIENT = new ResourceLocation("purpur", "client"); // Purpur
|
||||
|
||||
public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit
|
||||
this.server = minecraftserver;
|
||||
@@ -137,6 +138,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
@@ -170,6 +171,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex);
|
||||
this.disconnect("Invalid payload REGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause
|
||||
}
|
||||
@@ -39,17 +39,17 @@ index 20122bf191ebc74c223310aea1f004fdbb163e57..9226fadcf53da5f7d55f4434a660d3e0
|
||||
+ } catch (Exception ignore) {
|
||||
+ }
|
||||
+ // Purpur end
|
||||
} else if (identifier.equals(CUSTOM_UNREGISTER)) {
|
||||
} else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) {
|
||||
try {
|
||||
String channels = payload.toString(com.google.common.base.Charsets.UTF_8);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 604ed1f6742a6b028b9db2809f7bd4b9a3b38f4d..16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73 100644
|
||||
index 5f896948d158651cd9837364759dbfbcce6b7d21..7f78db4e0331d0f4801807ed1242642ee940d0f8 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -3283,4 +3283,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return this.spigot;
|
||||
@@ -3522,4 +3522,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void setSendViewDistance(final int viewDistance) {
|
||||
this.getHandle().setSendViewDistance(viewDistance);
|
||||
}
|
||||
// Spigot end
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
52
patches/server/0004-Fix-decompile-errors.patch
Normal file
52
patches/server/0004-Fix-decompile-errors.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <blake.galbreath@gmail.com>
|
||||
Date: Sun, 12 Jun 2022 06:20:21 -0500
|
||||
Subject: [PATCH] Fix decompile errors
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java
|
||||
index b0d26b0eadb2a43924629424a6c13198aace8f69..9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d 100644
|
||||
--- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java
|
||||
+++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java
|
||||
@@ -52,7 +52,7 @@ public class BuildContexts<T extends ExecutionCommandSource<T>> {
|
||||
}
|
||||
|
||||
RedirectModifier<T> redirectModifier = commandContext.getRedirectModifier();
|
||||
- if (redirectModifier instanceof CustomModifierExecutor<T> customModifierExecutor) {
|
||||
+ if (redirectModifier instanceof CustomModifierExecutor customModifierExecutor) { // Purpur - decompile error
|
||||
customModifierExecutor.apply(baseSource, list, contextChain, chainModifiers, ExecutionControl.create(context, frame));
|
||||
return;
|
||||
}
|
||||
@@ -92,11 +92,11 @@ public class BuildContexts<T extends ExecutionCommandSource<T>> {
|
||||
|
||||
if (list.isEmpty()) {
|
||||
if (chainModifiers.isReturn()) {
|
||||
- context.queueNext(new CommandQueueEntry<>(frame, FallthroughTask.instance()));
|
||||
+ context.queueNext(new CommandQueueEntry<>(frame, (EntryAction<T>) FallthroughTask.instance())); // Purpur - decompile error
|
||||
}
|
||||
} else {
|
||||
CommandContext<T> commandContext2 = contextChain.getTopContext();
|
||||
- if (commandContext2.getCommand() instanceof CustomCommandExecutor<T> customCommandExecutor) {
|
||||
+ if (commandContext2.getCommand() instanceof CustomCommandExecutor customCommandExecutor) { // Purpur - decompile error
|
||||
ExecutionControl<T> executionControl = ExecutionControl.create(context, frame);
|
||||
|
||||
for (T executionCommandSource2 : list) {
|
||||
diff --git a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java
|
||||
index 7b118a92a6eb779f800ae8f5d8f6e3c861fc4f6a..057a038e8dcacd7496a0b2373de2c20255a5c297 100644
|
||||
--- a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java
|
||||
+++ b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java
|
||||
@@ -119,10 +119,10 @@ public class ArgumentTypeInfos {
|
||||
register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension));
|
||||
register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode));
|
||||
register(registry, "time", TimeArgument.class, new TimeArgument.Info());
|
||||
- register(registry, "resource_or_tag", fixClassType(ResourceOrTagArgument.class), new ResourceOrTagArgument.Info());
|
||||
- register(registry, "resource_or_tag_key", fixClassType(ResourceOrTagKeyArgument.class), new ResourceOrTagKeyArgument.Info());
|
||||
- register(registry, "resource", fixClassType(ResourceArgument.class), new ResourceArgument.Info());
|
||||
- register(registry, "resource_key", fixClassType(ResourceKeyArgument.class), new ResourceKeyArgument.Info());
|
||||
+ register(registry, "resource_or_tag", fixClassType(ResourceOrTagArgument.class), new ResourceOrTagArgument.Info<>()); // Purpur - decompile error
|
||||
+ register(registry, "resource_or_tag_key", fixClassType(ResourceOrTagKeyArgument.class), new ResourceOrTagKeyArgument.Info<>()); // Purpur - decompile error
|
||||
+ register(registry, "resource", fixClassType(ResourceArgument.class), new ResourceArgument.Info<>()); // Purpur - decompile error
|
||||
+ register(registry, "resource_key", fixClassType(ResourceKeyArgument.class), new ResourceKeyArgument.Info<>()); // Purpur - decompile error
|
||||
register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror));
|
||||
register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation));
|
||||
register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap));
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a..75faac7c8009672c733033c5aabb4e1974ce5790 100644
|
||||
index 8b07eb1c428bc70b8ee07ea2209f1898d6034809..0b9c85adaf5c7b5dcb23ab74a4fd02e6c0798851 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1784,6 +1784,26 @@ public class ServerPlayer extends Player {
|
||||
@@ -1978,6 +1978,26 @@ public class ServerPlayer extends Player {
|
||||
this.lastSentExp = -1; // CraftBukkit - Added to reset
|
||||
}
|
||||
|
||||
@@ -36,10 +36,10 @@ index 5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a..75faac7c8009672c733033c5aabb4e19
|
||||
public void displayClientMessage(Component message, boolean overlay) {
|
||||
this.sendSystemMessage(message, overlay);
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 48d1444fbad1c57738807d0128b94160a5a17a4d..09b111dd0189b8764569e24fb6de862b1bb3bc89 100644
|
||||
index a2142930b4d4b05987c90496fb9d733d99040aa0..2d6b6795703431939005aa09d1ed590c3f755163 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1039,6 +1039,20 @@ public abstract class PlayerList {
|
||||
@@ -1063,6 +1063,20 @@ public abstract class PlayerList {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -61,10 +61,10 @@ index 48d1444fbad1c57738807d0128b94160a5a17a4d..09b111dd0189b8764569e24fb6de862b
|
||||
Iterator iterator = this.players.iterator();
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9b2203042 100644
|
||||
index 160dc3216e8f5db5f9b3cce5e2d655f2b35b208a..43b9a7e8ed9043c4d3f8295258a27209ddb4474b 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
@@ -126,6 +126,15 @@ public class DamageSource {
|
||||
@@ -177,6 +177,15 @@ public class DamageSource {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9
|
||||
return this.type().msgId();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 505ed0f8f933428192f5fc806ff52d84acea7f99..8bc26cc6af27ba4c13940d61154786d47cb5aaf3 100644
|
||||
index 2bc85351e6e52f90da5fdb29d8d042a06132d742..6c7f80723d67baf0ca036e0a12c3007144352edf 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -4066,6 +4066,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -4190,6 +4190,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return SlotAccess.NULL;
|
||||
}
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <blake.galbreath@gmail.com>
|
||||
Date: Sun, 12 Jun 2022 06:20:21 -0500
|
||||
Subject: [PATCH] Fix decompile errors
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
|
||||
index d9016807bc21c38a5c38170e1335c79b39355bcb..03c065d0ad97d29f3586ba2bf3cd207b867ed634 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
|
||||
@@ -121,7 +121,7 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain
|
||||
|
||||
@Override
|
||||
public void readAdditionalSaveData(CompoundTag nbt) {
|
||||
- Holder<PaintingVariant> holder = loadVariant(nbt).orElseGet(Painting::getDefaultVariant);
|
||||
+ Holder<PaintingVariant> holder = loadVariant(nbt).orElseGet(() -> (Holder.Reference<PaintingVariant>) getDefaultVariant()); // Purpur - decompile error TODO: still needed?
|
||||
this.setVariant(holder);
|
||||
this.direction = Direction.from2DDataValue(nbt.getByte("facing"));
|
||||
super.readAdditionalSaveData(nbt);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
|
||||
index b79c86272f12c4b1173ea494cbe09e1ecdc23533..11275a9ec6faa69c9f054683cb47312e443ba883 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
|
||||
@@ -184,7 +184,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase {
|
||||
|
||||
@Override
|
||||
public Brain<Zoglin> getBrain() {
|
||||
- return super.getBrain();
|
||||
+ return (Brain<Zoglin>) super.getBrain(); // Purpur - decompile error
|
||||
}
|
||||
|
||||
protected void updateActivity() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
||||
index d02ee11066fc4f07ccb110b09b86d895ff90d4f2..e1be4a77fae0b9120781f460079269b85c993930 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
|
||||
@@ -70,7 +70,7 @@ public class PiglinBrute extends AbstractPiglin {
|
||||
|
||||
@Override
|
||||
public Brain<PiglinBrute> getBrain() {
|
||||
- return super.getBrain();
|
||||
+ return (Brain<PiglinBrute>) super.getBrain(); // Purpur - decompile error
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java
|
||||
index d5654cfe37bd82f1290b280990a8502432491ae1..b49e02ac7b3db9a5b79ce3f106ead19af4e7cfa6 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/Blocks.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java
|
||||
@@ -1160,7 +1160,7 @@ public class Blocks {
|
||||
}
|
||||
|
||||
private static Boolean ocelotOrParrot(BlockState state, BlockGetter world, BlockPos pos, EntityType<?> type) {
|
||||
- return (boolean)type == EntityType.OCELOT || type == EntityType.PARROT;
|
||||
+ return type == EntityType.OCELOT || type == EntityType.PARROT; // Purpur - decompile error
|
||||
}
|
||||
|
||||
private static BedBlock bed(DyeColor color) {
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -5,13 +5,13 @@ Subject: [PATCH] Barrels and enderchests 6 rows
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 09b111dd0189b8764569e24fb6de862b1bb3bc89..cf03faf3207f886b03b0e90ad6f4ce5310db428c 100644
|
||||
index 2d6b6795703431939005aa09d1ed590c3f755163..f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1164,6 +1164,27 @@ public abstract class PlayerList {
|
||||
@@ -1188,6 +1188,27 @@ public abstract class PlayerList {
|
||||
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
|
||||
this.server.getCommands().sendCommands(player);
|
||||
} // Paper
|
||||
} // Paper - Add sendOpLevel API
|
||||
+
|
||||
+ // Purpur start
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows && org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
||||
@@ -37,13 +37,13 @@ index 09b111dd0189b8764569e24fb6de862b1bb3bc89..cf03faf3207f886b03b0e90ad6f4ce53
|
||||
|
||||
public boolean isWhiteListed(GameProfile profile) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
index 90d437ef429fa6eef620eb54fcb9512e46b19b15..ea475f6fff35e346ca153a385d6b20f90b5f4283 100644
|
||||
index 90e44c7281935bc7ceb3b220bbcd73187fed44fb..0641e448e0e98694976b820c2e9c4868f2b76909 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity {
|
||||
public boolean affectsSpawning = true;
|
||||
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET;
|
||||
// Paper end
|
||||
@@ -195,6 +195,7 @@ public abstract class Player extends LivingEntity {
|
||||
public boolean ignoreFallDamageFromCurrentImpulse;
|
||||
public boolean affectsSpawning = true; // Paper - Affects Spawning API
|
||||
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
||||
+ public int sixRowEnderchestSlotCount = -1; // Purpur
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -84,10 +84,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216
|
||||
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||
index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee80fbe221 100644
|
||||
index a15d5ff872dbd77f3c3145e0328f3d02e431ff8c..1dcf36d502990d32fc4cd3ea69c3ea334baed69a 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java
|
||||
@@ -30,11 +30,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
|
||||
@@ -31,11 +31,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
|
||||
}
|
||||
|
||||
public PlayerEnderChestContainer(Player owner) {
|
||||
@@ -108,49 +108,59 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee
|
||||
this.activeChest = blockEntity;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
index 7385e91f32f070e86a4e0fd3d214f55d832c7979..7b73de87236a60ce7343c29ec147e1866b448ba3 100644
|
||||
index 5f9858ef8d0ec1a74d469ab4426eb1db068873fd..d7ef772444b301d0a3f167679027195e4150b064 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
@@ -85,6 +85,34 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
@@ -91,7 +91,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity;
|
||||
playerEnderChestContainer.setActiveChest(enderChestBlockEntity);
|
||||
player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> {
|
||||
+ // Purpur start
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows) {
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
||||
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity();
|
||||
+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) {
|
||||
+ player.sixRowEnderchestSlotCount = 54;
|
||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) {
|
||||
+ player.sixRowEnderchestSlotCount = 45;
|
||||
+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) {
|
||||
+ player.sixRowEnderchestSlotCount = 36;
|
||||
+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) {
|
||||
+ player.sixRowEnderchestSlotCount = 27;
|
||||
+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) {
|
||||
+ player.sixRowEnderchestSlotCount = 18;
|
||||
+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) {
|
||||
+ player.sixRowEnderchestSlotCount = 9;
|
||||
+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer);
|
||||
+ }
|
||||
+ }
|
||||
+ player.sixRowEnderchestSlotCount = -1;
|
||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer);
|
||||
}, CONTAINER_TITLE));
|
||||
player.openMenu(
|
||||
- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE)
|
||||
+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur
|
||||
);
|
||||
player.awardStat(Stats.OPEN_ENDERCHEST);
|
||||
PiglinAi.angerNearbyPiglins(player, true);
|
||||
@@ -102,6 +102,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
}
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ private ChestMenu getEnderChestSixRows(int syncId, net.minecraft.world.entity.player.Inventory inventory, Player player, PlayerEnderChestContainer playerEnderChestContainer) {
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) {
|
||||
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity();
|
||||
+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) {
|
||||
+ player.sixRowEnderchestSlotCount = 54;
|
||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) {
|
||||
+ player.sixRowEnderchestSlotCount = 45;
|
||||
+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) {
|
||||
+ player.sixRowEnderchestSlotCount = 36;
|
||||
+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) {
|
||||
+ player.sixRowEnderchestSlotCount = 27;
|
||||
+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) {
|
||||
+ player.sixRowEnderchestSlotCount = 18;
|
||||
+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) {
|
||||
+ player.sixRowEnderchestSlotCount = 9;
|
||||
+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer);
|
||||
+ }
|
||||
+ }
|
||||
+ player.sixRowEnderchestSlotCount = -1;
|
||||
+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
||||
return new EnderChestBlockEntity(pos, state);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2d989a3b5 100644
|
||||
index 6186e55014bbb9d5bedaa0e9d196879c55339d42..f4f11292d6d00f4a7c65e3e2a157bba595f70889 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
@@ -67,7 +67,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
@@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
|
||||
public BarrelBlockEntity(BlockPos pos, BlockState state) {
|
||||
super(BlockEntityType.BARREL, pos, state);
|
||||
@@ -168,7 +178,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2
|
||||
this.openersCounter = new ContainerOpenersCounter() {
|
||||
@Override
|
||||
protected void onOpen(Level world, BlockPos pos, BlockState state) {
|
||||
@@ -118,7 +127,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
@@ -119,7 +128,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
|
||||
@Override
|
||||
public int getContainerSize() {
|
||||
@@ -186,7 +196,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,7 +156,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
@@ -139,7 +157,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
|
||||
@Override
|
||||
protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) {
|
||||
@@ -205,10 +215,10 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||
index 633e6f4922ccaf59979a22885162f42c65bf628a..15001e7c8eae3a89f9d8669be532d56b70d538ef 100644
|
||||
index 977b77547f7ba62cef3640cf8d4f1c8e7cded53a..beae43e9b6fe447e7515d878ac175f461968768a 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
|
||||
@@ -181,8 +181,19 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||
@@ -184,8 +184,19 @@ public class CraftContainer extends AbstractContainerMenu {
|
||||
case PLAYER:
|
||||
case CHEST:
|
||||
case ENDER_CHEST:
|
||||
@@ -230,10 +240,10 @@ index 633e6f4922ccaf59979a22885162f42c65bf628a..15001e7c8eae3a89f9d8669be532d56b
|
||||
case DISPENSER:
|
||||
case DROPPER:
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||
index 471ae4458e7ea7c29d7551b32cec98180fbccd4e..23db63c78e9fcf86cd498b3ed36ca50253c2fe97 100644
|
||||
index af1ae3dacb628da23f7d2988c6e76d3fb2d64103..4ee2d501f882279b48edb4b8bf0824587c276bf6 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
||||
@@ -83,7 +83,7 @@ public class CraftInventory implements Inventory {
|
||||
@@ -84,7 +84,7 @@ public class CraftInventory implements Inventory {
|
||||
|
||||
@Override
|
||||
public void setContents(ItemStack[] items) {
|
||||
@@ -243,7 +253,7 @@ index 471ae4458e7ea7c29d7551b32cec98180fbccd4e..23db63c78e9fcf86cd498b3ed36ca502
|
||||
for (int i = 0; i < this.getSize(); i++) {
|
||||
if (i >= items.length) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 8ad548fc059568d37675e017548b171d4dd1d555..7937023274acf3a1efdd21bbdd2f933f4399baeb 100644
|
||||
index 463af65182c0894a75a138df8100f3f616143f4c..a0eb18409f72afe393581e6dc8e2260b3a25197f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -177,4 +177,39 @@ public class PurpurConfig {
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Llama API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
|
||||
index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab156812b8 100644
|
||||
index df695b444fa2a993d381e2f197182c3e91a68502..eb0faf58fa1a408f294fc62120b140def97f998d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
|
||||
@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal {
|
||||
@@ -14,7 +14,7 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab
|
||||
public boolean canUse() {
|
||||
+ if (!this.llama.shouldJoinCaravan) return false; // Purpur
|
||||
if (!this.llama.isLeashed() && !this.llama.inCaravan()) {
|
||||
List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> {
|
||||
List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> {
|
||||
EntityType<?> entityType = entity.getType();
|
||||
@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal {
|
||||
|
||||
@@ -23,9 +23,9 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab
|
||||
+ if (!this.llama.shouldJoinCaravan) return false; // Purpur
|
||||
if (this.llama.inCaravan() && this.llama.getCaravanHead().isAlive() && this.firstIsLeashed(this.llama, 0)) {
|
||||
double d = this.llama.distanceToSqr(this.llama.getCaravanHead());
|
||||
if (d > 676.0D) {
|
||||
if (d > 676.0) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
index 278c33b7de4472a746cdbc1faaa68e05592777bc..15a08abe94cb97de1450ff42cfb924a537b9eb5c 100644
|
||||
index 697895661826e4a1ecbdfd2c3a195b9d0ee7e00a..05614fb50a5509331ac15bb819e827365a4cefcf 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
@@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -36,25 +36,23 @@ index 278c33b7de4472a746cdbc1faaa68e05592777bc..15a08abe94cb97de1450ff42cfb924a5
|
||||
|
||||
public Llama(EntityType<? extends Llama> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -170,7 +171,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
if (!this.inventory.getItem(1).isEmpty()) {
|
||||
nbt.put("DecorItem", this.inventory.getItem(1).save(new CompoundTag()));
|
||||
}
|
||||
-
|
||||
@@ -167,6 +168,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
super.addAdditionalSaveData(nbt);
|
||||
nbt.putInt("Variant", this.getVariant().id);
|
||||
nbt.putInt("Strength", this.getStrength());
|
||||
+ nbt.putBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -181,7 +182,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
if (nbt.contains("DecorItem", 10)) {
|
||||
this.inventory.setItem(1, ItemStack.of(nbt.getCompound("DecorItem")));
|
||||
}
|
||||
-
|
||||
@@ -174,6 +176,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
this.setStrength(nbt.getInt("Strength"));
|
||||
super.readAdditionalSaveData(nbt);
|
||||
this.setVariant(Llama.Variant.byId(nbt.getInt("Variant")));
|
||||
+ if (nbt.contains("Purpur.ShouldJoinCaravan")) this.shouldJoinCaravan = nbt.getBoolean("Purpur.ShouldJoinCaravan"); // Purpur
|
||||
this.updateContainerEquipment();
|
||||
}
|
||||
|
||||
@@ -500,6 +501,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@Override
|
||||
@@ -460,6 +463,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
|
||||
public void leaveCaravan() {
|
||||
if (this.caravanHead != null) {
|
||||
@@ -62,7 +60,7 @@ index 278c33b7de4472a746cdbc1faaa68e05592777bc..15a08abe94cb97de1450ff42cfb924a5
|
||||
this.caravanHead.caravanTail = null;
|
||||
}
|
||||
|
||||
@@ -507,6 +509,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -467,6 +471,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
}
|
||||
|
||||
public void joinCaravan(Llama llama) {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] AFK API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 3f5d87ccdee1309ae8240a3d181e268d8c022f56..9918f6ac1066ccadd3eb2635450faaf5a4350523 100644
|
||||
index 2820333cbcd2cb972c4408cb0d9cc1be37a844cf..bc6a5de72d52627b3ceca4b52b95e12ceddf1247 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -2134,8 +2134,68 @@ public class ServerPlayer extends Player {
|
||||
@@ -2326,8 +2326,68 @@ public class ServerPlayer extends Player {
|
||||
|
||||
public void resetLastActionTime() {
|
||||
this.lastActionTime = Util.getMillis();
|
||||
@@ -78,11 +78,11 @@ index 3f5d87ccdee1309ae8240a3d181e268d8c022f56..9918f6ac1066ccadd3eb2635450faaf5
|
||||
return this.stats;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 675e6e7246d84195dc027c0209744896bd2b7224..3d4908a8686804a43e114d4720d7295107659e47 100644
|
||||
index 1377d7abfe024b8ac977aa1a071b401836c3c048..510a4391463026dd0c896027a579a94174c24299 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -323,6 +323,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
private boolean hasMoved; // Spigot
|
||||
@@ -332,6 +332,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
private boolean justTeleported = false;
|
||||
// CraftBukkit end
|
||||
|
||||
+ // Purpur start
|
||||
@@ -102,10 +102,10 @@ index 675e6e7246d84195dc027c0209744896bd2b7224..3d4908a8686804a43e114d4720d72951
|
||||
@Override
|
||||
public void tick() {
|
||||
if (this.ackBlockChangesUpTo > -1) {
|
||||
@@ -390,6 +404,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -399,6 +413,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
}
|
||||
|
||||
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits.
|
||||
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits
|
||||
+ // Purpur start
|
||||
+ this.player.setAfk(true);
|
||||
+ if (!this.player.level().purpurConfig.idleTimeoutKick || (!Boolean.parseBoolean(System.getenv("PURPUR_FORCE_IDLE_KICK")) && kickPermissionCache.getUnchecked(this.player.getBukkitEntity()))) {
|
||||
@@ -115,33 +115,33 @@ index 675e6e7246d84195dc027c0209744896bd2b7224..3d4908a8686804a43e114d4720d72951
|
||||
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
|
||||
this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
|
||||
}
|
||||
@@ -638,6 +658,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -658,6 +678,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.lastYaw = to.getYaw();
|
||||
this.lastPitch = to.getPitch();
|
||||
|
||||
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur
|
||||
+
|
||||
// Skip the first time we do this
|
||||
if (true) { // Spigot - don't skip any move events
|
||||
Location oldTo = to.clone();
|
||||
@@ -1467,7 +1489,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
if (!event.isAllowed()) {
|
||||
flag2 = true; // Paper - diff on change, this should be moved wrongly
|
||||
Location oldTo = to.clone();
|
||||
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
|
||||
this.cserver.getPluginManager().callEvent(event);
|
||||
@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
movedWrongly = true;
|
||||
if (event.getLogWarning())
|
||||
- ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString());
|
||||
+ ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur
|
||||
}
|
||||
// Paper end
|
||||
- ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString());
|
||||
+ ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur
|
||||
} // Paper
|
||||
}
|
||||
@@ -1529,6 +1551,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
|
||||
@@ -1562,6 +1584,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.lastYaw = to.getYaw();
|
||||
this.lastPitch = to.getPitch();
|
||||
|
||||
+ if (!to.getWorld().getUID().equals(from.getWorld().getUID()) || to.getBlockX() != from.getBlockX() || to.getBlockY() != from.getBlockY() || to.getBlockZ() != from.getBlockZ() || to.getYaw() != from.getYaw() || to.getPitch() != from.getPitch()) this.player.resetLastActionTime(); // Purpur
|
||||
+
|
||||
// Skip the first time we do this
|
||||
if (from.getX() != Double.MAX_VALUE) {
|
||||
Location oldTo = to.clone();
|
||||
Location oldTo = to.clone();
|
||||
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
|
||||
this.cserver.getPluginManager().callEvent(event);
|
||||
diff --git a/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java
|
||||
index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2f95548c0 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/SleepStatus.java
|
||||
@@ -165,19 +165,19 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2
|
||||
}
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||
index 3ff999734d14e2b6e7828e117f5ee32a60c26bc1..cfa9607241c3e69777ffc317206996c2f783437a 100644
|
||||
index d8cc5614502db7025349e085381b6b32ad32296a..f1b9e83206cc67e6ef29ebe088351b0aaa5eb349 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
|
||||
@@ -39,6 +39,7 @@ public final class EntitySelector {
|
||||
@@ -40,6 +40,7 @@ public final class EntitySelector {
|
||||
return net.minecraft.util.Mth.clamp(serverPlayer.getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= playerInsomniaTicks;
|
||||
};
|
||||
// Paper end
|
||||
// Paper end - Ability to control player's insomnia and phantoms
|
||||
+ public static Predicate<Player> notAfk = (player) -> !player.isAfk(); // Purpur
|
||||
|
||||
private EntitySelector() {}
|
||||
// Paper start
|
||||
// Paper start - Affects Spawning API
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
|
||||
index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195c47cc9f8 100644
|
||||
index d2f0c3b26d4beedb49d86e0242d843590d469d02..7463eefb7d09ea55fe8780210e7e967c2fe7896d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
|
||||
@@ -64,6 +64,10 @@ public class TargetingConditions {
|
||||
@@ -192,10 +192,10 @@ index ac5e5676b194a2a99e5cf53eb89c1152cac963b8..872454743f6dedc27519a13566559195
|
||||
if (baseEntity == null) {
|
||||
if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
index ea475f6fff35e346ca153a385d6b20f90b5f4283..535fe476ebe5b791cae7a4013c4a498b89d047e3 100644
|
||||
index 054c905085b70ba72a3b76649bf5a20106f239d1..cd0992ec6b70f88c17cf7492847ae7f35e9c1e0d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -194,6 +194,13 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -201,6 +201,13 @@ public abstract class Player extends LivingEntity {
|
||||
public boolean fauxSleeping;
|
||||
public int oldLevel = -1;
|
||||
|
||||
@@ -210,23 +210,23 @@ index ea475f6fff35e346ca153a385d6b20f90b5f4283..535fe476ebe5b791cae7a4013c4a498b
|
||||
public CraftHumanEntity getBukkitEntity() {
|
||||
return (CraftHumanEntity) super.getBukkitEntity();
|
||||
diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||
index aaa07fcd4b32fe0de88142ab30378327a01f1729..bc8555d21d418f9da37cc089904f7cb038b1cdbe 100644
|
||||
index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452abab3fda91a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/EntityGetter.java
|
||||
@@ -191,7 +191,7 @@ public interface EntityGetter {
|
||||
@@ -192,7 +192,7 @@ public interface EntityGetter {
|
||||
|
||||
default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) {
|
||||
for(Player player : this.players()) {
|
||||
for (Player player : this.players()) {
|
||||
- if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
|
||||
+ if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player) && EntitySelector.notAfk.test(player)) {
|
||||
+ if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player) && EntitySelector.notAfk.test(player)) { // Purpur
|
||||
double d = player.distanceToSqr(x, y, z);
|
||||
if (range < 0.0D || d < range * range) {
|
||||
if (range < 0.0 || d < range * range) {
|
||||
return true;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73..12012dd42a9c1faffcad55c9786a9f99e426600a 100644
|
||||
index 7f78db4e0331d0f4801807ed1242642ee940d0f8..a4e4babedbf5bbf09bfbabd4f55ecd6301dae302 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -519,10 +519,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -574,10 +574,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@Override
|
||||
public void setPlayerListName(String name) {
|
||||
@@ -236,14 +236,14 @@ index 16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73..12012dd42a9c1faffcad55c9786a9f99
|
||||
+ public void setPlayerListName(String name, boolean useMM) {
|
||||
+ // Purpur end
|
||||
if (name == null) {
|
||||
name = getName();
|
||||
name = this.getName();
|
||||
}
|
||||
- this.getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromStringOrNull(name);
|
||||
+ this.getHandle().listName = name.equals(getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur
|
||||
for (ServerPlayer player : (List<ServerPlayer>) server.getHandle().players) {
|
||||
- this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name);
|
||||
+ this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur
|
||||
if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined
|
||||
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
|
||||
if (player.getBukkitEntity().canSee(this)) {
|
||||
player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle()));
|
||||
@@ -3289,5 +3294,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -3528,5 +3533,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public boolean usesPurpurClient() {
|
||||
return getHandle().purpurClient;
|
||||
}
|
||||
@@ -265,7 +265,7 @@ index 16c05edcd94d8a7ea166a4ab8c72cdeb09f26a73..12012dd42a9c1faffcad55c9786a9f99
|
||||
// Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 7937023274acf3a1efdd21bbdd2f933f4399baeb..3fba9f640ef03219c89a2a405e4d5a5870e366bf 100644
|
||||
index 940438c4b86d38be618dca8af95e3a7bf97bfa3c..beab078faaa6ea72539fdfd626ec64ff800d030c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -174,8 +174,18 @@ public class PurpurConfig {
|
||||
@@ -288,7 +288,7 @@ index 7937023274acf3a1efdd21bbdd2f933f4399baeb..3fba9f640ef03219c89a2a405e4d5a58
|
||||
|
||||
public static int barrelRows = 3;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 27ce55687c7c59fdfdcc4553240ea8b023919b77..3ed1a91c93f659306acaf8bad6820f49208554c8 100644
|
||||
index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b69d0993f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -90,6 +90,24 @@ public class PurpurWorldConfig {
|
||||
@@ -317,10 +317,10 @@ index 27ce55687c7c59fdfdcc4553240ea8b023919b77..3ed1a91c93f659306acaf8bad6820f49
|
||||
public boolean untamedTamablesAreRidable = true;
|
||||
public boolean useNightVisionWhenRiding = false;
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index 14e8e7ad8d742cdc0c50d29d6dade3e338c0463e..d1448f50a9c03bd779f4bcd6b4fc896365316b78 100644
|
||||
index 3283ed99c35ffed6805567705e0518d9f84feedc..a9a39f0da7b09410d8171172a4219c7d509fdb99 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -203,6 +203,7 @@ public class ActivationRange
|
||||
@@ -201,6 +201,7 @@ public class ActivationRange
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||
index c5598adb8cbcbcf7277c2fd4dd72c243d44d9700..cda4544ae96a4fcb5c6c4483df67a59f1b53fd27 100644
|
||||
index 9d10cdacb3aed2c00dc60aeb6f2cbeb48905e21f..842f382de43df5d5c321422372ec30ccdd7859d7 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
||||
@@ -58,6 +58,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||
@@ -56,6 +56,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
||||
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", "");
|
||||
@@ -17,12 +17,12 @@ index c5598adb8cbcbcf7277c2fd4dd72c243d44d9700..cda4544ae96a4fcb5c6c4483df67a59f
|
||||
public final boolean spawnNpcs = this.get("spawn-npcs", true);
|
||||
public final boolean pvp = this.get("pvp", true);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 2674aede815f8c6d0fbaf22895ccb7ed05f9a714..76d448e18b81fbb4b87c9cc1425fb446d9d6419c 100644
|
||||
index 26eb9ff0f4e77230d1eae793398869e71999982b..c014528d7d2583fa0a3007c42ea9c16f2d0eb20c 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -3152,4 +3152,11 @@ public final class CraftServer implements Server {
|
||||
@@ -3293,4 +3293,11 @@ public final class CraftServer implements Server {
|
||||
return this.potionBrewer;
|
||||
}
|
||||
|
||||
// Paper end
|
||||
+
|
||||
+ // Purpur start
|
||||
@@ -5,20 +5,20 @@ Subject: [PATCH] Configurable server mod name
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index edd53077098cfaaa5987dc7df7163b83a5ed3b26..a22dbc34cfd9de6e996eb925c47abfccef13b0e7 100644
|
||||
index 73b77367039eb6a4445d1ef2d66fb3410e91f4b8..8a6f7681d97c48886f5a78b61763e718e56ec015 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1700,7 +1700,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1925,7 +1925,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
|
||||
@DontObfuscate
|
||||
public String getServerModName() {
|
||||
- return "Purpur"; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
|
||||
+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
|
||||
- return "Purpur"; // Purpur - Purpur > // Pufferfish > // Paper
|
||||
+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Pufferfish > // Paper
|
||||
}
|
||||
|
||||
public SystemReport fillSystemReport(SystemReport details) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 3fba9f640ef03219c89a2a405e4d5a5870e366bf..bb7acf61cf2928181d014a17166d4d1414218e01 100644
|
||||
index 7312ae7323032a0ba3c47aa7bdfe5dffe9674535..881c5654f181ea9b66e1cdf3bc3bf46869e8557f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -188,6 +188,11 @@ public class PurpurConfig {
|
||||
@@ -5,30 +5,30 @@ Subject: [PATCH] Lagging threshold
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index a22dbc34cfd9de6e996eb925c47abfccef13b0e7..4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14 100644
|
||||
index 8a6f7681d97c48886f5a78b61763e718e56ec015..dfa332c4ff52033eb95248518bc44bbd22697697 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -301,6 +301,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
// Spigot end
|
||||
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations;
|
||||
public static long currentTickLong = 0L; // Paper
|
||||
@@ -315,6 +315,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files
|
||||
public static long currentTickLong = 0L; // Paper - track current tick as a long
|
||||
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
||||
+ public boolean lagging = false; // Purpur
|
||||
|
||||
public volatile Thread shutdownThread; // Paper
|
||||
public volatile boolean abnormalExit = false; // Paper
|
||||
@@ -1141,6 +1142,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1215,6 +1216,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.recentTps[0] = tps1.getAverage();
|
||||
this.recentTps[1] = tps5.getAverage();
|
||||
this.recentTps[2] = tps15.getAverage();
|
||||
// Paper end
|
||||
+ lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = curTime;
|
||||
+ lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = currentTime;
|
||||
}
|
||||
// Spigot end
|
||||
// Paper end - further improve server tick loop
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 76d448e18b81fbb4b87c9cc1425fb446d9d6419c..dbe110d95095e5230d1711181e4b7a762662c2bb 100644
|
||||
index c014528d7d2583fa0a3007c42ea9c16f2d0eb20c..6d8b433af8596dd5b5a3b04e901527cd50a31dec 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -3158,5 +3158,10 @@ public final class CraftServer implements Server {
|
||||
@@ -3299,5 +3299,10 @@ public final class CraftServer implements Server {
|
||||
public String getServerName() {
|
||||
return this.getProperties().serverName;
|
||||
}
|
||||
@@ -40,7 +40,7 @@ index 76d448e18b81fbb4b87c9cc1425fb446d9d6419c..dbe110d95095e5230d1711181e4b7a76
|
||||
// Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index bb7acf61cf2928181d014a17166d4d1414218e01..34afed28faeb56352b48faf8078a5fb07912eb5e 100644
|
||||
index 881c5654f181ea9b66e1cdf3bc3bf46869e8557f..9c5bba0ae119f8d42274455e322530ceb5f67d9b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -193,6 +193,11 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
index 2561e74ffdf595a9b6ae13dcd738662c772db442..518b927dac087000b5049bc61d43a46a7379e256 100644
|
||||
index a46bf73c608641bf1f00fd55242de71a0f2ee06e..9b3bf5ac043262c6cd00d83b750c3313122d92a9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
@@ -316,6 +316,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
@@ -330,6 +330,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType<T>) type.build(id)); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ index 2561e74ffdf595a9b6ae13dcd738662c772db442..518b927dac087000b5049bc61d43a46a
|
||||
public static ResourceLocation getKey(EntityType<?> type) {
|
||||
return BuiltInRegistries.ENTITY_TYPE.getKey(type);
|
||||
}
|
||||
@@ -531,6 +541,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
@@ -537,6 +547,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
return this.category;
|
||||
}
|
||||
|
||||
@@ -43,22 +43,22 @@ index 2561e74ffdf595a9b6ae13dcd738662c772db442..518b927dac087000b5049bc61d43a46a
|
||||
if (this.descriptionId == null) {
|
||||
this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this));
|
||||
diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
|
||||
index 741719301e6fc91a598e74342810c4185e6fde26..6fbff9c02fbabf03c9c649a9ea6128021081f9cd 100644
|
||||
index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582c1fd6bcb 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
|
||||
@@ -68,6 +68,15 @@ public class SpawnEggItem extends Item {
|
||||
SpawnerBlockEntity tileentitymobspawner = (SpawnerBlockEntity) tileentity;
|
||||
EntityType<?> entitytypes = this.getType(itemstack.getTag());
|
||||
@@ -74,6 +74,15 @@ public class SpawnEggItem extends Item {
|
||||
Spawner spawner = (Spawner) tileentity;
|
||||
|
||||
+ // Purpur start
|
||||
+ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
||||
+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName()));
|
||||
+ if (!event.callEvent()) {
|
||||
+ return InteractionResult.FAIL;
|
||||
+ }
|
||||
+ entitytypes = EntityType.getFromBukkitType(event.getEntityType());
|
||||
+ // Purpur end
|
||||
entitytypes = this.getType(itemstack);
|
||||
+
|
||||
tileentitymobspawner.setEntityId(entitytypes, world.getRandom());
|
||||
tileentity.setChanged();
|
||||
world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3);
|
||||
+ // Purpur start
|
||||
+ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
||||
+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName()));
|
||||
+ if (!event.callEvent()) {
|
||||
+ return InteractionResult.FAIL;
|
||||
+ }
|
||||
+ entitytypes = EntityType.getFromBukkitType(event.getEntityType());
|
||||
+ // Purpur end
|
||||
spawner.setEntityId(entitytypes, world.getRandom());
|
||||
world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3);
|
||||
world.gameEvent((Entity) context.getPlayer(), (Holder) GameEvent.BLOCK_CHANGE, blockposition);
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||
index ffd349c1b80df0f1e8c02bda23700184825170fd..29f301bde378bd320d5c44f2c1b6bf9dc185e286 100644
|
||||
index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f051ff92d3 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||
@@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu {
|
||||
@@ -17,10 +17,10 @@ index ffd349c1b80df0f1e8c02bda23700184825170fd..29f301bde378bd320d5c44f2c1b6bf9d
|
||||
// CraftBukkit start
|
||||
public boolean checkReachable = true;
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9e87b2a46 100644
|
||||
index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..9036426256f87b3ba4a78e6fa2cea4e028f84481 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
@@ -23,6 +23,13 @@ import org.slf4j.Logger;
|
||||
@@ -25,6 +25,13 @@ import org.slf4j.Logger;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -34,7 +34,7 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
public class AnvilMenu extends ItemCombinerMenu {
|
||||
|
||||
public static final int INPUT_SLOT = 0;
|
||||
@@ -51,6 +58,8 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -53,6 +60,8 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
public int maximumRepairCost = 40;
|
||||
private CraftInventoryView bukkitEntity;
|
||||
// CraftBukkit end
|
||||
@@ -43,12 +43,12 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
|
||||
public AnvilMenu(int syncId, Inventory inventory) {
|
||||
this(syncId, inventory, ContainerLevelAccess.NULL);
|
||||
@@ -78,12 +87,15 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -80,12 +89,15 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
|
||||
@Override
|
||||
protected boolean mayPickup(Player player, boolean present) {
|
||||
- return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item
|
||||
+ return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur
|
||||
- return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item
|
||||
+ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,7 +60,7 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
player.giveExperienceLevels(-this.cost.get());
|
||||
}
|
||||
|
||||
@@ -134,6 +146,12 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -136,6 +148,12 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
|
||||
@Override
|
||||
public void createResult() {
|
||||
@@ -73,31 +73,30 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
ItemStack itemstack = this.inputSlots.getItem(0);
|
||||
|
||||
this.cost.set(1);
|
||||
@@ -210,7 +228,7 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
int i2 = (Integer) map1.get(enchantment);
|
||||
@@ -143,7 +161,7 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
long j = 0L;
|
||||
byte b0 = 0;
|
||||
|
||||
i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1);
|
||||
- boolean flag3 = enchantment.canEnchant(itemstack);
|
||||
+ boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur
|
||||
|
||||
if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) {
|
||||
flag3 = true;
|
||||
- if (!itemstack.isEmpty() && EnchantmentHelper.canStoreEnchantments(itemstack)) {
|
||||
+ if (!itemstack.isEmpty() && canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur
|
||||
ItemStack itemstack1 = itemstack.copy();
|
||||
ItemStack itemstack2 = this.inputSlots.getItem(1);
|
||||
ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1));
|
||||
@@ -222,7 +240,7 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
Enchantment enchantment1 = (Enchantment) iterator1.next();
|
||||
Holder<Enchantment> holder1 = (Holder) iterator1.next();
|
||||
|
||||
if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) {
|
||||
- flag3 = false;
|
||||
+ flag3 = canDoUnsafeEnchants; // Purpur
|
||||
++i;
|
||||
}
|
||||
if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) {
|
||||
- flag3 = false;
|
||||
+ flag3 = canDoUnsafeEnchants; // Purpur
|
||||
++i;
|
||||
}
|
||||
@@ -293,6 +311,13 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
}
|
||||
@@ -280,6 +298,12 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
this.cost.set(this.maximumRepairCost - 1); // CraftBukkit
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (bypassCost && cost.get() >= maximumRepairCost) {
|
||||
+ itemstack.addTagElement("Purpur.realCost", IntTag.valueOf(cost.get()));
|
||||
+ cost.set(maximumRepairCost - 1);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
@@ -105,9 +104,9 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit
|
||||
itemstack1 = ItemStack.EMPTY;
|
||||
}
|
||||
@@ -315,6 +340,12 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -301,6 +325,12 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit
|
||||
sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
|
||||
this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
|
||||
this.broadcastChanges();
|
||||
+ // Purpur start
|
||||
+ if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) {
|
||||
@@ -115,11 +114,11 @@ index e0c3a4ba27e21c3692e601acd0af60873bcbb84c..b500a04b8135604f0159a741b3d228c9
|
||||
+ ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get()));
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit
|
||||
this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
|
||||
index c2cf5a8e788637c6264cf43d712a5be223ff1cc5..a578882b64c581ef4f47fa483a9f2988cfa4c8cf 100644
|
||||
index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..7215af6cc91f48b040c23c54536d4aac8d293497 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
|
||||
@@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu {
|
||||
@@ -133,7 +132,7 @@ index c2cf5a8e788637c6264cf43d712a5be223ff1cc5..a578882b64c581ef4f47fa483a9f2988
|
||||
|
||||
return itemstack;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
index 88d3ca586ff6905f18a8ab9f0e229f440ed44088..27dd4eb4781a3c75772860c11db886e1038cecd2 100644
|
||||
index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe1ff08a28 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory;
|
||||
@@ -147,7 +146,7 @@ index 88d3ca586ff6905f18a8ab9f0e229f440ed44088..27dd4eb4781a3c75772860c11db886e1
|
||||
super(inventory, resultInventory);
|
||||
@@ -57,4 +57,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
||||
Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)");
|
||||
container.maximumRepairCost = levels;
|
||||
this.container.maximumRepairCost = levels;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
@@ -1,91 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sun, 5 May 2019 12:58:45 -0500
|
||||
Subject: [PATCH] LivingEntity safeFallDistance
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 7471edf871522543cb49afef63d2c539b7e871a3..960e6ae3e7ceb981459b87343cacb7458d51eecf 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
private boolean skipDropExperience;
|
||||
// CraftBukkit start
|
||||
public int expToDrop;
|
||||
+ public float safeFallDistance = 3.0F; // Purpur
|
||||
public boolean forceDrops;
|
||||
public ArrayList<org.bukkit.inventory.ItemStack> drops = new ArrayList<org.bukkit.inventory.ItemStack>();
|
||||
public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes;
|
||||
@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.tryAddSoulSpeed();
|
||||
}
|
||||
|
||||
- if (!this.level().isClientSide && this.fallDistance > 3.0F && onGround && !state.isAir()) {
|
||||
+ if (!this.level().isClientSide && this.fallDistance > this.safeFallDistance && onGround && !state.isAir()) { // Purpur
|
||||
double d1 = this.getX();
|
||||
double d2 = this.getY();
|
||||
double d3 = this.getZ();
|
||||
@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D;
|
||||
}
|
||||
|
||||
- float f = (float) Mth.ceil(this.fallDistance - 3.0F);
|
||||
+ float f = (float) Mth.ceil(this.fallDistance - this.safeFallDistance); // Purpur
|
||||
double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D);
|
||||
int i = (int) (150.0D * d7);
|
||||
|
||||
@@ -2092,7 +2093,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP);
|
||||
float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1);
|
||||
|
||||
- return Mth.ceil((fallDistance - 3.0F - f2) * damageMultiplier);
|
||||
+ return Mth.ceil((fallDistance - this.safeFallDistance - f2) * damageMultiplier); // Purpur
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||
index ad4d4e38a2f0125e0943945c9440a9be80b60257..d3b655ccf40d24b7f5a09383fd5771bb275ac4b7 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
|
||||
@@ -386,7 +386,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
|
||||
@Override
|
||||
protected int calculateFallDamage(float fallDistance, float damageMultiplier) {
|
||||
- return Mth.ceil((fallDistance * 0.5F - 3.0F) * damageMultiplier);
|
||||
+ return Mth.ceil((fallDistance * 0.5F - this.safeFallDistance) * damageMultiplier);
|
||||
}
|
||||
|
||||
protected int getInventorySize() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.world.level.LevelReader;
|
||||
public class Giant extends Monster {
|
||||
public Giant(EntityType<? extends Giant> type, Level world) {
|
||||
super(type, world);
|
||||
+ this.safeFallDistance = 10.0F; // Purpur
|
||||
}
|
||||
|
||||
// Purpur start
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index 3579715faa33a722cccb13d8d7c86a3de740d6fc..3c65041eed148fe30be3c73e423433e37ae58cc5 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
getHandle().knockback(strength, directionX, directionZ);
|
||||
};
|
||||
// Paper end
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public float getSafeFallDistance() {
|
||||
+ return getHandle().safeFallDistance;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setSafeFallDistance(float safeFallDistance) {
|
||||
+ getHandle().safeFallDistance = safeFallDistance;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
@@ -5,18 +5,18 @@ Subject: [PATCH] Alternative Keepalive Handling
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
index 9226fadcf53da5f7d55f4434a660d3e091c0775f..0166107f8b48393a93ac046e6af70f0ff24fbb85 100644
|
||||
index 4228fd441f8350d43bd545e31c920304f07968bc..3a15085e0421f46800f779066d235ef21b463289 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
||||
@@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
private long keepAliveTime = Util.getMillis(); // Paper
|
||||
private boolean keepAlivePending;
|
||||
@@ -73,6 +73,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
private long keepAliveChallenge;
|
||||
private long closedListenerTime;
|
||||
private boolean closed = false;
|
||||
+ private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur
|
||||
private int latency;
|
||||
private volatile boolean suspendFlushingOnServerThread = false;
|
||||
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
|
||||
@@ -91,6 +92,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
public final java.util.Map<java.util.UUID, net.kyori.adventure.resource.ResourcePackCallback> packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks
|
||||
@@ -124,6 +125,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
|
||||
@Override
|
||||
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
|
||||
@@ -30,10 +30,10 @@ index 9226fadcf53da5f7d55f4434a660d3e091c0775f..0166107f8b48393a93ac046e6af70f0f
|
||||
+ }
|
||||
+ } else
|
||||
+ // Purpur end
|
||||
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread
|
||||
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async
|
||||
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
|
||||
int i = (int) (Util.getMillis() - this.keepAliveTime);
|
||||
@@ -204,6 +215,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
@@ -260,6 +271,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
||||
long currentTime = Util.getMillis();
|
||||
long elapsedTime = currentTime - this.keepAliveTime;
|
||||
|
||||
@@ -52,11 +52,11 @@ index 9226fadcf53da5f7d55f4434a660d3e091c0775f..0166107f8b48393a93ac046e6af70f0f
|
||||
+ } else
|
||||
+ // Purpur end
|
||||
+
|
||||
if (this.keepAlivePending) {
|
||||
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
|
||||
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info
|
||||
if (!this.isSingleplayerOwner() && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected
|
||||
if (this.keepAlivePending && !this.processedDisconnect) { // Paper
|
||||
this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 34afed28faeb56352b48faf8078a5fb07912eb5e..ad239ba9259c5a63b40261ebc44224893496b47d 100644
|
||||
index 9c5bba0ae119f8d42274455e322530ceb5f67d9b..a14cf3a5dc2ba265de5e400404afcbd9faa3f25a 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -198,6 +198,11 @@ public class PurpurConfig {
|
||||
@@ -4,72 +4,83 @@ Date: Thu, 9 May 2019 14:27:37 -0500
|
||||
Subject: [PATCH] Silk touch spawners
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||
index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..3253361d91e2a2e68d354eaf3dd3e3cd486e191d 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java
|
||||
@@ -219,6 +219,7 @@ public class BlockItem extends Item {
|
||||
|
||||
if (tileentity != null) {
|
||||
if (!world.isClientSide && tileentity.onlyOpCanSetNbt() && (player == null || !(player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place"))))) { // Spigot - add permission
|
||||
+ if (!(!world.isClientSide && world.purpurConfig.silkTouchEnabled && tileentity instanceof net.minecraft.world.level.block.entity.SpawnerBlockEntity && player.getBukkitEntity().hasPermission("purpur.drop.spawners")))
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
|
||||
index 5f20e075c532f0f1d413242949d1738c0c152bf7..e6f8cb165f7e3da5f0edfc952d14059516de8acf 100644
|
||||
index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9da39596a 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/Items.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/Items.java
|
||||
@@ -294,7 +294,7 @@ public class Items {
|
||||
@@ -338,7 +338,7 @@ public class Items {
|
||||
public static final Item PURPUR_BLOCK = registerBlock(Blocks.PURPUR_BLOCK);
|
||||
public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR);
|
||||
public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS);
|
||||
- public static final Item SPAWNER = registerBlock(Blocks.SPAWNER);
|
||||
+ public static final Item SPAWNER = registerBlock(new org.purpurmc.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur
|
||||
public static final Item CHEST = registerBlock(Blocks.CHEST);
|
||||
public static final Item CHEST = registerBlock(Blocks.CHEST, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY));
|
||||
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE);
|
||||
public static final Item FARMLAND = registerBlock(Blocks.FARMLAND);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad253814a0 100644
|
||||
index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..66c17bdfecdfbcfb2d853e561432dd51a8f7ed46 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
@@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock {
|
||||
@@ -42,6 +42,57 @@ public class SpawnerBlock extends BaseEntityBlock {
|
||||
return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack, boolean includeDrops) {
|
||||
+ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack, boolean includeDrops, boolean dropExp) {
|
||||
+ if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) {
|
||||
+ Optional<net.minecraft.world.entity.EntityType<?>> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn());
|
||||
+
|
||||
+ net.minecraft.world.entity.EntityType<?> entityType = type.orElse(null);
|
||||
+ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(entityType == null ? Component.empty() : entityType.getDescription());
|
||||
+ CompoundTag display = new CompoundTag();
|
||||
+ CompoundTag tag = new CompoundTag();
|
||||
+
|
||||
+ String name = level.purpurConfig.silkTouchSpawnerName;
|
||||
+ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) {
|
||||
+ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
|
||||
+ if (name.startsWith("<reset>")) {
|
||||
+ displayName = displayName.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
|
||||
+ }
|
||||
+ display.put("Name", net.minecraft.nbt.StringTag.valueOf(io.papermc.paper.adventure.PaperAdventure.asJsonString(displayName, java.util.Locale.ROOT)));
|
||||
+ tag.put("display", display);
|
||||
+ }
|
||||
+
|
||||
+ List<String> lore = level.purpurConfig.silkTouchSpawnerLore;
|
||||
+ if (lore != null && !lore.isEmpty()) {
|
||||
+ net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag();
|
||||
+ for (String line : lore) {
|
||||
+ net.kyori.adventure.text.Component lineComponent = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(line, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
|
||||
+ if (line.startsWith("<reset>")) {
|
||||
+ lineComponent = lineComponent.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
|
||||
+ }
|
||||
+ list.add(net.minecraft.nbt.StringTag.valueOf(io.papermc.paper.adventure.PaperAdventure.asJsonString(lineComponent, java.util.Locale.ROOT)));
|
||||
+ }
|
||||
+ display.put("Lore", list);
|
||||
+ tag.put("display", display);
|
||||
+ }
|
||||
+
|
||||
+ ItemStack item = new ItemStack(Blocks.SPAWNER.asItem());
|
||||
+ if (entityType != null) {
|
||||
+ tag.putString("Purpur.mob_type", entityType.getName());
|
||||
+ tag.putDouble("HideFlags", 32); // hides the "Interact with Spawn Egg" tooltip
|
||||
+ item.setTag(tag);
|
||||
+
|
||||
+ net.minecraft.world.level.SpawnData nextSpawnData = blockEntity instanceof SpawnerBlockEntity spawnerBlock ? spawnerBlock.getSpawner().nextSpawnData : null;
|
||||
+ java.util.Optional<net.minecraft.world.entity.EntityType<?>> type = java.util.Optional.empty();
|
||||
+ if (nextSpawnData != null) {
|
||||
+ type = net.minecraft.world.entity.EntityType.by(nextSpawnData.getEntityToSpawn());
|
||||
+ net.minecraft.world.level.SpawnData.CODEC.encodeStart(net.minecraft.nbt.NbtOps.INSTANCE, nextSpawnData).result().ifPresent(tag -> item.set(net.minecraft.core.component.DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY.update(compoundTag -> compoundTag.put("Purpur.SpawnData", tag))));
|
||||
+ }
|
||||
+
|
||||
+ if (type.isPresent()) {
|
||||
+ final net.kyori.adventure.text.Component mobName = io.papermc.paper.adventure.PaperAdventure.asAdventure(type.get().getDescription());
|
||||
+
|
||||
+ String name = level.purpurConfig.silkTouchSpawnerName;
|
||||
+ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) {
|
||||
+ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
|
||||
+ if (name.startsWith("<reset>")) {
|
||||
+ displayName = displayName.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
|
||||
+ }
|
||||
+ item.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName));
|
||||
+ }
|
||||
+
|
||||
+ List<String> lore = level.purpurConfig.silkTouchSpawnerLore;
|
||||
+ if (lore != null && !lore.isEmpty()) {
|
||||
+
|
||||
+ List<Component> loreComponentList = new java.util.ArrayList<>();
|
||||
+ for (String line : lore) {
|
||||
+ net.kyori.adventure.text.Component lineComponent = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(line, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
|
||||
+ if (line.startsWith("<reset>")) {
|
||||
+ lineComponent = lineComponent.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
|
||||
+ }
|
||||
+ loreComponentList.add(io.papermc.paper.adventure.PaperAdventure.asVanilla(lineComponent));
|
||||
+ }
|
||||
+
|
||||
+ item.set(net.minecraft.core.component.DataComponents.LORE, new net.minecraft.world.item.component.ItemLore(loreComponentList, loreComponentList));
|
||||
+ }
|
||||
+ item.set(net.minecraft.core.component.DataComponents.HIDE_ADDITIONAL_TOOLTIP, net.minecraft.util.Unit.INSTANCE);
|
||||
+ }
|
||||
+ popResource(level, pos, item);
|
||||
+ }
|
||||
+ super.playerDestroy(level, player, pos, state, blockEntity, stack, includeDrops);
|
||||
+ super.playerDestroy(level, player, pos, state, blockEntity, stack, includeDrops, dropExp);
|
||||
+ }
|
||||
+
|
||||
+ private boolean isSilkTouch(Level level, ItemStack stack) {
|
||||
@@ -78,9 +89,9 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) {
|
||||
protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) {
|
||||
super.spawnAfterBreak(state, world, pos, tool, dropExperience);
|
||||
@@ -48,6 +100,7 @@ public class SpawnerBlock extends BaseEntityBlock {
|
||||
@@ -50,6 +101,7 @@ public class SpawnerBlock extends BaseEntityBlock {
|
||||
|
||||
@Override
|
||||
public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack, boolean flag) {
|
||||
@@ -89,7 +100,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..93f5f226cf6fd6110e4daa02b3f5d9ad
|
||||
int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15);
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 3ed1a91c93f659306acaf8bad6820f49208554c8..570abbb70cfb523917de473bd91640719c40a611 100644
|
||||
index 70f53ccb22de2c05c9ead68f8bd29d0b69d0993f..d4bca5b5f3d10c3a04befd8c365f46433491f299 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -108,6 +108,38 @@ public class PurpurWorldConfig {
|
||||
@@ -133,18 +144,20 @@ index 3ed1a91c93f659306acaf8bad6820f49208554c8..570abbb70cfb523917de473bd9164071
|
||||
public boolean useNightVisionWhenRiding = false;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b869669a90
|
||||
index 0000000000000000000000000000000000000000..ed50cb2115401c9039df4136caf5a087a5f5991c
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
|
||||
@@ -0,0 +1,36 @@
|
||||
@@ -0,0 +1,40 @@
|
||||
+package org.purpurmc.purpur.item;
|
||||
+
|
||||
+import net.minecraft.core.BlockPos;
|
||||
+import net.minecraft.core.component.DataComponents;
|
||||
+import net.minecraft.nbt.CompoundTag;
|
||||
+import net.minecraft.world.entity.EntityType;
|
||||
+import net.minecraft.world.entity.player.Player;
|
||||
+import net.minecraft.world.item.BlockItem;
|
||||
+import net.minecraft.world.item.ItemStack;
|
||||
+import net.minecraft.world.item.component.CustomData;
|
||||
+import net.minecraft.world.level.Level;
|
||||
+import net.minecraft.world.level.block.Block;
|
||||
+import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
@@ -161,12 +174,14 @@ index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b8
|
||||
+ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) {
|
||||
+ boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state);
|
||||
+ if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) {
|
||||
+ BlockEntity spawner = level.getBlockEntity(pos);
|
||||
+ if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) {
|
||||
+ CompoundTag tag = stack.getTag();
|
||||
+ if (tag.contains("Purpur.mob_type")) {
|
||||
+ EntityType.byString(tag.getString("Purpur.mob_type")).ifPresent(type ->
|
||||
+ ((SpawnerBlockEntity) spawner).getSpawner().setEntityId(type, level, level.random, pos));
|
||||
+ BlockEntity blockEntity = level.getBlockEntity(pos);
|
||||
+ if (blockEntity instanceof SpawnerBlockEntity spawner) {
|
||||
+ CompoundTag customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag();
|
||||
+ if (customData.contains("Purpur.mob_type")) {
|
||||
+ EntityType.byString(customData.getString("Purpur.mob_type")).ifPresent(type -> spawner.getSpawner().setEntityId(type, level, level.random, pos));
|
||||
+ } else if (customData.contains("Purpur.SpawnData")) {
|
||||
+ net.minecraft.world.level.SpawnData.CODEC.parse(net.minecraft.nbt.NbtOps.INSTANCE, customData.getCompound("Purpur.SpawnData")).result()
|
||||
+ .ifPresent(spawnData -> spawner.getSpawner().nextSpawnData = spawnData);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add turtle egg block options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
index 07157822659288e76b2fba34db8d5d566506f33b..18feb559f9fd157dd4a01faf2b2bb18df2a64675 100644
|
||||
index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c6d6f6d08 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
@@ -195,6 +195,25 @@ public class TurtleEggBlock extends Block {
|
||||
@@ -203,6 +203,25 @@ public class TurtleEggBlock extends Block {
|
||||
}
|
||||
|
||||
private boolean canDestroyEgg(Level world, Entity entity) {
|
||||
@@ -36,16 +36,16 @@ index 07157822659288e76b2fba34db8d5d566506f33b..18feb559f9fd157dd4a01faf2b2bb18d
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 570abbb70cfb523917de473bd91640719c40a611..7a4c1c04b7e3c558ac19b72693d5abe6c14acdfe 100644
|
||||
index d4bca5b5f3d10c3a04befd8c365f46433491f299..ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -140,6 +140,15 @@ public class PurpurWorldConfig {
|
||||
});
|
||||
}
|
||||
|
||||
+ public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
+ public boolean turtleEggsBreakFromItems = true;
|
||||
+ public boolean turtleEggsBreakFromMinecarts = true;
|
||||
+ public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
+ public boolean turtleEggsBreakFromItems = false;
|
||||
+ public boolean turtleEggsBreakFromMinecarts = false;
|
||||
+ private void turtleEggSettings() {
|
||||
+ turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs);
|
||||
+ turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Logger settings (suppressing pointless logs)
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
|
||||
index e38e2e5a7ddba9c140f362021b6be0b0974f7cd1..0b3a06027f2c600960cd88159803be187c4d0317 100644
|
||||
index c7e1f2bac3eca9bb72bf1f8c26cccb2905e1ddfc..94893039363b5fe2d7d0622d0592bce2c867b1c3 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
|
||||
@@ -200,6 +200,7 @@ public class PlayerAdvancements {
|
||||
@@ -199,6 +199,7 @@ public class PlayerAdvancements {
|
||||
|
||||
if (advancementholder == null) {
|
||||
if (!minecraftkey.getNamespace().equals("minecraft")) return; // CraftBukkit
|
||||
@@ -17,17 +17,17 @@ index e38e2e5a7ddba9c140f362021b6be0b0974f7cd1..0b3a06027f2c600960cd88159803be18
|
||||
} else {
|
||||
this.startProgress(advancementholder, advancementprogress);
|
||||
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||
index 50ed7cfe1ecef6d075ba484804827cec83ba2bf2..54f9cd80ac925aa95ff4fdb4d52cbcc2b04263a5 100644
|
||||
index 1351423a12c19a01f602a202832372a399e6a867..1e2025674eafcf56460c741083c91e2e42d61b19 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
|
||||
@@ -318,6 +318,7 @@ public class WorldGenRegion implements WorldGenLevel {
|
||||
@@ -326,6 +326,7 @@ public class WorldGenRegion implements WorldGenLevel {
|
||||
return true;
|
||||
} else {
|
||||
// Paper start
|
||||
// Paper start - Buffer OOB setBlock calls
|
||||
+ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressSetBlockFarChunk) // Purpur
|
||||
if (!hasSetFarWarned) {
|
||||
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
|
||||
hasSetFarWarned = true;
|
||||
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStatus) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
|
||||
hasSetFarWarned = true;
|
||||
diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
|
||||
index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b8967829d0530e 100644
|
||||
--- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java
|
||||
@@ -41,7 +41,7 @@ index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b89678
|
||||
} else {
|
||||
handler.accept((RecipeHolder) optional.get());
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
|
||||
index 2677e21d8239bf0361a3bc5c9a50c328e54d70f6..544a79d5da661aff19e2019f7b83a3a49350bb68 100644
|
||||
index 71d057dc8c7362f8e7aaca5e31c9f02b2bf3f281..9d9405af0db28c0f3ffff2881b54f1dc84675a9d 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
|
||||
@@ -256,6 +256,7 @@ public final class CraftLegacy {
|
||||
@@ -49,11 +49,11 @@ index 2677e21d8239bf0361a3bc5c9a50c328e54d70f6..544a79d5da661aff19e2019f7b83a3a4
|
||||
|
||||
static {
|
||||
+ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressInitLegacyMaterialError) // Purpur
|
||||
LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - doesn't need to be an error
|
||||
LOGGER.warn("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); // Paper - Improve logging and errors; doesn't need to be an error
|
||||
if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) {
|
||||
new Exception().printStackTrace();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index ad239ba9259c5a63b40261ebc44224893496b47d..308d7556f5b12c0aa5b2fde5a23ef6fbacb303de 100644
|
||||
index a14cf3a5dc2ba265de5e400404afcbd9faa3f25a..a14879f4266c71b7493c05e105114590c6709045 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -237,4 +237,15 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f..45f63f2fedee7bcab9cd3ebc3117cecd225b89d2 100644
|
||||
index 66a3b28d7b943d443ff66fdcfbce6e5260b9463e..222865a3cee62f244a566092a7d814efe478ee01 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -300,7 +300,7 @@ public class Main {
|
||||
@@ -302,7 +302,7 @@ public class Main {
|
||||
System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper
|
||||
}
|
||||
|
||||
@@ -5,22 +5,19 @@ Subject: [PATCH] Giants AI settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673abe091bc 100644
|
||||
index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..3c1217d36522b1fd3d1a099d3a12d99016f34c4b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
|
||||
@@ -1,14 +1,37 @@
|
||||
@@ -1,11 +1,34 @@
|
||||
package net.minecraft.world.entity.monster;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
+import net.minecraft.nbt.CompoundTag;
|
||||
+import net.minecraft.world.Difficulty;
|
||||
+import net.minecraft.world.DifficultyInstance;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityDimensions;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
+import net.minecraft.world.entity.EquipmentSlot;
|
||||
+import net.minecraft.world.entity.MobSpawnType;
|
||||
import net.minecraft.world.entity.Pose;
|
||||
+import net.minecraft.world.entity.SpawnGroupData;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
@@ -46,7 +43,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673
|
||||
|
||||
public class Giant extends Monster {
|
||||
public Giant(EntityType<? extends Giant> type, Level world) {
|
||||
@@ -34,8 +57,23 @@ public class Giant extends Monster {
|
||||
@@ -30,8 +53,23 @@ public class Giant extends Monster {
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
@@ -70,15 +67,15 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
// Purpur end
|
||||
|
||||
@@ -46,6 +84,32 @@ public class Giant extends Monster {
|
||||
this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage);
|
||||
@Override
|
||||
@@ -47,8 +85,34 @@ public class Giant extends Monster {
|
||||
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
|
||||
+ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
|
||||
+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) {
|
||||
+ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData);
|
||||
+ if (groupData == null) {
|
||||
+ populateDefaultEquipmentSlots(this.random, difficulty);
|
||||
+ populateDefaultEquipmentEnchantments(this.random, difficulty);
|
||||
@@ -102,11 +99,6 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673
|
||||
+ return level().purpurConfig.giantJumpHeight;
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
|
||||
return 10.440001F;
|
||||
@@ -62,6 +126,6 @@ public class Giant extends Monster {
|
||||
|
||||
@Override
|
||||
public float getWalkTargetValue(BlockPos pos, LevelReader world) {
|
||||
- return world.getPathfindingCostFromLightLevels(pos);
|
||||
@@ -114,7 +106,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7a4c1c04b7e3c558ac19b72693d5abe6c14acdfe..b18c498b6fd17ef298cc6ee7b2386188f0b75b36 100644
|
||||
index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e19ca58c9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -554,6 +554,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,11 +5,11 @@ Subject: [PATCH] Zombie horse naturally spawn
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 19698f13530183b3580a7a6ad720d078b6c791ba..c0f11d06e077c41d65b25396a14a4d81a39993e2 100644
|
||||
index fc791a66d299905798c2c1ca542467e4c7933caf..b02d9db8442b209a9df27e417be71b11d426878b 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -1000,10 +1000,18 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper
|
||||
@@ -1006,10 +1006,18 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses
|
||||
|
||||
if (flag1) {
|
||||
- SkeletonHorse entityhorseskeleton = (SkeletonHorse) EntityType.SKELETON_HORSE.create(this);
|
||||
@@ -30,18 +30,18 @@ index 19698f13530183b3580a7a6ad720d078b6c791ba..c0f11d06e077c41d65b25396a14a4d81
|
||||
entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
|
||||
this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b18c498b6fd17ef298cc6ee7b2386188f0b75b36..bae186807d44745942faf8919831f82e475a4f63 100644
|
||||
index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523f89af57f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1484,6 +1484,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1487,6 +1487,7 @@ public class PurpurWorldConfig {
|
||||
public double zombieHorseJumpStrengthMax = 1.0D;
|
||||
public double zombieHorseMovementSpeedMin = 0.2D;
|
||||
public double zombieHorseMovementSpeedMax = 0.2D;
|
||||
+ public double zombieHorseSpawnChance = 0.0D;
|
||||
private void zombieHorseSettings() {
|
||||
zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable);
|
||||
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
|
||||
zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
|
||||
@@ -1499,6 +1500,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1503,6 +1504,7 @@ public class PurpurWorldConfig {
|
||||
zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax);
|
||||
zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin);
|
||||
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
|
||||
@@ -5,26 +5,26 @@ Subject: [PATCH] Charged creeper naturally spawn
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
index e31094f270117dec3053620c06e409953fb6d710..a1e3f29ce49dc41ad70f74ee224250fe9ebea175 100644
|
||||
index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..84114356ea4c06998572c03f2e2a75b49e539980 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -257,6 +257,14 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth);
|
||||
}
|
||||
|
||||
+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
|
||||
+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData) {
|
||||
+ double chance = world.getLevel().purpurConfig.creeperChargedChance;
|
||||
+ if (chance > 0D && random.nextDouble() <= chance) {
|
||||
+ setPowered(true);
|
||||
+ }
|
||||
+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
|
||||
+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData);
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
protected SoundEvent getHurtSound(DamageSource source) {
|
||||
return SoundEvents.CREEPER_HURT;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index bae186807d44745942faf8919831f82e475a4f63..8503f57e3b07318331045aa25aa0fd07b8ca17ed 100644
|
||||
index 41822b9b050f4267cc0151ea85682523f89af57f..e033ef722d9b6336f1cbc6bdf404f35c34b45db9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -345,6 +345,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606b2f9b9b2 100644
|
||||
index 9eb1158213064ddb37ae76e445b5861b963a1f55..4abcde662ed78b16632ee575f695ee4329f11b2f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
@@ -469,10 +469,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -466,10 +466,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
}
|
||||
|
||||
this.setVariant(entityrabbit_variant);
|
||||
@@ -19,7 +19,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt);
|
||||
return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData);
|
||||
}
|
||||
|
||||
private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) {
|
||||
@@ -33,7 +33,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606
|
||||
int i = world.getRandom().nextInt(100);
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8503f57e3b07318331045aa25aa0fd07b8ca17ed..86232e49f12cae623dbe235fd0fac5fbf0255a2b 100644
|
||||
index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1910cc8af 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -988,6 +988,8 @@ public class PurpurWorldConfig {
|
||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Fix 'outdated server' showing in ping before server fully
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
|
||||
index 2c13147bc063a09bb7907d6f90c3a1e811a09eb1..3edb0c392cec7fdabebad81da1a8b06a700fbfca 100644
|
||||
index 6f1c9fa89e718cbc01a8d72de34154f49c5f46db..2455f8e9679914660ec4fcd081138dabfe9c225b 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
|
||||
@@ -153,6 +153,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Tulips change fox type
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb383b989755 100644
|
||||
index 8666d82775570b812d5bdd80336c8e14db6ddf47..d2be8c1c23f291e98b9a31a63ba5fa7d44fc7402 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
@@ -36,6 +36,7 @@ import net.minecraft.util.RandomSource;
|
||||
@@ -37,6 +37,7 @@ import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.DifficultyInstance;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
@@ -16,7 +16,7 @@ index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb38
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.AgeableMob;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
@@ -390,6 +391,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
@@ -389,6 +390,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
}
|
||||
|
||||
private void setTargetGoals() {
|
||||
@@ -28,7 +28,7 @@ index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb38
|
||||
if (this.getVariant() == Fox.Type.RED) {
|
||||
this.targetSelector.addGoal(4, this.landTargetGoal);
|
||||
this.targetSelector.addGoal(4, this.turtleEggTargetGoal);
|
||||
@@ -423,6 +429,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
@@ -422,6 +428,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
|
||||
public void setVariant(Fox.Type variant) {
|
||||
this.entityData.set(Fox.DATA_TYPE_ID, variant.getId());
|
||||
@@ -37,8 +37,8 @@ index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb38
|
||||
|
||||
List<UUID> getTrustedUUIDs() {
|
||||
@@ -762,6 +769,29 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
return this.getTrustedUUIDs().contains(uuid);
|
||||
}
|
||||
// Paper end
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
@@ -67,7 +67,7 @@ index 5a7f4c0565b2d8f95930b39e1aacd9904e382736..f26fa004e1372f8711e76bc7fa4cdb38
|
||||
// Paper start - Cancellable death event
|
||||
protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 86232e49f12cae623dbe235fd0fac5fbf0255a2b..de3fe605c4cc477007d15468338a7de5dfc87c4c 100644
|
||||
index a96aa7f127467a6ea8025c09f4e336f1910cc8af..d084d5ef20b2fb4d3b5479cb51003fb82a0358fc 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -509,6 +509,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1,14 +1,14 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 26 Mar 2020 19:46:44 -0500
|
||||
Date: Fri, 12 Apr 2024 15:40:12 -0700
|
||||
Subject: [PATCH] Breedable Polar Bears
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
|
||||
index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db039a7f9c 100644
|
||||
index 00afde0ec4811992aac306a42d473026b7e7e468..067bb175c457d6de089f18826dfce6c3661dad67 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
|
||||
@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -98,6 +98,27 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.polarBearMaxHealth);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db
|
||||
@Nullable
|
||||
@Override
|
||||
public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) {
|
||||
@@ -107,7 +128,7 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -106,7 +127,7 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean isFood(ItemStack stack) {
|
||||
@@ -45,7 +45,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -117,6 +138,12 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -116,6 +137,12 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||
this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal());
|
||||
this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal());
|
||||
@@ -55,11 +55,11 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db
|
||||
+ this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, net.minecraft.world.item.crafting.Ingredient.of(level().purpurConfig.polarBearBreedableItem), false));
|
||||
+ }
|
||||
+ // Purpur end
|
||||
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D));
|
||||
this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25));
|
||||
this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0));
|
||||
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index de3fe605c4cc477007d15468338a7de5dfc87c4c..4b97350dd6968125d91e02441b6a573ce7000943 100644
|
||||
index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562e724361a 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -960,6 +960,8 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
|
||||
index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae25692b09 100644
|
||||
index a7c76e1d89f54f0dc3b27a8a8db168ea4570bf60..14210dac8a4fa8caaf69ec830f83d15525bb1bea 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
|
||||
@@ -75,19 +75,30 @@ public class Chicken extends Animal {
|
||||
@@ -74,13 +74,16 @@ public class Chicken extends Animal {
|
||||
@Override
|
||||
public void initAttributes() {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
|
||||
@@ -24,8 +24,9 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae
|
||||
- this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D));
|
||||
+ // this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); // Purpur - moved down
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Chicken.FOOD_ITEMS, false));
|
||||
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D));
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, (itemstack) -> {
|
||||
return itemstack.is(ItemTags.CHICKEN_FOOD);
|
||||
@@ -89,6 +92,14 @@ public class Chicken extends Animal {
|
||||
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
|
||||
this.goalSelector.addGoal(7, new RandomLookAroundGoal(this));
|
||||
@@ -40,7 +41,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -96,7 +107,7 @@ public class Chicken extends Animal {
|
||||
@@ -97,7 +108,7 @@ public class Chicken extends Animal {
|
||||
}
|
||||
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
@@ -50,7 +51,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4b97350dd6968125d91e02441b6a573ce7000943..c208253d9afcdaa18fdb1f020d3d385556190203 100644
|
||||
index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f930922ed 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -299,6 +299,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,32 +5,40 @@ Subject: [PATCH] Add option to set armorstand step height
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index b4edc2ab9d831c3c81677544cbd1cd7369591ff5..a5f54e2c17f618b99c76281b45d005280e4e31f9 100644
|
||||
index e49dda27dd609ebf377f679c4f60c13a5f610c8e..429d1a3fd7a75fe3dc8eb8d467ad4f2bd99e0212 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -333,7 +333,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -340,6 +340,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
public double xOld;
|
||||
public double yOld;
|
||||
public double zOld;
|
||||
- private float maxUpStep;
|
||||
+ public float maxUpStep; // Purpur - private -> public
|
||||
+ public float maxUpStep; // Purpur
|
||||
public boolean noPhysics;
|
||||
protected final RandomSource random;
|
||||
public final RandomSource random;
|
||||
public int tickCount;
|
||||
@@ -4852,7 +4853,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public float maxUpStep() {
|
||||
- return 0.0F;
|
||||
+ return maxUpStep;
|
||||
}
|
||||
|
||||
public void onExplosionHit(@Nullable Entity entity) {}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
index 1c7702a5c888846f93f8f80d3b854a26c11499be..14424afdb708df7f93caf6df45412ec721b5e1dd 100644
|
||||
index c2bd2e303f956d390319f6bbbe9a6492ebec5154..5abbc0caf90cafc1a06dfff158c158b1538f827c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -690,6 +690,7 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -676,6 +676,7 @@ public class ArmorStand extends LivingEntity {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
+ maxUpStep = level().purpurConfig.armorstandStepHeight;
|
||||
// Paper start
|
||||
// Paper start - Allow ArmorStands not to tick
|
||||
if (!this.canTick) {
|
||||
if (this.noTickPoseDirty) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c208253d9afcdaa18fdb1f020d3d385556190203..5875b0e956a91ddb89adfdcb97418cc1d72a1ddf 100644
|
||||
index 4cd6d9309ed81956d59063fe4d229c6f930922ed..6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -90,6 +90,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
|
||||
index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b6631689f1b8 100644
|
||||
index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45f6d88990 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
|
||||
@@ -30,7 +30,7 @@ public class CatSpawner implements CustomSpawner {
|
||||
@@ -27,7 +27,7 @@ public class CatSpawner implements CustomSpawner {
|
||||
if (this.nextTick > 0) {
|
||||
return 0;
|
||||
} else {
|
||||
@@ -17,41 +17,36 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663
|
||||
Player player = world.getRandomPlayer();
|
||||
if (player == null) {
|
||||
return 0;
|
||||
@@ -63,11 +63,15 @@ public class CatSpawner implements CustomSpawner {
|
||||
}
|
||||
@@ -61,8 +61,12 @@ public class CatSpawner implements CustomSpawner {
|
||||
|
||||
private int spawnInVillage(ServerLevel world, BlockPos pos) {
|
||||
- int i = 48;
|
||||
int i = 48;
|
||||
- if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) {
|
||||
- List<Cat> list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(48.0, 8.0, 48.0));
|
||||
+ // Purpur start
|
||||
+ int range = world.purpurConfig.catSpawnVillageScanRange;
|
||||
+ if (range <= 0) return 0;
|
||||
+
|
||||
if (world.getPoiManager().getCountInRange((entry) -> {
|
||||
return entry.is(PoiTypes.HOME);
|
||||
- }, pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) {
|
||||
- List<Cat> list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(48.0D, 8.0D, 48.0D));
|
||||
+ }, pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) {
|
||||
+ List<Cat> list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range));
|
||||
+ // Purpur end
|
||||
+ if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) {
|
||||
+ List<Cat> list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range));
|
||||
+ // Purpur end
|
||||
if (list.size() < 5) {
|
||||
return this.spawnCat(pos, world);
|
||||
}
|
||||
@@ -77,8 +81,11 @@ public class CatSpawner implements CustomSpawner {
|
||||
}
|
||||
@@ -73,7 +77,11 @@ public class CatSpawner implements CustomSpawner {
|
||||
|
||||
private int spawnInHut(ServerLevel world, BlockPos pos) {
|
||||
- int i = 16;
|
||||
- List<Cat> list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(16.0D, 8.0D, 16.0D));
|
||||
int i = 16;
|
||||
- List<Cat> list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(16.0, 8.0, 16.0));
|
||||
+ // Purpur start
|
||||
+ int range = world.purpurConfig.catSpawnSwampHutScanRange;
|
||||
+ if (range <= 0) return 0;
|
||||
+ List<Cat> list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range));
|
||||
+ List<Cat> list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range));
|
||||
+ // Purpur end
|
||||
return list.size() < 1 ? this.spawnCat(pos, world) : 0;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 5875b0e956a91ddb89adfdcb97418cc1d72a1ddf..8f75164e9d877a61cc91886c1e1a7dd4026628c3 100644
|
||||
index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -272,6 +272,9 @@ public class PurpurWorldConfig {
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981611b0bc3 100644
|
||||
index bee1a275f242866206dc461461b7962e04289ddc..bda0d933ccbee613aa7fb31534351a0d2dbab0a7 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
@@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal;
|
||||
@@ -16,23 +16,24 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
@@ -30,6 +31,7 @@ import net.minecraft.world.item.ItemUtils;
|
||||
@@ -29,6 +30,7 @@ import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.ItemUtils;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.level.Level;
|
||||
+import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.joml.Vector3f;
|
||||
|
||||
@@ -73,6 +75,7 @@ public class Cow extends Animal {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||
// CraftBukkit start
|
||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||
@@ -73,7 +75,7 @@ public class Cow extends Animal {
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
|
||||
+ if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false));
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> {
|
||||
- return itemstack.is(ItemTags.COW_FOOD);
|
||||
+ return level().purpurConfig.cowFeedMushrooms > 0 && (itemstack.is(Blocks.RED_MUSHROOM.asItem()) || itemstack.is(Blocks.BROWN_MUSHROOM.asItem())) || itemstack.is(ItemTags.COW_FOOD); // Purpur
|
||||
}, false));
|
||||
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D));
|
||||
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D));
|
||||
@@ -128,6 +131,10 @@ public class Cow extends Animal {
|
||||
@@ -134,6 +136,10 @@ public class Cow extends Animal {
|
||||
|
||||
player.setItemInHand(hand, itemstack1);
|
||||
return InteractionResult.sidedSuccess(this.level().isClientSide);
|
||||
@@ -43,9 +44,9 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981
|
||||
} else {
|
||||
return super.mobInteract(player, hand);
|
||||
}
|
||||
@@ -148,4 +155,69 @@ public class Cow extends Animal {
|
||||
protected Vector3f getPassengerAttachmentPoint(Entity passenger, EntityDimensions dimensions, float scaleFactor) {
|
||||
return new Vector3f(0.0F, dimensions.height - 0.03125F * scaleFactor, 0.0F);
|
||||
@@ -149,4 +155,69 @@ public class Cow extends Animal {
|
||||
public EntityDimensions getDefaultDimensions(Pose pose) {
|
||||
return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose);
|
||||
}
|
||||
+
|
||||
+ // Purpur start - feed mushroom to change to mooshroom
|
||||
@@ -100,7 +101,7 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981
|
||||
+ return InteractionResult.PASS;
|
||||
+ }
|
||||
+ this.level().addFreshEntity(mooshroom);
|
||||
+ this.remove(RemovalReason.DISCARDED);
|
||||
+ this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD);
|
||||
+ if (!player.getAbilities().instabuild) {
|
||||
+ stack.shrink(1);
|
||||
+ }
|
||||
@@ -114,7 +115,7 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..d42c8bcd85ffb1e00d2883485bf22981
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8f75164e9d877a61cc91886c1e1a7dd4026628c3..3d222e3cdb95409d9d35ef8a9224814e94c4b333 100644
|
||||
index c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa..ab5960b9104d362852ee3d6ba151cf78dd58a0ee 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -342,6 +342,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
|
||||
index e3fe62285ced917de6817916e99483e117008670..c83e5d58ca5db1e63e099f36006043f7e78ea56f 100644
|
||||
index b47dddb2fc6058a90665ccbd362088d9a2e837b5..41b52f128fbc174939a7f2d1cd937ab19432de25 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
|
||||
@@ -198,7 +198,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
|
||||
@@ -218,7 +218,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
|
||||
// this.discard(); // CraftBukkit - moved down
|
||||
entitycow.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
|
||||
entitycow.setHealth(this.getHealth());
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Pigs give saddle back
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java
|
||||
index 6480e0f026e686b2d0a093d901d7f1e312a45021..dc27fa0df90f8eefc20bf76ff58b1b2ebaacf120 100644
|
||||
index a365573c5c5e640f165701bc79f7c605674c5709..4f84406304114abbaff9f96a5df6a48616983fa9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Pig.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java
|
||||
@@ -177,6 +177,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
|
||||
@@ -178,6 +178,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
|
||||
public InteractionResult mobInteract(Player player, InteractionHand hand) {
|
||||
boolean flag = this.isFood(player.getItemInHand(hand));
|
||||
|
||||
@@ -27,7 +27,7 @@ index 6480e0f026e686b2d0a093d901d7f1e312a45021..dc27fa0df90f8eefc20bf76ff58b1b2e
|
||||
if (!this.level().isClientSide) {
|
||||
player.startRiding(this);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 3d222e3cdb95409d9d35ef8a9224814e94c4b333..92d8babfa6c9a2ba90f7832110bc536e06e6f4f2 100644
|
||||
index ab5960b9104d362852ee3d6ba151cf78dd58a0ee..1c530384c9040236ce525329f37913cdd3e424ff 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -911,6 +911,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Snowman drop and put back pumpkin
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
index 3ffd9dd16c80399842ba138ed60abd66cd312dcb..bd9dd01e9140c2ad0ab9859b9a455f73ab04a253 100644
|
||||
index a54893d51cc1ce204e59a6ffe8b84228775af4da..0060414b1d5afde56372ce121e9d37a1668cd03b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -191,6 +191,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
@@ -189,6 +189,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
}
|
||||
|
||||
return InteractionResult.sidedSuccess(this.level().isClientSide);
|
||||
@@ -23,32 +23,22 @@ index 3ffd9dd16c80399842ba138ed60abd66cd312dcb..bd9dd01e9140c2ad0ab9859b9a455f73
|
||||
} else {
|
||||
return tryRide(player, hand); // Purpur
|
||||
}
|
||||
@@ -202,6 +210,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
if (!this.level().isClientSide()) {
|
||||
this.setPumpkin(false);
|
||||
this.forceDrops = true; // CraftBukkit
|
||||
+ if (level().purpurConfig.snowGolemDropsPumpkin) // Purpur
|
||||
this.spawnAtLocation(new ItemStack(Items.CARVED_PUMPKIN), 1.7F);
|
||||
this.forceDrops = false; // CraftBukkit
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 92d8babfa6c9a2ba90f7832110bc536e06e6f4f2..63d1acee8006afc72449f9b9dbb6807554dc7285 100644
|
||||
index 1c530384c9040236ce525329f37913cdd3e424ff..acec5455e9c16508ae474e1307e3cc234d17e6ee 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1174,6 +1174,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1176,6 +1176,7 @@ public class PurpurWorldConfig {
|
||||
public boolean snowGolemControllable = true;
|
||||
public boolean snowGolemLeaveTrailWhenRidden = false;
|
||||
public double snowGolemMaxHealth = 4.0D;
|
||||
+ public boolean snowGolemDropsPumpkin = true;
|
||||
+ public boolean snowGolemPutPumpkinBack = false;
|
||||
private void snowGolemSettings() {
|
||||
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
|
||||
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
|
||||
@@ -1185,6 +1187,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1187,6 +1188,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.snow_golem.attributes.max_health", oldValue);
|
||||
}
|
||||
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
|
||||
+ snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
|
||||
+ snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Ender dragon always drop full exp
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
index e50cf2e27900da6a9f7b4bb07fc4c2ee1ed52313..4149a7aea12cac04a2dfe29e071047de461eb3f4 100644
|
||||
index 0a7f87ac09f9ef6ad69974090f0d6f437d232b11..f751444603e4a1a2ef53e7232b5abfff82c316e8 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -747,7 +747,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -18,7 +18,7 @@ index e50cf2e27900da6a9f7b4bb07fc4c2ee1ed52313..4149a7aea12cac04a2dfe29e071047de
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 63d1acee8006afc72449f9b9dbb6807554dc7285..9948d2e6594dfa5b4e98e7aca29f1cd08c03479e 100644
|
||||
index acec5455e9c16508ae474e1307e3cc234d17e6ee..a9d6c6713a098ca87d62b43d491bc2d9a8590741 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -455,6 +455,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,20 +5,20 @@ Subject: [PATCH] Allow soil to moisten from water directly under it
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
index 5946f06f63b5694034bd027984a4925b0831d439..1776906e886edd511bfbe96b8a345438a3cd66f8 100644
|
||||
index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512df16fe3ac 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -162,7 +162,7 @@ public class FarmBlock extends Block {
|
||||
@@ -172,7 +172,7 @@ public class FarmBlock extends Block {
|
||||
}
|
||||
}
|
||||
|
||||
- return false;
|
||||
+ return ((ServerLevel) world).purpurConfig.farmlandGetsMoistFromBelow && world.getFluidState(pos.relative(Direction.DOWN)).is(FluidTags.WATER); // Purpur;
|
||||
// Paper end - Perf: remove abstract block iteration
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9948d2e6594dfa5b4e98e7aca29f1cd08c03479e..ed64be25581f407edcd15b8eac1c4effd9bb8728 100644
|
||||
index a9d6c6713a098ca87d62b43d491bc2d9a8590741..41b804abeab390a259eb0c8ed72f75ad403471dd 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -145,6 +145,11 @@ public class PurpurWorldConfig {
|
||||
@@ -30,6 +30,6 @@ index 9948d2e6594dfa5b4e98e7aca29f1cd08c03479e..ed64be25581f407edcd15b8eac1c4eff
|
||||
+ farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
||||
+ }
|
||||
+
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = false;
|
||||
public boolean turtleEggsBreakFromMinecarts = false;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 9918f6ac1066ccadd3eb2635450faaf5a4350523..85383b6a9d16b7cf7e928c4d9aaf7af932540091 100644
|
||||
index bc6a5de72d52627b3ceca4b52b95e12ceddf1247..a17de781053a2c2caf615e5ac48a45c14386b0af 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1109,6 +1109,7 @@ public class ServerPlayer extends Player {
|
||||
@@ -1189,6 +1189,7 @@ public class ServerPlayer extends Player {
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -17,12 +17,12 @@ index 9918f6ac1066ccadd3eb2635450faaf5a4350523..85383b6a9d16b7cf7e928c4d9aaf7af9
|
||||
|
||||
if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||
index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0fe0c01e8f 100644
|
||||
index 4d7454e5a64fc18e63793a221daa94617f17c666..97172e9c53c381d451111227feb4d1fa19d38ad8 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
|
||||
@@ -112,12 +112,14 @@ public abstract class AbstractMinecart extends Entity {
|
||||
private double flyingY = 0.949999988079071D; // Paper - restore vanilla precision
|
||||
private double flyingZ = 0.949999988079071D; // Paper - restore vanilla precision
|
||||
@@ -102,12 +102,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
||||
private double flyingY = 0.95;
|
||||
private double flyingZ = 0.95;
|
||||
public double maxSpeed = 0.4D;
|
||||
+ public double storedMaxSpeed; // Purpur
|
||||
// CraftBukkit end
|
||||
@@ -35,7 +35,7 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f
|
||||
}
|
||||
|
||||
protected AbstractMinecart(EntityType<?> type, Level world, double x, double y, double z) {
|
||||
@@ -342,6 +344,12 @@ public abstract class AbstractMinecart extends Entity {
|
||||
@@ -296,6 +298,12 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
@@ -48,7 +48,7 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f
|
||||
// CraftBukkit start
|
||||
double prevX = this.getX();
|
||||
double prevY = this.getY();
|
||||
@@ -499,16 +507,62 @@ public abstract class AbstractMinecart extends Entity {
|
||||
@@ -448,16 +456,62 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
||||
|
||||
public void activateMinecart(int x, int y, int z, boolean powered) {}
|
||||
|
||||
@@ -112,10 +112,10 @@ index 44a6118d3bd67a95180f750c17967561946e2e87..9d9d9cf2366441b453b66f91c53e7a0f
|
||||
this.move(MoverType.SELF, this.getDeltaMovement());
|
||||
if (!this.onGround()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java
|
||||
index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1ef819a5e 100644
|
||||
index 66074445d3908b9bb1c8d70e1e27d057720ec8e5..0fd4f2ab929df479360755a3f1e58a933ae59520 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/MinecartItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/MinecartItem.java
|
||||
@@ -122,8 +122,9 @@ public class MinecartItem extends Item {
|
||||
@@ -120,8 +120,9 @@ public class MinecartItem extends Item {
|
||||
BlockState iblockdata = world.getBlockState(blockposition);
|
||||
|
||||
if (!iblockdata.is(BlockTags.RAILS)) {
|
||||
@@ -126,8 +126,8 @@ index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1
|
||||
+ } // else { // Purpur - place minecarts anywhere
|
||||
ItemStack itemstack = context.getItemInHand();
|
||||
|
||||
if (!world.isClientSide) {
|
||||
@@ -151,6 +152,6 @@ public class MinecartItem extends Item {
|
||||
if (world instanceof ServerLevel) {
|
||||
@@ -146,6 +147,6 @@ public class MinecartItem extends Item {
|
||||
|
||||
itemstack.shrink(1);
|
||||
return InteractionResult.sidedSuccess(world.isClientSide);
|
||||
@@ -136,20 +136,20 @@ index a33395dc5a94d89b5ab273c7832813b6ff9ea3b7..2b2218e2de535ebc8f529f5b5bf98fa1
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
||||
index e6a4a5898ffdcb2aa2bc01371a6d7dbc06d610ce..443bed339884f78ecda8abdbcdc9b57ea9768cc9 100644
|
||||
index 2034ca2edd3aff61d94416266e75402babd3e741..3c1091f2a729b7d06ba6e21c37f788edb2ad1775 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
||||
@@ -89,7 +89,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||
@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||
protected final float jumpFactor;
|
||||
protected final boolean dynamicShape;
|
||||
protected final FeatureFlagSet requiredFeatures;
|
||||
- protected final BlockBehaviour.Properties properties;
|
||||
+ public final BlockBehaviour.Properties properties; // Purpur - protected -> public
|
||||
@Nullable
|
||||
protected ResourceLocation drops;
|
||||
protected ResourceKey<LootTable> drops;
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index ed64be25581f407edcd15b8eac1c4effd9bb8728..7290de61830b84ddc54f50353dd5c24a65192816 100644
|
||||
index 41b804abeab390a259eb0c8ed72f75ad403471dd..755d53e04bb0ed678bebc3497476e252dd5a736e 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -95,6 +95,68 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b738792689 100644
|
||||
index a3ee2af337acef86a15b12c9e6d8cd8452980a87..7b210484fd10e6e994c66afb45f8a28ffb5812f1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1838,6 +1838,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1864,6 +1864,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
|
||||
this.dropEquipment(); // CraftBukkit - from below
|
||||
if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||
@@ -16,7 +16,7 @@ index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b7
|
||||
this.dropFromLootTable(source, flag);
|
||||
// Paper start
|
||||
final boolean prev = this.clearEquipmentSlots;
|
||||
@@ -1846,6 +1847,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1872,6 +1873,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
// Paper end
|
||||
this.dropCustomDeathLoot(source, i, flag);
|
||||
this.clearEquipmentSlots = prev; // Paper
|
||||
@@ -25,7 +25,7 @@ index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b7
|
||||
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
|
||||
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7290de61830b84ddc54f50353dd5c24a65192816..807b1b1de4019f279618c6e02ab90bf230ed5e66 100644
|
||||
index 755d53e04bb0ed678bebc3497476e252dd5a736e..b7bf1a6e59e33d13887ae3d98f37658f52030e37 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -95,6 +95,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,30 +5,21 @@ Subject: [PATCH] Option to toggle milk curing bad omen
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/MilkBucketItem.java b/src/main/java/net/minecraft/world/item/MilkBucketItem.java
|
||||
index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af74fe2473 100644
|
||||
index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042356e3244 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/MilkBucketItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/MilkBucketItem.java
|
||||
@@ -5,6 +5,8 @@ import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.stats.Stats;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
+import net.minecraft.world.effect.MobEffectInstance;
|
||||
+import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
@@ -31,7 +33,9 @@ public class MilkBucketItem extends Item {
|
||||
}
|
||||
@@ -26,7 +26,9 @@ public class MilkBucketItem extends Item {
|
||||
|
||||
stack.consume(1, user);
|
||||
if (!world.isClientSide) {
|
||||
+ MobEffectInstance badOmen = user.getEffect(MobEffects.BAD_OMEN);
|
||||
+ net.minecraft.world.effect.MobEffectInstance badOmen = user.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); // Purpur
|
||||
user.removeAllEffects(org.bukkit.event.entity.EntityPotionEffectEvent.Cause.MILK); // CraftBukkit
|
||||
+ if (!world.purpurConfig.milkCuresBadOmen && badOmen != null) user.addEffect(badOmen); // Purpur
|
||||
}
|
||||
|
||||
return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 807b1b1de4019f279618c6e02ab90bf230ed5e66..e943bd03ea9010f7d7f877380c38a38aab396d9f 100644
|
||||
index b7bf1a6e59e33d13887ae3d98f37658f52030e37..40493cbb1b14f16549b95aa439e4c25c04a0627c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -96,8 +96,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,14 +5,14 @@ Subject: [PATCH] End gateway should check if entity can use portal
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
index 1ec80f9c901dff1c9f29befa5a8e3c3f6f37aaf7..9717b37aef9f487502e696c209ae209ab3b8f000 100644
|
||||
index 93bd70c1dc2ba8b893a6087730071c81fb1132f4..60b343edc4383c8bc450f106f483349850432fa3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
@@ -177,6 +177,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
||||
@@ -167,6 +167,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
||||
|
||||
public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) {
|
||||
if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) {
|
||||
if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) {
|
||||
+ if (!entity.canChangeDimensions()) return; // Purpur
|
||||
ServerLevel worldserver = (ServerLevel) world;
|
||||
|
||||
blockEntity.teleportCooldown = 100;
|
||||
BlockPos blockposition1;
|
||||
|
||||
@@ -5,18 +5,18 @@ Subject: [PATCH] Skip events if there's no listeners
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 3eec879bf3975636739b2491cc05b8177032d16d..a5829f0726fd92faae04f978c82b2f0736bcd50b 100644
|
||||
index aa2fca6917fb67fe0e9ba067d11487c3a274f675..5c7287ef8c2d59215aff81cb138a55676bfa6356 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -462,6 +462,7 @@ public class Commands {
|
||||
@@ -501,6 +501,7 @@ public class Commands {
|
||||
private void runSync(ServerPlayer player, Collection<String> bukkit, RootCommandNode<SharedSuggestionProvider> rootcommandnode) {
|
||||
// Paper end - Async command map building
|
||||
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper
|
||||
// Paper end - Perf: Async command map building
|
||||
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper - Brigadier API
|
||||
+ if (PlayerCommandSendEvent.getHandlerList().getRegisteredListeners().length > 0) { // Purpur - skip all this crap if there's nothing listening
|
||||
PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit));
|
||||
event.getPlayer().getServer().getPluginManager().callEvent(event);
|
||||
|
||||
@@ -472,6 +473,7 @@ public class Commands {
|
||||
@@ -511,6 +512,7 @@ public class Commands {
|
||||
}
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index cf03faf3207f886b03b0e90ad6f4ce5310db428c..1eafc1854d47002d683f625f4c164290eee59181 100644
|
||||
index f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd..338808ba1138f62d89f3f1338a4c5068426df0e4 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1156,6 +1156,7 @@ public abstract class PlayerList {
|
||||
@@ -1180,6 +1180,7 @@ public abstract class PlayerList {
|
||||
} else {
|
||||
b0 = (byte) (24 + permissionLevel);
|
||||
}
|
||||
@@ -5,26 +5,24 @@ Subject: [PATCH] Configurable TPS Catchup
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14..57f2b54ad36d33e76e538895df691987c869a043 100644
|
||||
index dfa332c4ff52033eb95248518bc44bbd22697697..f3ad4ee45ba48a10bbae1084f291ae0bcccdf624 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1160,7 +1160,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.tickServer(this::haveTime);
|
||||
@@ -1240,6 +1240,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.profiler.popPush("nextTickWait");
|
||||
this.mayHaveDelayedTasks = true;
|
||||
- this.delayedTasksMaxNextTickTime = Math.max(Util.getMillis() + 50L, this.nextTickTime);
|
||||
+ // Purpur start - tps catchup
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.tpsCatchup) {
|
||||
+ this.delayedTasksMaxNextTickTime = Math.max(Util.getMillis() + 50L, this.nextTickTime);
|
||||
+ } else {
|
||||
+ this.delayedTasksMaxNextTickTime = this.nextTickTime = curTime / 1000000L + 50L;
|
||||
+ }
|
||||
+ // Purpur end - tps catchup
|
||||
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + i, this.nextTickTimeNanos);
|
||||
+ // Purpur start
|
||||
+ if (!org.purpurmc.purpur.PurpurConfig.tpsCatchup) {
|
||||
+ this.nextTickTimeNanos = currentTime + i;
|
||||
+ this.delayedTasksMaxNextTickTimeNanos = nextTickTimeNanos;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
this.startMeasuringTaskExecutionTime();
|
||||
this.waitUntilNextTick();
|
||||
this.profiler.pop();
|
||||
this.endMetricsRecordingTick();
|
||||
this.finishMeasuringTaskExecutionTime();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 308d7556f5b12c0aa5b2fde5a23ef6fbacb303de..e2edbb0842862b8ffdf30cec104a1d71a71e92e0 100644
|
||||
index a14879f4266c71b7493c05e105114590c6709045..909cfeba89c2370adc2eebf72ba8ad46d33bce7b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -248,4 +248,9 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to allow loyalty on tridents to work in the void
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
index a6bc277b6589dd7104566542733327822d6299a4..dde841cc09ba4a3575a462b03537887551d47ba5 100644
|
||||
index 3ff06cc6ad35567bcb1f29115db63c11a8e79dbb..f7dd785bdb0dbd0706b367b48235215ff1a0e08f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
@@ -62,7 +62,7 @@ public class ThrownTrident extends AbstractArrow {
|
||||
@@ -67,7 +67,7 @@ public class ThrownTrident extends AbstractArrow {
|
||||
Entity entity = this.getOwner();
|
||||
byte b0 = (Byte) this.entityData.get(ThrownTrident.ID_LOYALTY);
|
||||
|
||||
@@ -18,7 +18,7 @@ index a6bc277b6589dd7104566542733327822d6299a4..dde841cc09ba4a3575a462b035378875
|
||||
if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) {
|
||||
this.spawnAtLocation(this.getPickupItem(), 0.1F);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index e943bd03ea9010f7d7f877380c38a38aab396d9f..9bac609bcd1cca55a9e92b5959e64910b16c3b58 100644
|
||||
index 40493cbb1b14f16549b95aa439e4c25c04a0627c..a5ec746fc30af0093430bb7a7f6848081220ec57 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -97,9 +97,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,23 +5,23 @@ Subject: [PATCH] Add enderman and creeper griefing controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
index a1e3f29ce49dc41ad70f74ee224250fe9ebea175..5bfeb39a23a72f57523a3c2db1d79c7aef70eb02 100644
|
||||
index 84114356ea4c06998572c03f2e2a75b49e539980..98c93c46694f1e67be803a7ca0c0f55532df2e95 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -362,7 +362,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
if (!event.isCancelled()) {
|
||||
// CraftBukkit end
|
||||
this.dead = true;
|
||||
- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit
|
||||
+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Purpur
|
||||
this.discard();
|
||||
- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API
|
||||
+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API // Purpur
|
||||
this.discard(EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
|
||||
this.spawnLingeringCloud();
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 36e2d5873f8de180bda97acbad2fed4da5b02872..86581579aed4d8bd18c7b7ea58e2dc4fee5315ba 100644
|
||||
index 3abfc4f449552ec60a1f7c4e3faa9fd0ebfdc300..89275ac02fcfab963b520efae6135d6f5ac13465 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -547,6 +547,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -524,6 +524,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
@@ -29,7 +29,7 @@ index 36e2d5873f8de180bda97acbad2fed4da5b02872..86581579aed4d8bd18c7b7ea58e2dc4f
|
||||
return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
||||
}
|
||||
|
||||
@@ -592,6 +593,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -569,6 +570,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
@@ -38,7 +38,7 @@ index 36e2d5873f8de180bda97acbad2fed4da5b02872..86581579aed4d8bd18c7b7ea58e2dc4f
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9bac609bcd1cca55a9e92b5959e64910b16c3b58..2bed8409b399188955a1de405b3e0de4498f8674 100644
|
||||
index a5ec746fc30af0093430bb7a7f6848081220ec57..b266fc52508106f1f0f449b8eb900e4c04316fec 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -437,6 +437,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Villagers follow emerald blocks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
index 0d9b194781d152e842c9a4b8d6f23d307b2e4452..00cf59524477ec79d4354cc403fc3e75a63b81a0 100644
|
||||
index 13f8c2cb42334ba3b573ca44ace1d3df76e41ff7..baca552e52c728867fcb0527b6c3eb394b2b9c7f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
@@ -62,7 +62,7 @@ public class TemptGoal extends Goal {
|
||||
@@ -64,7 +64,7 @@ public class TemptGoal extends Goal {
|
||||
}
|
||||
|
||||
private boolean shouldFollow(LivingEntity entity) {
|
||||
@@ -18,10 +18,10 @@ index 0d9b194781d152e842c9a4b8d6f23d307b2e4452..00cf59524477ec79d4354cc403fc3e75
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
index 5119d070dbb04f5a4f9c2def526e33e15ca8573f..d5408629801716ccb227b6a7068d17495ed3d0fb 100644
|
||||
index d323cf157f2a910916baa9ce3f7e5bc81648c47d..6cbbca1db5362fa2dd5c5704c7fbaa612d3cbab1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
@@ -42,6 +42,7 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
|
||||
@@ -48,6 +48,7 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
|
||||
// CraftBukkit end
|
||||
|
||||
public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant {
|
||||
@@ -30,10 +30,10 @@ index 5119d070dbb04f5a4f9c2def526e33e15ca8573f..d5408629801716ccb227b6a7068d1749
|
||||
// CraftBukkit start
|
||||
private CraftMerchant craftMerchant;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 95df7d57c3aaa46f09f37996a89d88aa9e9383b4..d92a151fa308dd9cbf49e4ab6c581feeb3080519 100644
|
||||
index ff86c7d4878e43fc9d375b9b60213a2271b92cff..fad0d393a96d818e90aaa42f3d8d32fa97f7b337 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -155,6 +155,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -154,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
this.getNavigation().setCanFloat(true);
|
||||
this.setCanPickUpLoot(true);
|
||||
this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE));
|
||||
@@ -42,10 +42,10 @@ index 95df7d57c3aaa46f09f37996a89d88aa9e9383b4..d92a151fa308dd9cbf49e4ab6c581fee
|
||||
|
||||
// Purpur start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
index 9178c018c8e008b46a978bb95c244abf986f93d9..c1c41990bc53c822aa170e3d69924437f4a25115 100644
|
||||
index ac3cca0db4478841f91d966bd49ca4e5b5e91229..30f13bc35a96950f05b065b5c77830834e5792d1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
@@ -112,6 +112,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
@@ -113,6 +113,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5D));
|
||||
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
|
||||
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0D, 0.35D));
|
||||
@@ -54,7 +54,7 @@ index 9178c018c8e008b46a978bb95c244abf986f93d9..c1c41990bc53c822aa170e3d69924437
|
||||
this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D));
|
||||
this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F));
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 2bed8409b399188955a1de405b3e0de4498f8674..b78702f6d2cb36d720c6ef59e5414ca381af08a1 100644
|
||||
index b266fc52508106f1f0f449b8eb900e4c04316fec..f42a1205a66f4842ca43aad456dcb42481c041e9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1435,6 +1435,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,22 +5,22 @@ Subject: [PATCH] Allow leashing villagers
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 785421bc26d86c91983ab501fbc7484bbb389112..b6fd8797d791a60505f8389a38ef6626407a4dbf 100644
|
||||
index 26b03594b6ccd69ca35156472e27543d11ba2077..3d5f08d673f6b95c8f87070345f1fb200b5f4bde 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -1318,6 +1318,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -1450,6 +1450,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
if (!this.isAlive()) {
|
||||
return InteractionResult.PASS;
|
||||
} else if (this.getLeashHolder() == player) {
|
||||
+ if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur
|
||||
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
||||
// Paper start - drop leash variable
|
||||
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild);
|
||||
// Paper start - Expand EntityUnleashEvent
|
||||
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index d92a151fa308dd9cbf49e4ab6c581feeb3080519..616a6c78a056839575b4dabfeebb7cb2dce25026 100644
|
||||
index fad0d393a96d818e90aaa42f3d8d32fa97f7b337..051940da69567274f48485f060cbc3ac21a0907f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -185,6 +185,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -184,6 +184,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth);
|
||||
}
|
||||
|
||||
@@ -33,10 +33,10 @@ index d92a151fa308dd9cbf49e4ab6c581feeb3080519..616a6c78a056839575b4dabfeebb7cb2
|
||||
public Brain<Villager> getBrain() {
|
||||
return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
index c1c41990bc53c822aa170e3d69924437f4a25115..31daa61db84fcb3cde7ec4b18b32aba350ab2cfb 100644
|
||||
index 30f13bc35a96950f05b065b5c77830834e5792d1..9d5eaaf1869a3ecb61947ab0c09af558fa1cd283 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
@@ -92,6 +92,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
@@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ index c1c41990bc53c822aa170e3d69924437f4a25115..31daa61db84fcb3cde7ec4b18b32aba3
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b78702f6d2cb36d720c6ef59e5414ca381af08a1..cb46d1527a5f7f9b3c06aea27a55d98b7b6e734e 100644
|
||||
index f42a1205a66f4842ca43aad456dcb42481c041e9..c07064174a0ef81a9bbe628251ee1346af890ae0 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1436,6 +1436,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement infinite liquids
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
|
||||
index c55f51e6db55f9fa66f53eef0e7a56af5f81d742..74688f4672936cd2ac629b9f2f404163df6730e9 100644
|
||||
index c2943d892b067b3f1fb3b93301a092e912d71f08..a091c51476214977d7a9729b5c72e8478fe4a391 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
|
||||
@@ -228,7 +228,7 @@ public abstract class FlowingFluid extends Fluid {
|
||||
@@ -217,7 +217,7 @@ public abstract class FlowingFluid extends Fluid {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ index c55f51e6db55f9fa66f53eef0e7a56af5f81d742..74688f4672936cd2ac629b9f2f404163
|
||||
BlockState iblockdata2 = world.getBlockState(pos.below());
|
||||
FluidState fluid1 = iblockdata2.getFluidState();
|
||||
|
||||
@@ -337,6 +337,12 @@ public abstract class FlowingFluid extends Fluid {
|
||||
@@ -301,6 +301,12 @@ public abstract class FlowingFluid extends Fluid {
|
||||
|
||||
protected abstract boolean canConvertToSource(Level world);
|
||||
|
||||
@@ -31,7 +31,7 @@ index c55f51e6db55f9fa66f53eef0e7a56af5f81d742..74688f4672936cd2ac629b9f2f404163
|
||||
if (state.getBlock() instanceof LiquidBlockContainer) {
|
||||
((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
index c3f8e1e2dd89c168b8b4a15b589109db486bc8d7..2076e4b433e0a57e3ae7053c1df77e0cdc457fc9 100644
|
||||
index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff1101b50a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
@@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid {
|
||||
@@ -49,10 +49,10 @@ index c3f8e1e2dd89c168b8b4a15b589109db486bc8d7..2076e4b433e0a57e3ae7053c1df77e0c
|
||||
protected boolean canConvertToSource(Level world) {
|
||||
return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
|
||||
index d280c98aed5262c4ce39526c917de884f25a8584..e7d9f6802520620a1dcf0938256ffe80fc72a6f0 100644
|
||||
index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe6098485d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
|
||||
@@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid {
|
||||
@@ -80,6 +80,13 @@ public abstract class WaterFluid extends FlowingFluid {
|
||||
return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION);
|
||||
}
|
||||
|
||||
@@ -63,11 +63,11 @@ index d280c98aed5262c4ce39526c917de884f25a8584..e7d9f6802520620a1dcf0938256ffe80
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
// Paper start
|
||||
// Paper start - Add BlockBreakBlockEvent
|
||||
@Override
|
||||
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index cb46d1527a5f7f9b3c06aea27a55d98b7b6e734e..e06739783b33e72bf43e577f0f7931ad243a48c9 100644
|
||||
index c07064174a0ef81a9bbe628251ee1346af890ae0..5e9ce4502f5219b941ffc6f341c95d39755af664 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -221,6 +221,11 @@ public class PurpurWorldConfig {
|
||||
@@ -79,9 +79,9 @@ index cb46d1527a5f7f9b3c06aea27a55d98b7b6e734e..e06739783b33e72bf43e577f0f7931ad
|
||||
+ lavaInfiniteRequiredSources = getInt("blocks.lava.infinite-required-sources", lavaInfiniteRequiredSources);
|
||||
+ }
|
||||
+
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = false;
|
||||
public boolean turtleEggsBreakFromMinecarts = false;
|
||||
@@ -230,6 +235,11 @@ public class PurpurWorldConfig {
|
||||
turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Make lava flow speed configurable
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
index 2076e4b433e0a57e3ae7053c1df77e0cdc457fc9..70ddb3b130ee59a6e200ea5af3ac89f3c3fa9e9b 100644
|
||||
index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89bf19a962 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
|
||||
@@ -180,7 +180,7 @@ public abstract class LavaFluid extends FlowingFluid {
|
||||
@@ -18,7 +18,7 @@ index 2076e4b433e0a57e3ae7053c1df77e0cdc457fc9..70ddb3b130ee59a6e200ea5af3ac89f3
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index e06739783b33e72bf43e577f0f7931ad243a48c9..d85062beff8ee3b1c6141d433e133be8374e08d8 100644
|
||||
index 5e9ce4502f5219b941ffc6f341c95d39755af664..09c131e3b5282d1ac1230ddc2677f2a49449dc48 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -222,8 +222,12 @@ public class PurpurWorldConfig {
|
||||
@@ -33,4 +33,4 @@ index e06739783b33e72bf43e577f0f7931ad243a48c9..d85062beff8ee3b1c6141d433e133be8
|
||||
+ lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
|
||||
}
|
||||
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
index 535fe476ebe5b791cae7a4013c4a498b89d047e3..dd7e47ddde00e0b4f3b9833c1793246547ba0cf2 100644
|
||||
index d5383e9cbbee2f9d4223319ae38abed41a13cfb3..a838f339dd0085660164b0eb1597e0a14e4de6f4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -2004,9 +2004,19 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -1962,9 +1962,19 @@ public abstract class Player extends LivingEntity {
|
||||
@Override
|
||||
public int getExperienceReward() {
|
||||
if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
|
||||
@@ -32,7 +32,7 @@ index 535fe476ebe5b791cae7a4013c4a498b89d047e3..dd7e47ddde00e0b4f3b9833c17932465
|
||||
return 0;
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index d85062beff8ee3b1c6141d433e133be8374e08d8..189b59cd6218e8e6b7f7c0326211e1b6545e9ca3 100644
|
||||
index 09c131e3b5282d1ac1230ddc2677f2a49449dc48..66e12893bb9d8984a8cd2916834c5e86058f47bb 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -171,6 +171,8 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index a5f54e2c17f618b99c76281b45d005280e4e31f9..790c6c677cd83bd4158e1567e51b7669fc219178 100644
|
||||
index 429d1a3fd7a75fe3dc8eb8d467ad4f2bd99e0212..f0ba7603795eb1fde01dc86cd3d8b02d73a55869 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -860,7 +860,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -948,7 +948,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
|
||||
public void checkBelowWorld() {
|
||||
// Paper start - Configurable nether ceiling damage
|
||||
@@ -16,12 +16,12 @@ index a5f54e2c17f618b99c76281b45d005280e4e31f9..790c6c677cd83bd4158e1567e51b7669
|
||||
+ if (this.getY() < (double) (this.level.getMinBuildHeight() + level().purpurConfig.voidDamageHeight) || (this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER // Purpur
|
||||
&& this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v)
|
||||
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
|
||||
// Paper end
|
||||
// Paper end - Configurable nether ceiling damage
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index c22b07728dde5807873004e4037ce3b738792689..8b25c2f8b089caf3fa03ff73d65be5c2f442a5d3 100644
|
||||
index 7b210484fd10e6e994c66afb45f8a28ffb5812f1..ed8833ed95584cdf9be2b931915277c04beac6ee 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -2538,7 +2538,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -2592,7 +2592,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
|
||||
@Override
|
||||
protected void onBelowWorld() {
|
||||
@@ -31,7 +31,7 @@ index c22b07728dde5807873004e4037ce3b738792689..8b25c2f8b089caf3fa03ff73d65be5c2
|
||||
|
||||
protected void updateSwingTime() {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 189b59cd6218e8e6b7f7c0326211e1b6545e9ca3..9311e620a821bbd46d962dd01ef9b0c1ec99555f 100644
|
||||
index 66e12893bb9d8984a8cd2916834c5e86058f47bb..03c35e455b405517114ffc043732359c112e343f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -98,10 +98,14 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 790c6c677cd83bd4158e1567e51b7669fc219178..ea1ecc287a75860fd8275d604fb9b130d355894b 100644
|
||||
index f0ba7603795eb1fde01dc86cd3d8b02d73a55869..a99d04b820c230422bc82a3e0e094a79ab0c5c33 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -492,6 +492,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -558,6 +558,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -20,38 +20,38 @@ index 790c6c677cd83bd4158e1567e51b7669fc219178..ea1ecc287a75860fd8275d604fb9b130
|
||||
return this.hardCollides;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
index 937f57d8af629c4e913d7ccabf6adab15f91d3d0..f40ab9d5b18c189ba9b572e49243640bd44362d1 100644
|
||||
index 4117260538e47c978ea31c76f439d43369ebedfb..c753f715710ec4bb8337e035ac5a4c11371a84a0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
@@ -115,6 +115,11 @@ public class WitherSkull extends AbstractHurtingProjectile {
|
||||
@@ -117,6 +117,11 @@ public class WitherSkull extends AbstractHurtingProjectile {
|
||||
// do not hit rider
|
||||
return target != this.getRider() && super.canHitEntity(target);
|
||||
}
|
||||
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean canSaveToDisk() {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
public boolean isPickable() {
|
||||
return false;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
index 060e064625969610539dbf969ce773b877a7c579..32cd9df202704cdfb8fa06aaf0e738d483054feb 100644
|
||||
index bee39dee1b96023c907407877aedf3aafaf5e1b8..5b6bc200381a486c99061f9f5b7121c2c355b477 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
@@ -112,6 +112,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
|
||||
@@ -107,6 +107,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
|
||||
ListTag listTag = new ListTag();
|
||||
final java.util.Map<net.minecraft.world.entity.EntityType<?>, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper
|
||||
final java.util.Map<net.minecraft.world.entity.EntityType<?>, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper - Entity load/save limit per chunk
|
||||
entities.forEach((entity) -> { // diff here: use entities parameter
|
||||
+ if (!entity.canSaveToDisk()) return; // Purpur
|
||||
// Paper start
|
||||
// Paper start - Entity load/save limit per chunk
|
||||
final EntityType<?> entityType = entity.getType();
|
||||
final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
|
||||
index af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e..ce614ae6b1fa0b31c1ee8dacb69134bb20c949f4 100644
|
||||
index 89c476c740b4efb4f44c1dcd384b908626d96780..f25abee6dbf99c8d08f8e09db02b41df86115faa 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
|
||||
@@ -35,6 +35,13 @@ public class DolphinSpit extends LlamaSpit {
|
||||
@@ -36,6 +36,13 @@ public class DolphinSpit extends LlamaSpit {
|
||||
dolphin.getZ() + (double) (dolphin.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(dolphin.yBodyRot * 0.017453292F));
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ index af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e..ce614ae6b1fa0b31c1ee8dacb69134bb
|
||||
super_tick();
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
|
||||
index 1fd6412e332ea8ee82b19c108e113624e51d764b..ea8b928b6d82689e71bbcc39ab497491072dfba6 100644
|
||||
index c0b7e0eeffdf31b88662232b07944bf3e6fa2148..75e31aee6e706f042398444f272888f9ad0fa3f4 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
|
||||
@@ -38,6 +38,13 @@ public class PhantomFlames extends LlamaSpit {
|
||||
@@ -5,18 +5,18 @@ Subject: [PATCH] Dispenser curse of binding protection
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index b6fd8797d791a60505f8389a38ef6626407a4dbf..92e74dd04e715650b435537014bb89f15a112e19 100644
|
||||
index 3d5f08d673f6b95c8f87070345f1fb200b5f4bde..c4392a997061aa4939e5ad7dcacf5e39cbecc55a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -65,6 +65,7 @@ import net.minecraft.world.item.ProjectileWeaponItem;
|
||||
import net.minecraft.world.item.SpawnEggItem;
|
||||
@@ -75,6 +75,7 @@ import net.minecraft.world.item.SpawnEggItem;
|
||||
import net.minecraft.world.item.SwordItem;
|
||||
import net.minecraft.world.item.component.ItemAttributeModifiers;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
+import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.minecraft.world.level.Level;
|
||||
@@ -1176,6 +1177,12 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -1309,6 +1310,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
|
||||
}
|
||||
|
||||
@@ -30,10 +30,10 @@ index b6fd8797d791a60505f8389a38ef6626407a4dbf..92e74dd04e715650b435537014bb89f1
|
||||
public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) {
|
||||
switch (equipmentSlot) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
index 42d87800a328f71c5127ce5599ca4c71cc9bb1cd..7868c2f7b563792f8902d9a77dca46e0dcb82194 100644
|
||||
index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103459054f8 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
@@ -61,7 +61,7 @@ public class ArmorItem extends Item implements Equipable {
|
||||
@@ -69,7 +69,7 @@ public class ArmorItem extends Item implements Equipable {
|
||||
return false;
|
||||
} else {
|
||||
LivingEntity entityliving = (LivingEntity) list.get(0);
|
||||
@@ -43,7 +43,7 @@ index 42d87800a328f71c5127ce5599ca4c71cc9bb1cd..7868c2f7b563792f8902d9a77dca46e0
|
||||
// CraftBukkit start
|
||||
Level world = pointer.level();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9311e620a821bbd46d962dd01ef9b0c1ec99555f..2e2a347d341ef831aaf1a6b01fa2aeb82e76b810 100644
|
||||
index 03c35e455b405517114ffc043732359c112e343f..27c1f09be7d664073263a02a8854ff1e8c6f9ab1 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -224,6 +224,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option for boats to eject players on land
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
index 5c07da62c82bc70138f6cb5007629d6974be69ac..96f4ef06d16483bd4bb88cc36207d5bdc4bd1280 100644
|
||||
index b068cff9b5aa457d65b679529956e8210296d799..0b23e05f936cab7a9867828c2d69417cfde1d2ce 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
@@ -578,6 +578,7 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
|
||||
@@ -514,6 +514,7 @@ public class Boat extends VehicleEntity implements VariantHolder<Boat.Type> {
|
||||
|
||||
if (f > 0.0F) {
|
||||
this.landFriction = f;
|
||||
@@ -17,7 +17,7 @@ index 5c07da62c82bc70138f6cb5007629d6974be69ac..96f4ef06d16483bd4bb88cc36207d5bd
|
||||
} else {
|
||||
return Boat.Status.IN_AIR;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 2e2a347d341ef831aaf1a6b01fa2aeb82e76b810..e2e95793c02521df51d9dbf76a22e11f96778f49 100644
|
||||
index 27c1f09be7d664073263a02a8854ff1e8c6f9ab1..76c1cfc35b598eab2ca27656feeb17f79dde7e00 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -95,12 +95,14 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Mending mends most damages equipment first
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
index eca634792d2a7cc649675e3394e84dbaf1453905..2bd576849403bc2cfae298c2210616192ddc38db 100644
|
||||
index a207a31d80a302dbdfe80f8727222542d3a78da2..7ca70e9ddda24e2fe661c7b13fa439a6c19726dd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
@@ -331,7 +331,7 @@ public class ExperienceOrb extends Entity {
|
||||
@@ -338,7 +338,7 @@ public class ExperienceOrb extends Entity {
|
||||
}
|
||||
|
||||
private int repairPlayerItems(Player player, int amount) {
|
||||
@@ -18,17 +18,17 @@ index eca634792d2a7cc649675e3394e84dbaf1453905..2bd576849403bc2cfae298c221061619
|
||||
if (entry != null) {
|
||||
ItemStack itemstack = (ItemStack) entry.getValue();
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index 4697df75fdee2023c41260bed211e3e3d90d2b9b..25be1927304e497a6ebf9d9ec09525a5418095db 100644
|
||||
index a45389d64c04cd4c2a35fbc511595be0535a8665..e51bbab02b816a431f18c520fc67eeb1880fbfa0 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -589,6 +589,16 @@ public final class ItemStack {
|
||||
@@ -636,6 +636,16 @@ public final class ItemStack implements DataComponentHolder {
|
||||
return this.isDamageableItem() && this.getDamageValue() > 0;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ public float getDamagePercent() {
|
||||
+ if (isDamaged()) {
|
||||
+ return (float) getDamageValue() / (float) getItem().getMaxDamage();
|
||||
+ return (float) getDamageValue() / (float) getMaxDamage();
|
||||
+ } else {
|
||||
+ return 0F;
|
||||
+ }
|
||||
@@ -36,13 +36,13 @@ index 4697df75fdee2023c41260bed211e3e3d90d2b9b..25be1927304e497a6ebf9d9ec09525a5
|
||||
+ // Purpur end
|
||||
+
|
||||
public int getDamageValue() {
|
||||
return this.tag == null ? 0 : this.tag.getInt("Damage");
|
||||
return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647678009fa 100644
|
||||
index d2f0463b0e74983eb2e3dfca9a268e9502b86257..6d0363cec691996be416ab22ef9d825196399158 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
@@ -278,6 +278,29 @@ public class EnchantmentHelper {
|
||||
@@ -237,6 +237,29 @@ public class EnchantmentHelper {
|
||||
return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0;
|
||||
}
|
||||
|
||||
@@ -70,10 +70,10 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647
|
||||
+ // Purpur end
|
||||
+
|
||||
@Nullable
|
||||
public static Map.Entry<EquipmentSlot, ItemStack> getRandomItemWith(Enchantment enchantment, LivingEntity entity) {
|
||||
return getRandomItemWith(enchantment, entity, (stack) -> {
|
||||
public static java.util.Map.Entry<EquipmentSlot, ItemStack> getRandomItemWith(Enchantment enchantment, LivingEntity entity) {
|
||||
return getRandomItemWith(enchantment, entity, stack -> true);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index e2e95793c02521df51d9dbf76a22e11f96778f49..c48fae071a538a11739193f782232edfafb14de4 100644
|
||||
index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -95,6 +95,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,41 +5,32 @@ Subject: [PATCH] Add 5 second tps average in /tps
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java
|
||||
index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf21641a2200c 100644
|
||||
index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53ccdee01430 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java
|
||||
@@ -58,7 +58,7 @@ public class RAMDetails extends JList<String> {
|
||||
GraphData data = RAMGraph.DATA.peekLast();
|
||||
Vector<String> vector = new Vector<>();
|
||||
|
||||
- double[] tps = new double[] {server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage()};
|
||||
+ double[] tps = new double[] {server.tps5s.getAverage(), server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage()}; // Purpur
|
||||
String[] tpsAvg = new String[tps.length];
|
||||
|
||||
for ( int g = 0; g < tps.length; g++) {
|
||||
@@ -67,7 +67,7 @@ public class RAMDetails extends JList<String> {
|
||||
@@ -68,7 +68,7 @@ public class RAMDetails extends JList<String> {
|
||||
vector.add("Memory use: " + (data.getUsedMem() / 1024L / 1024L) + " mb (" + (data.getFree() * 100L / data.getMax()) + "% free)");
|
||||
vector.add("Heap: " + (data.getTotal() / 1024L / 1024L) + " / " + (data.getMax() / 1024L / 1024L) + " mb");
|
||||
vector.add("Avg tick: " + DECIMAL_FORMAT.format(getAverage(server.tickTimes)) + " ms");
|
||||
vector.add("Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / (double) TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms");
|
||||
- vector.add("TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg));
|
||||
+ vector.add("TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg)); // Purpur
|
||||
|
||||
setListData(vector);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 57f2b54ad36d33e76e538895df691987c869a043..c29f8291b43a2e92e3444ab72dd23065a006f11f 100644
|
||||
index f3ad4ee45ba48a10bbae1084f291ae0bcccdf624..3a622f5274f036608950702291c1e624488a6faa 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -297,7 +297,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public static final int TPS = 20;
|
||||
@@ -310,7 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS;
|
||||
private static final int SAMPLE_INTERVAL = 20; // Paper
|
||||
private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop
|
||||
@Deprecated(forRemoval = true) // Paper
|
||||
- public final double[] recentTps = new double[ 3 ];
|
||||
+ public final double[] recentTps = new double[ 4 ]; // Purpur
|
||||
// Spigot end
|
||||
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations;
|
||||
public static long currentTickLong = 0L; // Paper
|
||||
@@ -1034,6 +1034,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files
|
||||
public static long currentTickLong = 0L; // Paper - track current tick as a long
|
||||
@@ -1086,6 +1086,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
|
||||
private long lastTick = 0;
|
||||
private long catchupTime = 0;
|
||||
@@ -47,41 +38,55 @@ index 57f2b54ad36d33e76e538895df691987c869a043..c29f8291b43a2e92e3444ab72dd23065
|
||||
public final RollingAverage tps1 = new RollingAverage(60);
|
||||
public final RollingAverage tps5 = new RollingAverage(60 * 5);
|
||||
public final RollingAverage tps15 = new RollingAverage(60 * 15);
|
||||
@@ -1134,13 +1135,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
{
|
||||
final long diff = curTime - tickSection;
|
||||
java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
|
||||
+ tps5s.add(currentTps, diff); // Purpur
|
||||
@@ -1208,14 +1209,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
|
||||
final long diff = currentTime - tickSection;
|
||||
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
|
||||
+ tps5s.add(currentTps, diff); // Purpur
|
||||
tps1.add(currentTps, diff);
|
||||
tps5.add(currentTps, diff);
|
||||
tps15.add(currentTps, diff);
|
||||
|
||||
// Backwards compat with bad plugins
|
||||
- this.recentTps[0] = tps1.getAverage();
|
||||
- this.recentTps[1] = tps5.getAverage();
|
||||
- this.recentTps[2] = tps15.getAverage();
|
||||
+ // Purpur start
|
||||
+ this.recentTps[0] = tps5s.getAverage();
|
||||
+ this.recentTps[1] = tps1.getAverage();
|
||||
+ this.recentTps[2] = tps5.getAverage();
|
||||
+ this.recentTps[3] = tps15.getAverage();
|
||||
+ // Purpur end
|
||||
// Paper end
|
||||
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = curTime;
|
||||
+ // Purpur start
|
||||
+ this.recentTps[0] = tps5s.getAverage();
|
||||
+ this.recentTps[1] = tps1.getAverage();
|
||||
+ this.recentTps[2] = tps5.getAverage();
|
||||
+ this.recentTps[3] = tps15.getAverage();
|
||||
+ // Purpur end
|
||||
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = currentTime;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/gui/StatsComponent.java b/src/main/java/net/minecraft/server/gui/StatsComponent.java
|
||||
index 096c89bd01cec2abd151bf6fffc4847d1bcd548f..cd0a8a6a1be75cab8bbb8ee3ac17bb732b9e7108 100644
|
||||
--- a/src/main/java/net/minecraft/server/gui/StatsComponent.java
|
||||
+++ b/src/main/java/net/minecraft/server/gui/StatsComponent.java
|
||||
@@ -45,7 +45,7 @@ public class StatsComponent extends JComponent {
|
||||
this.msgs[1] = "Avg tick: "
|
||||
+ DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / (double)TimeUtil.NANOSECONDS_PER_MILLISECOND)
|
||||
+ " ms";
|
||||
- this.msgs[2] = "TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg);
|
||||
+ this.msgs[2] = "TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg); // Purpur
|
||||
// Paper end - Improve ServerGUI
|
||||
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
|
||||
this.repaint();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index dbe110d95095e5230d1711181e4b7a762662c2bb..da114737b3515b3f39aaa36c23a0d76699eb4239 100644
|
||||
index 6d8b433af8596dd5b5a3b04e901527cd50a31dec..6a61d03ca1e88f4d8fe66bfa6c29e1550b88a103 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -2876,6 +2876,7 @@ public final class CraftServer implements Server {
|
||||
@@ -3092,6 +3092,7 @@ public final class CraftServer implements Server {
|
||||
@Override
|
||||
public double[] getTPS() {
|
||||
return new double[] {
|
||||
+ net.minecraft.server.MinecraftServer.getServer().tps5s.getAverage(), // Purpur
|
||||
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
|
||||
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
|
||||
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
|
||||
+ net.minecraft.server.MinecraftServer.getServer().tps5s.getAverage(), // Purpur
|
||||
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
|
||||
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
|
||||
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
|
||||
diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||||
index bf970bf3356a914459c2d6db93537ce2d32c7e18..08221c7256f41ca511a4a61ffb2b979325aebee9 100644
|
||||
index 9eb2823cc8f83bad2626fc77578b0162d9ed5782..f144a08e88f8268b84eb188a36bf470457f59958 100644
|
||||
--- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||||
+++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||||
@@ -39,7 +39,7 @@ public class TicksPerSecondCommand extends Command
|
||||
@@ -89,7 +94,7 @@ index bf970bf3356a914459c2d6db93537ce2d32c7e18..08221c7256f41ca511a4a61ffb2b9793
|
||||
|
||||
net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text();
|
||||
- builder.append(net.kyori.adventure.text.Component.text("TPS from last 1m, 5m, 15m: ", net.kyori.adventure.text.format.NamedTextColor.GOLD));
|
||||
+ builder.append(net.kyori.adventure.text.Component.text("TPS from last 5s, 1m, 5m, 15m: ", net.kyori.adventure.text.format.NamedTextColor.GOLD));
|
||||
+ builder.append(net.kyori.adventure.text.Component.text("TPS from last 5s, 1m, 5m, 15m: ", net.kyori.adventure.text.format.NamedTextColor.GOLD)); // Purpur
|
||||
builder.append(net.kyori.adventure.text.Component.join(net.kyori.adventure.text.JoinConfiguration.commas(true), tpsAvg));
|
||||
sender.sendMessage(builder.asComponent());
|
||||
if (args.length > 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) {
|
||||
@@ -5,14 +5,14 @@ Subject: [PATCH] Implement elytra settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 8b25c2f8b089caf3fa03ff73d65be5c2f442a5d3..ee41bfa1a851340f291182f520c9cf1925a355af 100644
|
||||
index ed8833ed95584cdf9be2b931915277c04beac6ee..9a2725e3f61a7d37943518cc760b17859a0938bb 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -3559,7 +3559,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -3554,7 +3554,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
int j = i / 10;
|
||||
|
||||
if (j % 2 == 0) {
|
||||
- itemstack.hurtAndBreak(1, this, (entityliving) -> {
|
||||
- itemstack.hurtAndBreak(1, this, EquipmentSlot.CHEST);
|
||||
+ // Purpur start
|
||||
+ int damage = level().purpurConfig.elytraDamagePerSecond;
|
||||
+ if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) {
|
||||
@@ -21,43 +21,35 @@ index 8b25c2f8b089caf3fa03ff73d65be5c2f442a5d3..ee41bfa1a851340f291182f520c9cf19
|
||||
+ damage *= (int) speed;
|
||||
+ }
|
||||
+ }
|
||||
+ itemstack.hurtAndBreak(damage, this, (entityliving) -> {
|
||||
+ itemstack.hurtAndBreak(damage, this, EquipmentSlot.CHEST);
|
||||
+ // Purpur end
|
||||
entityliving.broadcastBreakEvent(EquipmentSlot.CHEST);
|
||||
});
|
||||
}
|
||||
|
||||
this.gameEvent(GameEvent.ELYTRA_GLIDE);
|
||||
diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
||||
index 82b0bda3e35ec2157a477e1a17b2b46baadc97d9..0fc45b1048a1c4e0dc2bd1ae0437eecbe113cf96 100644
|
||||
index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6978015dd 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
||||
@@ -15,6 +15,7 @@ import net.minecraft.util.ByIdMap;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
+import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.projectile.FireworkRocketEntity;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
@@ -69,6 +70,14 @@ public class FireworkRocketItem extends Item {
|
||||
com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity());
|
||||
@@ -65,6 +65,14 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
||||
com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand));
|
||||
if (event.callEvent() && world.addFreshEntity(fireworkRocketEntity)) {
|
||||
user.awardStat(Stats.ITEM_USED.get(this));
|
||||
+ // Purpur start
|
||||
+ if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) {
|
||||
+ ItemStack chestItem = user.getItemBySlot(EquipmentSlot.CHEST);
|
||||
+ ItemStack chestItem = user.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.CHEST);
|
||||
+ if (chestItem.getItem() == Items.ELYTRA) {
|
||||
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, (entityliving) -> entityliving.broadcastBreakEvent(EquipmentSlot.CHEST));
|
||||
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, net.minecraft.world.entity.EquipmentSlot.CHEST);
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
if (event.shouldConsume() && !user.getAbilities().instabuild) {
|
||||
itemStack.shrink(1);
|
||||
if (event.shouldConsume() && !user.hasInfiniteMaterials()) {
|
||||
itemStack.shrink(1);
|
||||
} else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index 25be1927304e497a6ebf9d9ec09525a5418095db..6e6f60554b36117a833949ef2f9a4b68f6518a1d 100644
|
||||
index e51bbab02b816a431f18c520fc67eeb1880fbfa0..b2c5581b126ceb9e47a13f6eda8cc132d11bfb09 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -618,7 +618,7 @@ public final class ItemStack {
|
||||
@@ -663,7 +663,7 @@ public final class ItemStack implements DataComponentHolder {
|
||||
int j;
|
||||
|
||||
if (amount > 0) {
|
||||
@@ -66,32 +58,32 @@ index 25be1927304e497a6ebf9d9ec09525a5418095db..6e6f60554b36117a833949ef2f9a4b68
|
||||
int k = 0;
|
||||
|
||||
for (int l = 0; j > 0 && l < amount; ++l) {
|
||||
@@ -673,6 +673,12 @@ public final class ItemStack {
|
||||
if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent
|
||||
breakCallback.accept(entity);
|
||||
Item item = this.getItem();
|
||||
+ // Purpur start
|
||||
+ if (item == Items.ELYTRA) {
|
||||
+ setDamageValue(item.getMaxDamage() - 1);
|
||||
+ return;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - Check for item breaking
|
||||
if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) {
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this);
|
||||
@@ -739,6 +739,12 @@ public final class ItemStack implements DataComponentHolder {
|
||||
this.hurtAndBreak(amount, randomsource, entity, () -> { // Paper - Add EntityDamageItemEvent
|
||||
entity.broadcastBreakEvent(slot);
|
||||
Item item = this.getItem();
|
||||
+ // Purpur start
|
||||
+ if (item == Items.ELYTRA) {
|
||||
+ setDamageValue(getMaxDamage() - 1);
|
||||
+ return;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - Check for item breaking
|
||||
if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) {
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this);
|
||||
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..06c2f30b77a2c8aecc65e0c305f643d53798f364 100644
|
||||
index 47de500fddb0716d142f8f5876a82a95afaa06fa..b094f4ec513194e10442156d8f7f2205da2384ac 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
@@ -130,6 +130,14 @@ public class TridentItem extends Item implements Vanishable {
|
||||
f2 *= f6 / f5;
|
||||
@@ -123,6 +123,14 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
f3 *= f6 / f5;
|
||||
f4 *= f6 / f5;
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f2, f3, f4); // CraftBukkit
|
||||
+
|
||||
+ // Purpur start
|
||||
+ ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST);
|
||||
+ if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) {
|
||||
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, (entity) -> entity.broadcastBreakEvent(EquipmentSlot.CHEST));
|
||||
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, EquipmentSlot.CHEST);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@@ -99,7 +91,7 @@ index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..06c2f30b77a2c8aecc65e0c305f643d5
|
||||
entityhuman.startAutoSpinAttack(20);
|
||||
if (entityhuman.onGround()) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c48fae071a538a11739193f782232edfafb14de4..b34f95b6104b1aebd8c07cf279e168cdb074efb9 100644
|
||||
index 6705d722e1abe678a5cb90503904dc7888bf55ee..88aabe09118cbbad3add3cee44e237580294f685 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -112,6 +112,19 @@ public class PurpurWorldConfig {
|
||||
@@ -5,26 +5,26 @@ Subject: [PATCH] Item entity immunities
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
index d46e61640b241d32df05240dedd2c23f138725e6..c6ef510d335b8baea58c4491853414a52a06b66b 100644
|
||||
index 4f103f731623a8570238a6867fda1c5f83fca4e4..39e7dcf3c92c9203c190782be401c00c010b8aeb 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -73,7 +73,7 @@ public class ServerEntity {
|
||||
@@ -77,7 +77,7 @@ public class ServerEntity {
|
||||
@Nullable
|
||||
private List<SynchedEntityData.DataValue<?>> trackedDataValues;
|
||||
// CraftBukkit start
|
||||
- final Set<ServerPlayerConnection> trackedPlayers; // Paper - private -> package
|
||||
+ public final Set<ServerPlayerConnection> trackedPlayers; // Paper - private -> package // Purpur - package -> public
|
||||
- private final Set<ServerPlayerConnection> trackedPlayers;
|
||||
+ public final Set<ServerPlayerConnection> trackedPlayers; // Purpur - private -> public
|
||||
|
||||
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
|
||||
this.trackedPlayers = trackedPlayers;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631bf897a29b 100644
|
||||
index 8fd3845c4965843be9c37498760d93f1ebdff541..7dae2a7c759fc3e004f806c59e083f52c3a460b2 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
@@ -56,6 +56,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
public boolean canMobPickup = true; // Paper
|
||||
private int despawnRate = -1; // Paper
|
||||
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper
|
||||
@@ -63,6 +63,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
public boolean canMobPickup = true; // Paper - Item#canEntityPickup
|
||||
private int despawnRate = -1; // Paper - Alternative item-despawn-rate
|
||||
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API
|
||||
+ // Purpur start
|
||||
+ public boolean immuneToCactus = false;
|
||||
+ public boolean immuneToExplosion = false;
|
||||
@@ -34,7 +34,7 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b
|
||||
|
||||
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -346,7 +352,16 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
@@ -371,7 +377,16 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
@@ -52,10 +52,10 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b
|
||||
return false;
|
||||
} else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) {
|
||||
return false;
|
||||
@@ -548,6 +563,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
@@ -579,6 +594,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||
public void setItem(ItemStack stack) {
|
||||
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
|
||||
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper
|
||||
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate
|
||||
+ // Purpur start
|
||||
+ if (level().purpurConfig.itemImmuneToCactus.contains(stack.getItem())) immuneToCactus = true;
|
||||
+ if (level().purpurConfig.itemImmuneToExplosion.contains(stack.getItem())) immuneToExplosion = true;
|
||||
@@ -66,10 +66,10 @@ index eb0351aa12eebcefab1d1d14641fc3c60cbbcab8..4f01fede54a3150798812d6e5116631b
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
||||
index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57d2016780 100644
|
||||
index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1ae17678f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
|
||||
@@ -154,4 +154,46 @@ public class CraftItem extends CraftEntity implements Item {
|
||||
@@ -151,4 +151,46 @@ public class CraftItem extends CraftEntity implements Item {
|
||||
public String toString() {
|
||||
return "CraftItem";
|
||||
}
|
||||
@@ -77,22 +77,22 @@ index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void setImmuneToCactus(boolean immuneToCactus) {
|
||||
+ item.immuneToCactus = immuneToCactus;
|
||||
+ this.getHandle().immuneToCactus = immuneToCactus;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isImmuneToCactus() {
|
||||
+ return item.immuneToCactus;
|
||||
+ return this.getHandle().immuneToCactus;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setImmuneToExplosion(boolean immuneToExplosion) {
|
||||
+ item.immuneToExplosion = immuneToExplosion;
|
||||
+ this.getHandle().immuneToExplosion = immuneToExplosion;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isImmuneToExplosion() {
|
||||
+ return item.immuneToExplosion;
|
||||
+ return this.getHandle().immuneToExplosion;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -102,22 +102,22 @@ index 5e83fabb20bc2b0668cbf48530053ca1bb9092f3..8fcee0e426cd598ddfd7e12df4382d57
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isImmuneToFire() {
|
||||
+ return item.immuneToFire;
|
||||
+ return this.getHandle().immuneToFire;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setImmuneToLightning(boolean immuneToLightning) {
|
||||
+ item.immuneToLightning = immuneToLightning;
|
||||
+ this.getHandle().immuneToLightning = immuneToLightning;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isImmuneToLightning() {
|
||||
+ return item.immuneToLightning;
|
||||
+ return this.getHandle().immuneToLightning;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b34f95b6104b1aebd8c07cf279e168cdb074efb9..fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae 100644
|
||||
index 88aabe09118cbbad3add3cee44e237580294f685..62074152a0a494bbde4c39074942425a8b850ffd 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -125,6 +125,49 @@ public class PurpurWorldConfig {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Add ping command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index a5829f0726fd92faae04f978c82b2f0736bcd50b..32fbe67a2dceda1a165edc7397a64beffc537488 100644
|
||||
index 5c7287ef8c2d59215aff81cb138a55676bfa6356..a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -230,6 +230,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
@@ -252,6 +252,7 @@ public class Commands {
|
||||
StopCommand.register(this.dispatcher);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
+ org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
|
||||
}
|
||||
|
||||
if (environment.includeIntegrated) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index e2edbb0842862b8ffdf30cec104a1d71a71e92e0..35400f352d44be9a32eb69eb87a3ffdeef9a20b3 100644
|
||||
index 909cfeba89c2370adc2eebf72ba8ad46d33bce7b..e8160e63470cf2f3d15eeb2e7f83d3694cfc4db8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -179,6 +179,7 @@ public class PurpurConfig {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Add demo command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 32fbe67a2dceda1a165edc7397a64beffc537488..4794bb7f80d3419c6da12ee0f608ba05080a409a 100644
|
||||
index a5f1bfd8a6a6c374fbb72ea7957dd7d05073b93d..4568c4b02a87deb299ffd77b8e76329bb2b1dd70 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -230,6 +230,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
@@ -252,6 +252,7 @@ public class Commands {
|
||||
StopCommand.register(this.dispatcher);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
+ org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
|
||||
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 35400f352d44be9a32eb69eb87a3ffdeef9a20b3..00fb3507118960046a61d8a21f9654f279d53874 100644
|
||||
index e8160e63470cf2f3d15eeb2e7f83d3694cfc4db8..994da2c5bbba190507bbcee7029bee974eb3c641 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -179,6 +179,7 @@ public class PurpurConfig {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Add credits command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 4794bb7f80d3419c6da12ee0f608ba05080a409a..637648e03985868c1fe420f84fa778b06deb23ee 100644
|
||||
index 4568c4b02a87deb299ffd77b8e76329bb2b1dd70..6af3e1e08048869ac28ab4a93e03d086872f866b 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -230,6 +230,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
@@ -252,6 +252,7 @@ public class Commands {
|
||||
StopCommand.register(this.dispatcher);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
+ org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur
|
||||
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
|
||||
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 00fb3507118960046a61d8a21f9654f279d53874..d98e16bc47d3bc458281956bf538f4a37bd0f4b7 100644
|
||||
index 994da2c5bbba190507bbcee7029bee974eb3c641..2e78d67201e66c1f3fd1f45ed625e682ea074848 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -179,6 +179,7 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable jockey options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
index 3cde608a222ab2ef2b5fc7f543e97ba71e440ea9..6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653 100644
|
||||
index 02bceb31c517b94653573380ed29d9401a6b9ce8..1d283484be270497859e23e3bb4ab38c09af23e6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
@@ -95,6 +95,21 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -98,6 +98,21 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements);
|
||||
}
|
||||
|
||||
@@ -31,10 +31,10 @@ index 3cde608a222ab2ef2b5fc7f543e97ba71e440ea9..6ec7d0f5e525f9e04b6fa0fb6d4da5fc
|
||||
protected void addBehaviourGoals() {
|
||||
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
|
||||
index 469ad6f0d73add7b005217b2ae39b201c7679a27..ede13fe38fb97b94180ea8557d8a45d2ae5954d3 100644
|
||||
index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c2418dc7f59 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
|
||||
@@ -51,6 +51,21 @@ public class Husk extends Zombie {
|
||||
@@ -49,6 +49,21 @@ public class Husk extends Zombie {
|
||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements);
|
||||
}
|
||||
|
||||
@@ -54,13 +54,13 @@ index 469ad6f0d73add7b005217b2ae39b201c7679a27..ede13fe38fb97b94180ea8557d8a45d2
|
||||
+ }
|
||||
+
|
||||
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
|
||||
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos));
|
||||
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos));
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
index 56f9d91ba48c501fbcdbb959f683ce8728a36503..971abbfdff555a569ad54b9db5947c3ec50408d2 100644
|
||||
index 9af1c4b794ddaf8640076f172cf0317acad6bcb2..555b86925b8d848fad40a838dd98607db8741e3b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
@@ -129,6 +129,18 @@ public class Zombie extends Monster {
|
||||
@@ -126,6 +126,18 @@ public class Zombie extends Monster {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth);
|
||||
}
|
||||
|
||||
@@ -79,10 +79,10 @@ index 56f9d91ba48c501fbcdbb959f683ce8728a36503..971abbfdff555a569ad54b9db5947c3e
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||
@@ -544,19 +556,20 @@ public class Zombie extends Monster {
|
||||
if (object instanceof Zombie.ZombieGroupData) {
|
||||
Zombie.ZombieGroupData entityzombie_groupdatazombie = (Zombie.ZombieGroupData) object;
|
||||
@@ -533,19 +545,20 @@ public class Zombie extends Monster {
|
||||
}
|
||||
|
||||
if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) {
|
||||
- if (entityzombie_groupdatazombie.isBaby) {
|
||||
- this.setBaby(true);
|
||||
+ // Purpur start
|
||||
@@ -106,7 +106,7 @@ index 56f9d91ba48c501fbcdbb959f683ce8728a36503..971abbfdff555a569ad54b9db5947c3e
|
||||
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level());
|
||||
|
||||
if (entitychicken1 != null) {
|
||||
@@ -566,6 +579,7 @@ public class Zombie extends Monster {
|
||||
@@ -555,6 +568,7 @@ public class Zombie extends Monster {
|
||||
this.startRiding(entitychicken1);
|
||||
world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
||||
}
|
||||
@@ -115,10 +115,10 @@ index 56f9d91ba48c501fbcdbb959f683ce8728a36503..971abbfdff555a569ad54b9db5947c3e
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
index a205c668d0d7b428622fbcaa1598f01c685b516e..01f6b7eb50870f9bcac9bbd3b6a87382d6aa1f1b 100644
|
||||
index 8e7f0f2069c3382f3a7b08b80f829398e62377f7..ffe2144e307acebd4a8bed043db0ee0bb6bf611c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
@@ -109,6 +109,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
||||
@@ -107,6 +107,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements);
|
||||
}
|
||||
|
||||
@@ -138,13 +138,13 @@ index a205c668d0d7b428622fbcaa1598f01c685b516e..01f6b7eb50870f9bcac9bbd3b6a87382
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
protected void defineSynchedData() {
|
||||
super.defineSynchedData();
|
||||
protected void defineSynchedData(SynchedEntityData.Builder builder) {
|
||||
super.defineSynchedData(builder);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
index fa5fa58ee03243054a38475634a6aa67815ca77d..764477c39e690d6373e17c77687809418e0de884 100644
|
||||
index 138f3f6a9b0754d54e5f8000962bb52b224f677d..75c34d9fcc4b33d30b18f1ce4c8749a068744abc 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
@@ -86,6 +86,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
@@ -84,6 +84,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth);
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ index fa5fa58ee03243054a38475634a6aa67815ca77d..764477c39e690d6373e17c7768780941
|
||||
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
|
||||
this.persistentAngerTarget = angryAt;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae..6da08454de6f0932971a230471d3558578a4b2a3 100644
|
||||
index 62074152a0a494bbde4c39074942425a8b850ffd..7fabef36d3f9a5294a62ed956010d7ef853e00ab 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -588,6 +588,9 @@ public class PurpurWorldConfig {
|
||||
@@ -229,8 +229,8 @@ index fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae..6da08454de6f0932971a230471d35585
|
||||
+ zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
|
||||
}
|
||||
|
||||
public boolean zombieHorseRidableInWater = false;
|
||||
@@ -1719,6 +1737,9 @@ public class PurpurWorldConfig {
|
||||
public boolean zombieHorseRidable = false;
|
||||
@@ -1721,6 +1739,9 @@ public class PurpurWorldConfig {
|
||||
public boolean zombieVillagerControllable = true;
|
||||
public double zombieVillagerMaxHealth = 20.0D;
|
||||
public double zombieVillagerSpawnReinforcements = 0.1D;
|
||||
@@ -240,7 +240,7 @@ index fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae..6da08454de6f0932971a230471d35585
|
||||
private void zombieVillagerSettings() {
|
||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
||||
@@ -1730,6 +1751,9 @@ public class PurpurWorldConfig {
|
||||
@@ -1732,6 +1753,9 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
|
||||
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
|
||||
@@ -250,7 +250,7 @@ index fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae..6da08454de6f0932971a230471d35585
|
||||
}
|
||||
|
||||
public boolean zombifiedPiglinRidable = false;
|
||||
@@ -1737,6 +1761,9 @@ public class PurpurWorldConfig {
|
||||
@@ -1739,6 +1763,9 @@ public class PurpurWorldConfig {
|
||||
public boolean zombifiedPiglinControllable = true;
|
||||
public double zombifiedPiglinMaxHealth = 20.0D;
|
||||
public double zombifiedPiglinSpawnReinforcements = 0.0D;
|
||||
@@ -260,7 +260,7 @@ index fb6d7e6917e0b8648b5192d83f7aa6a3e3742eae..6da08454de6f0932971a230471d35585
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||
@@ -1748,5 +1775,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1750,5 +1777,8 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
|
||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
index ffc5b68c4246a7111845230a75552bb15875a209..ef0098e46bda8abc456f2bb5929d874c6aeb8698 100644
|
||||
index d8e440e14b72dc48ae97244f1bed2c06abd997ab..2bac39e5ba09e08d23d2a4be37f7fe0da0ce71a6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
@@ -30,6 +30,12 @@ public class EndCrystal extends Entity {
|
||||
@@ -31,6 +31,12 @@ public class EndCrystal extends Entity {
|
||||
private static final EntityDataAccessor<Boolean> DATA_SHOW_BOTTOM = SynchedEntityData.defineId(EndCrystal.class, EntityDataSerializers.BOOLEAN);
|
||||
public int time;
|
||||
public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals
|
||||
@@ -21,11 +21,11 @@ index ffc5b68c4246a7111845230a75552bb15875a209..ef0098e46bda8abc456f2bb5929d874c
|
||||
|
||||
public EndCrystal(EntityType<? extends EndCrystal> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -79,7 +85,50 @@ public class EndCrystal extends Entity {
|
||||
// Paper end
|
||||
@@ -80,6 +86,49 @@ public class EndCrystal extends Entity {
|
||||
// Paper end - Fix invulnerable end crystals
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ // Purpur start
|
||||
+ if (level().purpurConfig.phantomAttackedByCrystalRadius <= 0 || --idleCooldown > 0) {
|
||||
+ return; // on cooldown
|
||||
+ }
|
||||
@@ -67,16 +67,15 @@ index ffc5b68c4246a7111845230a75552bb15875a209..ef0098e46bda8abc456f2bb5929d874c
|
||||
+ phantomBeamTicks = 0;
|
||||
+ phantomDamageCooldown = 0;
|
||||
+ idleCooldown = 60;
|
||||
}
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addAdditionalSaveData(CompoundTag nbt) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd51b433a22 100644
|
||||
index 01e8eaecec61e664838b5d7f18a9c3e730f00ddf..e0b1b0106fd3bbb6764d1b0a58ab2810181cac02 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
Vec3 moveTargetPoint;
|
||||
public BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
@@ -84,7 +83,7 @@ index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd5
|
||||
|
||||
public Phantom(EntityType<? extends Phantom> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -117,6 +118,23 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -115,6 +116,23 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
level().addFreshEntity(flames);
|
||||
return true;
|
||||
}
|
||||
@@ -108,7 +107,7 @@ index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd5
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
@@ -131,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -129,11 +147,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
@@ -131,7 +130,7 @@ index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd5
|
||||
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
|
||||
}
|
||||
|
||||
@@ -353,6 +377,124 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -333,6 +357,124 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
private AttackPhase() {}
|
||||
}
|
||||
|
||||
@@ -257,7 +256,7 @@ index 8446ce22139fa2473c789cab67f4031a23f0d31d..ef41a462b102981d30207299d0279fd5
|
||||
|
||||
private float speed = 0.1F;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 6da08454de6f0932971a230471d3558578a4b2a3..fdb2d2f67d6356c010e430fc4aee5593811cbf17 100644
|
||||
index 7fabef36d3f9a5294a62ed956010d7ef853e00ab..e1652079b92a5c951b5191997803e9d486892c61 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1065,6 +1065,9 @@ public class PurpurWorldConfig {
|
||||
@@ -5,20 +5,20 @@ Subject: [PATCH] Add phantom spawning options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
index dfeb3e336e06ef01f5401a362755030db942bb07..f74c5eda91a3d521763ec7bc33f23e0c62458cc2 100644
|
||||
index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f060aea63 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
@@ -49,7 +49,7 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
@@ -48,7 +48,7 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
int spawnAttemptMaxSeconds = world.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds;
|
||||
this.nextTick += (spawnAttemptMinSeconds + randomsource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20;
|
||||
// Paper end
|
||||
// Paper end - Ability to control player's insomnia and phantoms
|
||||
- if (world.getSkyDarken() < 5 && world.dimensionType().hasSkyLight()) {
|
||||
+ if (world.getSkyDarken() < world.purpurConfig.phantomSpawnMinSkyDarkness && world.dimensionType().hasSkyLight()) { // Purpur
|
||||
return 0;
|
||||
} else {
|
||||
int i = 0;
|
||||
@@ -61,10 +61,10 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
if (!entityplayer.isSpectator() && (!world.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !entityplayer.isCreative())) { // Paper
|
||||
@@ -60,10 +60,10 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
if (!entityplayer.isSpectator() && (!world.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !entityplayer.isCreative())) { // Paper - Add phantom creative and insomniac controls
|
||||
BlockPos blockposition = entityplayer.blockPosition();
|
||||
|
||||
- if (!world.dimensionType().hasSkyLight() || blockposition.getY() >= world.getSeaLevel() && world.canSeeSky(blockposition)) {
|
||||
@@ -30,7 +30,7 @@ index dfeb3e336e06ef01f5401a362755030db942bb07..f74c5eda91a3d521763ec7bc33f23e0c
|
||||
ServerStatsCounter serverstatisticmanager = entityplayer.getStats();
|
||||
int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE);
|
||||
boolean flag2 = true;
|
||||
@@ -76,7 +76,7 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
@@ -75,7 +75,7 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
|
||||
if (NaturalSpawner.isValidEmptySpawnBlock(world, blockposition1, iblockdata, fluid, EntityType.PHANTOM)) {
|
||||
SpawnGroupData groupdataentity = null;
|
||||
@@ -38,9 +38,9 @@ index dfeb3e336e06ef01f5401a362755030db942bb07..f74c5eda91a3d521763ec7bc33f23e0c
|
||||
+ int k = world.purpurConfig.phantomSpawnMinPerAttempt + world.random.nextInt((world.purpurConfig.phantomSpawnMaxPerAttempt < 0 ? difficultydamagescaler.getDifficulty().getId() : world.purpurConfig.phantomSpawnMaxPerAttempt - world.purpurConfig.phantomSpawnMinPerAttempt) + 1); // Purpur
|
||||
|
||||
for (int l = 0; l < k; ++l) {
|
||||
// Paper start
|
||||
// Paper start - PhantomPreSpawnEvent
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index fdb2d2f67d6356c010e430fc4aee5593811cbf17..efd10d6f2b3d342e2cb817b1e7fa7f5f86075b8c 100644
|
||||
index e1652079b92a5c951b5191997803e9d486892c61..10de2140aa89f75e7f67b38f6c1286f4330d127b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1068,6 +1068,12 @@ public class PurpurWorldConfig {
|
||||
@@ -5,29 +5,29 @@ Subject: [PATCH] Implement bed explosion options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
index d40500f9a807cab0b2fb6fa9032f33f4fb74c895..e8405a57fb88e63b63baaf00645c417633bdc0f2 100644
|
||||
index 4459685d1fb655f93a523ae50b62d6b97785ed90..549e3dd09a91ddf319fe0c1ec09924cbb600c1b8 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
@@ -96,7 +96,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
@@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
|
||||
Vec3 vec3d = pos.getCenter();
|
||||
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur
|
||||
return InteractionResult.SUCCESS;
|
||||
} else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) {
|
||||
if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first
|
||||
@@ -149,7 +149,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
@@ -157,7 +157,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
|
||||
Vec3 vec3d = blockposition.getCenter();
|
||||
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper - add BlockEntity
|
||||
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Paper - add BlockEntity // Purpur
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index efd10d6f2b3d342e2cb817b1e7fa7f5f86075b8c..461627c87d514b8a936ad5675abb849aa49c569d 100644
|
||||
index 10de2140aa89f75e7f67b38f6c1286f4330d127b..95f016b7c127129b71e266a3daefd55502fdb299 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -284,6 +284,27 @@ public class PurpurWorldConfig {
|
||||
@@ -5,20 +5,20 @@ Subject: [PATCH] Implement respawn anchor explosion options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
index 2ed78cf83c0ae66a6ddba1ff307da89a24b0d0a8..ae17d6a54fad0bd2d71d306f418b5ced2f11b863 100644
|
||||
index 0699211428f182d8d56a2ba019d89ce05c920430..351fb74d2cccd7f63c2efee197a2968f822eda42 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
@@ -141,7 +141,7 @@ public class RespawnAnchorBlock extends Block {
|
||||
@@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block {
|
||||
};
|
||||
Vec3 vec3d = explodedPos.getCenter();
|
||||
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // Paper
|
||||
+ if (world.purpurConfig.respawnAnchorExplode)world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, explodedBlockState), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // Paper // Purpur
|
||||
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper
|
||||
+ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Paper // Purpur
|
||||
}
|
||||
|
||||
public static boolean canSetSpawn(Level world) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 461627c87d514b8a936ad5675abb849aa49c569d..3bfdc7ba270762ec114450d30e94457405d8bc19 100644
|
||||
index 95f016b7c127129b71e266a3daefd55502fdb299..55ae989ae13ae9c0730f6f8df5f7eba52a560b1f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -324,6 +324,27 @@ public class PurpurWorldConfig {
|
||||
@@ -46,6 +46,6 @@ index 461627c87d514b8a936ad5675abb849aa49c569d..3bfdc7ba270762ec114450d30e944574
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = false;
|
||||
public boolean turtleEggsBreakFromMinecarts = false;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add allow water in end world option
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
index 277555a26e8281dd1a626e572794b08cf51d00c5..48e4fecf5ae5538004e3f53093b8be7c4be1cbee 100644
|
||||
index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214cac46bd7d8 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
@@ -195,7 +195,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
@@ -194,7 +194,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
// CraftBukkit end
|
||||
if (!flag2) {
|
||||
return movingobjectpositionblock != null && this.emptyContents(entityhuman, world, movingobjectpositionblock.getBlockPos().relative(movingobjectpositionblock.getDirection()), (BlockHitResult) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit
|
||||
@@ -17,7 +17,7 @@ index 277555a26e8281dd1a626e572794b08cf51d00c5..48e4fecf5ae5538004e3f53093b8be7c
|
||||
int i = blockposition.getX();
|
||||
int j = blockposition.getY();
|
||||
int k = blockposition.getZ();
|
||||
@@ -203,7 +203,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
@@ -202,7 +202,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
world.playSound(entityhuman, blockposition, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
||||
|
||||
for (int l = 0; l < 8; ++l) {
|
||||
@@ -27,14 +27,13 @@ index 277555a26e8281dd1a626e572794b08cf51d00c5..48e4fecf5ae5538004e3f53093b8be7c
|
||||
|
||||
return true;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index eccc55372a7a52a92dd9418a47ece0fd2adcd6ed..4f950128114b8fb6ad145a7302ce6be327c8b6c1 100644
|
||||
index 04f7f6743aabdca54892b2b155386f86032cf807..2e44e9ea9558ebc1456d9bbf53561988e33ce845 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -1883,4 +1883,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
}
|
||||
@@ -1902,4 +1902,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
return null;
|
||||
}
|
||||
// Paper end - notify observers even if grow failed
|
||||
+
|
||||
// Paper end - optimize redstone (Alternate Current)
|
||||
+ // Purpur start
|
||||
+ public boolean isNether() {
|
||||
+ return getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER;
|
||||
@@ -46,19 +45,19 @@ index eccc55372a7a52a92dd9418a47ece0fd2adcd6ed..4f950128114b8fb6ad145a7302ce6be3
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
index 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d86adedf44 100644
|
||||
index 013302623d3ca3ff88f242d740af935dcf4844a6..13dd8bc7d2f6b71a5f1779dde53c5c84d83538ce 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
@@ -33,7 +33,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
@@ -41,7 +41,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
public void afterDestroy(Level world, BlockPos pos, ItemStack tool) {
|
||||
// Paper end
|
||||
// Paper end - Improve Block#breakNaturally API
|
||||
if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) == 0) {
|
||||
- if (world.dimensionType().ultraWarm()) {
|
||||
+ if (world.isNether() || (world.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur
|
||||
world.removeBlock(pos, false);
|
||||
return;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
@@ -69,7 +69,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -68,7 +67,7 @@ index 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d8
|
||||
} else {
|
||||
world.setBlockAndUpdate(pos, IceBlock.meltsInto());
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index d98e16bc47d3bc458281956bf538f4a37bd0f4b7..387da71594b75a43100790e8e8d69d9246598537 100644
|
||||
index 2e78d67201e66c1f3fd1f45ed625e682ea074848..de202a20cdc133d68fb44c56ee017cca153e1cf8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -244,6 +244,11 @@ public class PurpurConfig {
|
||||
89
patches/server/0068-Allow-color-codes-in-books.patch
Normal file
89
patches/server/0068-Allow-color-codes-in-books.patch
Normal file
@@ -0,0 +1,89 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Tue, 3 Nov 2020 01:25:06 -0600
|
||||
Subject: [PATCH] Allow color codes in books
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 510a4391463026dd0c896027a579a94174c24299..c647629ef404e983240577c87306bb76bf0cc4a5 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1234,10 +1234,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
|
||||
Objects.requireNonNull(list);
|
||||
stream.forEach(list::add);
|
||||
+ // Purpur start
|
||||
+ boolean hasEditPerm = getCraftPlayer().hasPermission("purpur.book.color.edit");
|
||||
+ boolean hasSignPerm = hasEditPerm || getCraftPlayer().hasPermission("purpur.book.color.sign");
|
||||
+ // Purpur end
|
||||
Consumer<List<FilteredText>> consumer = optional.isPresent() ? (list1) -> {
|
||||
- this.signBook((FilteredText) list1.get(0), list1.subList(1, list1.size()), i);
|
||||
+ this.signBook((FilteredText) list1.get(0), list1.subList(1, list1.size()), i, hasSignPerm); // Purpur
|
||||
} : (list1) -> {
|
||||
- this.updateBookContents(list1, i);
|
||||
+ this.updateBookContents(list1, i, hasEditPerm); // Purpur
|
||||
};
|
||||
|
||||
this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server);
|
||||
@@ -1245,13 +1249,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
}
|
||||
|
||||
private void updateBookContents(List<FilteredText> pages, int slotId) {
|
||||
+ // Purpur start
|
||||
+ updateBookContents(pages, slotId, false);
|
||||
+ }
|
||||
+ private void updateBookContents(List<FilteredText> pages, int slotId, boolean hasPerm) {
|
||||
+ // Purpur end
|
||||
// CraftBukkit start
|
||||
ItemStack handItem = this.player.getInventory().getItem(slotId);
|
||||
ItemStack itemstack = handItem.copy();
|
||||
// CraftBukkit end
|
||||
|
||||
if (itemstack.is(Items.WRITABLE_BOOK)) {
|
||||
- List<Filterable<String>> list1 = pages.stream().map(this::filterableFromOutgoing).toList();
|
||||
+ List<Filterable<String>> list1 = pages.stream().map(filteredText -> filterableFromOutgoing(filteredText).map(s -> color(s, hasPerm))).toList(); // Purpur
|
||||
|
||||
itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1));
|
||||
this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
|
||||
@@ -1259,6 +1268,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
}
|
||||
|
||||
private void signBook(FilteredText title, List<FilteredText> pages, int slotId) {
|
||||
+ // Purpur start
|
||||
+ signBook(title, pages, slotId, false);
|
||||
+ }
|
||||
+ private void signBook(FilteredText title, List<FilteredText> pages, int slotId, boolean hasPerm) {
|
||||
+ // Purpur end
|
||||
ItemStack itemstack = this.player.getInventory().getItem(slotId);
|
||||
|
||||
if (itemstack.is(Items.WRITABLE_BOOK)) {
|
||||
@@ -1266,10 +1280,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
|
||||
itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT);
|
||||
List<Filterable<Component>> list1 = (List<Filterable<Component>>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error
|
||||
- return this.filterableFromOutgoing(filteredtext1).map(Component::literal);
|
||||
+ return this.filterableFromOutgoing(filteredtext1).map(s -> hexColor(s, hasPerm)); // Purpur
|
||||
}).toList();
|
||||
|
||||
- itemstack1.set(DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list1, true));
|
||||
+ itemstack1.set(DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title).map(s -> color(s, hasPerm)), this.player.getName().getString(), 0, list1, true)); // Purpur
|
||||
CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit
|
||||
this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book
|
||||
}
|
||||
@@ -1279,6 +1293,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ private Component hexColor(String str, boolean hasPerm) {
|
||||
+ return hasPerm ? PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(str)) : Component.literal(str);
|
||||
+ }
|
||||
+
|
||||
+ private String color(String str, boolean hasPerm) {
|
||||
+ return hasPerm ? org.bukkit.ChatColor.color(str, false) : str;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) {
|
||||
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
|
||||
@@ -5,22 +5,22 @@ Subject: [PATCH] Entity lifespan
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index fb887cbbd5d5ca0a29bd31672b38a18db2f2e8db..14f6abe6e7eeaf5d3053bf3ecb540b898813c267 100644
|
||||
index c647629ef404e983240577c87306bb76bf0cc4a5..e5df5583ef6084e59c8375c82c9909ff2d2bdc3f 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -2740,6 +2740,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -2824,6 +2824,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
AABB axisalignedbb = entity.getBoundingBox();
|
||||
|
||||
if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) {
|
||||
if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) {
|
||||
+ if (entity instanceof Mob mob) mob.ticksSinceLastInteraction = 0; // Purpur
|
||||
packet.dispatch(new ServerboundInteractPacket.Handler() {
|
||||
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
|
||||
ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951eeaa2b5ce 100644
|
||||
index c4392a997061aa4939e5ad7dcacf5e39cbecc55a..e7251ac940b49564c83b4b603e49c3990fc85db1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -135,6 +135,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -152,6 +152,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
private BlockPos restrictCenter;
|
||||
private float restrictRadius;
|
||||
|
||||
@@ -28,7 +28,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
public boolean aware = true; // CraftBukkit
|
||||
|
||||
protected Mob(EntityType<? extends Mob> type, Level world) {
|
||||
@@ -324,6 +325,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -339,6 +340,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
entityliving = null;
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
this.target = entityliving;
|
||||
return true;
|
||||
// CraftBukkit end
|
||||
@@ -371,8 +373,28 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -381,8 +383,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
}
|
||||
|
||||
this.level().getProfiler().pop();
|
||||
@@ -57,15 +57,15 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
+ return; // mob persistent
|
||||
+ }
|
||||
+ if (this.ticksSinceLastInteraction > this.level().purpurConfig.entityLifeSpan) {
|
||||
+ this.discard();
|
||||
+ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD);
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
protected void playHurtSound(DamageSource source) {
|
||||
protected void playHurtSound(DamageSource damageSource) {
|
||||
this.resetAmbientSoundTime();
|
||||
@@ -562,6 +584,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -585,6 +607,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
}
|
||||
|
||||
nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit
|
||||
@@ -73,7 +73,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -632,6 +655,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -669,6 +692,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
this.aware = nbt.getBoolean("Bukkit.Aware");
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -85,7 +85,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1710,6 +1738,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -1848,6 +1876,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
|
||||
this.setLastHurtMob(target);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951e
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 3bfdc7ba270762ec114450d30e94457405d8bc19..5afe1d5977f1bbc2b2c2aa5982c4eb23d82e7644 100644
|
||||
index 55ae989ae13ae9c0730f6f8df5f7eba52a560b1f..9ba3a90e1af9c733949c52988c56c05af46356e8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -125,6 +125,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 85383b6a9d16b7cf7e928c4d9aaf7af932540091..8b05588b480af39d25bfcb84a5241e9e055c81f8 100644
|
||||
index a17de781053a2c2caf615e5ac48a45c14386b0af..03b206289d103a36d19dcf3154f10ad98f976ba2 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -2744,4 +2744,26 @@ public class ServerPlayer extends Player {
|
||||
@@ -2956,4 +2956,26 @@ public class ServerPlayer extends Player {
|
||||
return (CraftPlayer) super.getBukkitEntity();
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -36,10 +36,10 @@ index 85383b6a9d16b7cf7e928c4d9aaf7af932540091..8b05588b480af39d25bfcb84a5241e9e
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index ee41bfa1a851340f291182f520c9cf1925a355af..3fe857ddd4dbaa73f9556f547f03e9f747a52c40 100644
|
||||
index 9a2725e3f61a7d37943518cc760b17859a0938bb..9a912752b12730a8fb09f5a6ab5a8638b555e3e3 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -440,6 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
double d1 = this.level().getWorldBorder().getDamagePerBlock();
|
||||
|
||||
if (d1 > 0.0D) {
|
||||
@@ -48,7 +48,7 @@ index ee41bfa1a851340f291182f520c9cf1925a355af..3fe857ddd4dbaa73f9556f547f03e9f7
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 5afe1d5977f1bbc2b2c2aa5982c4eb23d82e7644..8cc7e83e6272ed9c3f005c76aa3432fb2d3c76a6 100644
|
||||
index 9ba3a90e1af9c733949c52988c56c05af46356e8..98e6faaeeaf8a983f9d730591a9d85c314c112d3 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -242,6 +242,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1,77 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Tue, 3 Nov 2020 01:25:06 -0600
|
||||
Subject: [PATCH] Allow color codes in books
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 3d4908a8686804a43e114d4720d7295107659e47..fb887cbbd5d5ca0a29bd31672b38a18db2f2e8db 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1228,13 +1228,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
itemstack1.setTag(nbttagcompound.copy());
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ boolean hasPerm = getCraftPlayer().hasPermission("purpur.book.color.edit") || getCraftPlayer().hasPermission("purpur.book.color.sign");
|
||||
itemstack1.addTagElement("author", StringTag.valueOf(this.player.getName().getString()));
|
||||
if (this.player.isTextFilteringEnabled()) {
|
||||
- itemstack1.addTagElement("title", StringTag.valueOf(title.filteredOrEmpty()));
|
||||
+ itemstack1.addTagElement("title", StringTag.valueOf(color(title.filteredOrEmpty(), hasPerm)));
|
||||
} else {
|
||||
- itemstack1.addTagElement("filtered_title", StringTag.valueOf(title.filteredOrEmpty()));
|
||||
- itemstack1.addTagElement("title", StringTag.valueOf(title.raw()));
|
||||
+ itemstack1.addTagElement("filtered_title", StringTag.valueOf(color(title.filteredOrEmpty(), hasPerm)));
|
||||
+ itemstack1.addTagElement("title", StringTag.valueOf(color(title.raw(), hasPerm)));
|
||||
}
|
||||
+ // Purpur end
|
||||
|
||||
this.updateBookPages(pages, (s) -> {
|
||||
return Component.Serializer.toJson(Component.literal(s));
|
||||
@@ -1246,10 +1249,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
private void updateBookPages(List<FilteredText> list, UnaryOperator<String> unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit
|
||||
ListTag nbttaglist = new ListTag();
|
||||
|
||||
+ // Purpur start
|
||||
+ boolean hasPerm = getCraftPlayer().hasPermission("purpur.book.color.edit");
|
||||
if (this.player.isTextFilteringEnabled()) {
|
||||
- Stream<StringTag> stream = list.stream().map((filteredtext) -> { // CraftBukkit - decompile error
|
||||
- return StringTag.valueOf((String) unaryoperator.apply(filteredtext.filteredOrEmpty()));
|
||||
+ Stream<StringTag> stream = list.stream().map(s -> color(s.filteredOrEmpty(), hasPerm, false)).map((s) -> { // CraftBukkit - decompile error
|
||||
+ return StringTag.valueOf((String) unaryoperator.apply(s));
|
||||
});
|
||||
+ // Purpur end
|
||||
|
||||
Objects.requireNonNull(nbttaglist);
|
||||
stream.forEach(nbttaglist::add);
|
||||
@@ -1259,11 +1265,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
|
||||
for (int j = list.size(); i < j; ++i) {
|
||||
FilteredText filteredtext = (FilteredText) list.get(i);
|
||||
- String s = filteredtext.raw();
|
||||
+ String s = color(filteredtext.raw(), hasPerm, false); // Purpur
|
||||
|
||||
nbttaglist.add(StringTag.valueOf((String) unaryoperator.apply(s)));
|
||||
if (filteredtext.isFiltered()) {
|
||||
- nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(filteredtext.filteredOrEmpty()));
|
||||
+ nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply((String) color(filteredtext.filteredOrEmpty(), hasPerm, false))); // Purpur
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1276,6 +1282,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ private String color(String str, boolean hasPerm) {
|
||||
+ return color(str, hasPerm, true);
|
||||
+ }
|
||||
+
|
||||
+ private String color(String str, boolean hasPerm, boolean parseHex) {
|
||||
+ return hasPerm ? org.bukkit.ChatColor.color(str, parseHex) : str;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public void handleEntityTagQuery(ServerboundEntityTagQuery packet) {
|
||||
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Squid EAR immunity
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8cc7e83e6272ed9c3f005c76aa3432fb2d3c76a6..b9ba53461de687070dda3c0bcccbee240017033a 100644
|
||||
index 98e6faaeeaf8a983f9d730591a9d85c314c112d3..27d279d76fd3632fd023edded3b10630629ec132 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1453,6 +1453,7 @@ public class PurpurWorldConfig {
|
||||
@@ -25,7 +25,7 @@ index 8cc7e83e6272ed9c3f005c76aa3432fb2d3c76a6..b9ba53461de687070dda3c0bcccbee24
|
||||
|
||||
public boolean spiderRidable = false;
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index d1448f50a9c03bd779f4bcd6b4fc896365316b78..925cd6e07efc3a42ff5787823b046726ce863104 100644
|
||||
index a9a39f0da7b09410d8171172a4219c7d509fdb99..a8fc07e06039e1418e020f7c1ad2cd36b9b94eb4 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature;
|
||||
@@ -36,7 +36,7 @@ index d1448f50a9c03bd779f4bcd6b4fc896365316b78..925cd6e07efc3a42ff5787823b046726
|
||||
import net.minecraft.world.entity.animal.WaterAnimal;
|
||||
import net.minecraft.world.entity.animal.horse.Llama;
|
||||
import net.minecraft.world.entity.boss.EnderDragonPart;
|
||||
@@ -402,6 +403,7 @@ public class ActivationRange
|
||||
@@ -380,6 +381,7 @@ public class ActivationRange
|
||||
*/
|
||||
public static boolean checkIfActive(Entity entity)
|
||||
{
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
index ef41a462b102981d30207299d0279fd51b433a22..6849b2ad3b2db840a1af35ef069490506449c861 100644
|
||||
index e0b1b0106fd3bbb6764d1b0a58ab2810181cac02..1ddccb9fa438682c2ebad7c071c7a4f8dd00b463 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
Vec3 moveTargetPoint;
|
||||
public BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
@@ -16,21 +16,20 @@ index ef41a462b102981d30207299d0279fd51b433a22..6849b2ad3b2db840a1af35ef06949050
|
||||
Vec3 crystalPosition; // Purpur
|
||||
|
||||
public Phantom(EntityType<? extends Phantom> type, Level world) {
|
||||
@@ -247,7 +248,12 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -240,7 +241,11 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
|
||||
@Override
|
||||
public void aiStep() {
|
||||
- if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning
|
||||
- if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API
|
||||
+ // Purpur start
|
||||
+ boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
|
||||
+ boolean burnFromDaylight = this.shouldBurnInDay && this.isSunBurnTick() && this.level().purpurConfig.phantomBurnInDaylight;
|
||||
+ boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
|
||||
+ if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning
|
||||
+ if (getRider() == null || !this.isControllable())
|
||||
+ // Purpur end
|
||||
+ if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - shouldBurnInDay API
|
||||
+ // Purpur end
|
||||
if (getRider() == null || !this.isControllable()) // Purpur
|
||||
this.setSecondsOnFire(8);
|
||||
this.igniteForSeconds(8);
|
||||
}
|
||||
@@ -661,6 +667,12 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -641,6 +646,12 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
return false;
|
||||
} else if (!entityliving.isAlive()) {
|
||||
return false;
|
||||
@@ -43,7 +42,7 @@ index ef41a462b102981d30207299d0279fd51b433a22..6849b2ad3b2db840a1af35ef06949050
|
||||
} else {
|
||||
if (entityliving instanceof Player) {
|
||||
Player entityhuman = (Player) entityliving;
|
||||
@@ -806,6 +818,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -786,6 +797,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.nextScanTick = reducedTickDelay(60);
|
||||
List<Player> list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
|
||||
|
||||
@@ -52,7 +51,7 @@ index ef41a462b102981d30207299d0279fd51b433a22..6849b2ad3b2db840a1af35ef06949050
|
||||
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
|
||||
Iterator iterator = list.iterator();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b9ba53461de687070dda3c0bcccbee240017033a..35be76739cda5aa4a075dc665e7702a9269d4333 100644
|
||||
index 27d279d76fd3632fd023edded3b10630629ec132..dcd9f80eb69e34b514f57158568e4cb59e9860ec 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1123,6 +1123,9 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 616a6c78a056839575b4dabfeebb7cb2dce25026..1754c88d9b3bdbce721062c564a5f61c2ad14e86 100644
|
||||
index 051940da69567274f48485f060cbc3ac21a0907f..6de74d992bd8b2845ab98d56201e7eeabd1dfc6b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -786,7 +786,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -777,7 +777,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
|
||||
@Override
|
||||
public boolean canBreed() {
|
||||
@@ -18,7 +18,7 @@ index 616a6c78a056839575b4dabfeebb7cb2dce25026..1754c88d9b3bdbce721062c564a5f61c
|
||||
|
||||
private boolean hungry() {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 35be76739cda5aa4a075dc665e7702a9269d4333..9cd4d38da512f209db7196f632031d51acc5947c 100644
|
||||
index dcd9f80eb69e34b514f57158568e4cb59e9860ec..df4f384032f398fc9852e753dee820ffa33e10bb 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Redstone deactivates spawners
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
index 633500aefd515df5dadda3802b94079f75a03fa0..64d911bee1607880514061c75116d8672df8bb8f 100644
|
||||
index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16c25add59 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
@@ -55,6 +55,7 @@ public abstract class BaseSpawner {
|
||||
@@ -59,6 +59,7 @@ public abstract class BaseSpawner {
|
||||
}
|
||||
|
||||
public boolean isNearPlayer(Level world, BlockPos pos) {
|
||||
@@ -17,7 +17,7 @@ index 633500aefd515df5dadda3802b94079f75a03fa0..64d911bee1607880514061c75116d867
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9cd4d38da512f209db7196f632031d51acc5947c..669454dd9ad60116b664f4432f4fef9662ba170c 100644
|
||||
index df4f384032f398fc9852e753dee820ffa33e10bb..85d2030c58fb97be82c97a042bc5d73e76274268 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -352,6 +352,11 @@ public class PurpurWorldConfig {
|
||||
@@ -29,6 +29,6 @@ index 9cd4d38da512f209db7196f632031d51acc5947c..669454dd9ad60116b664f4432f4fef96
|
||||
+ spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
|
||||
+ }
|
||||
+
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = false;
|
||||
public boolean turtleEggsBreakFromMinecarts = false;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 3fe857ddd4dbaa73f9556f547f03e9f747a52c40..3271c1a14fba90ab2e6467d907dfaf8cf5c12b65 100644
|
||||
index 9a912752b12730a8fb09f5a6ab5a8638b555e3e3..2ea60043f3bbf6cce77799f6c74ffe1f4b226374 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1626,6 +1626,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1653,6 +1653,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ index 3fe857ddd4dbaa73f9556f547f03e9f747a52c40..3271c1a14fba90ab2e6467d907dfaf8c
|
||||
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
|
||||
event.setCancelled(itemstack == null);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 669454dd9ad60116b664f4432f4fef9662ba170c..2cf49e7cb1d128c9dfec76c33d2c9a88c09ae2ca 100644
|
||||
index 85d2030c58fb97be82c97a042bc5d73e76274268..be916fe3a8bc8996be8b0835e3bd8f7920c15055 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -243,6 +243,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add vindicator johnny spawn chance
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
index fece613e9c182c6658f9df1d333a5b7e1e862218..a3db9c351b9cb06340458811c006d53796d96ab5 100644
|
||||
index e270da29fdab5060b6a936bba67c433a78c54b5b..61f1778d454cebaab5580179614ff48ab67b8fe6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
@@ -154,6 +154,12 @@ public class Vindicator extends AbstractIllager {
|
||||
@@ -148,6 +148,12 @@ public class Vindicator extends AbstractIllager {
|
||||
RandomSource randomSource = world.getRandom();
|
||||
this.populateDefaultEquipmentSlots(randomSource, difficulty);
|
||||
this.populateDefaultEquipmentEnchantments(randomSource, difficulty);
|
||||
@@ -22,7 +22,7 @@ index fece613e9c182c6658f9df1d333a5b7e1e862218..a3db9c351b9cb06340458811c006d537
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 2cf49e7cb1d128c9dfec76c33d2c9a88c09ae2ca..008ae05e639b38a28d27a6dacbb6ef25a5c9ecbf 100644
|
||||
index be916fe3a8bc8996be8b0835e3bd8f7920c15055..7b584d5c8460e90dfea250591e4ca36cb1db004a 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1638,6 +1638,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Dispensers place anvils option
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
index a0c7c6208314d981e8577ad69ef1c5193290a085..603eac94296c32d87dccf2c6b5fd7183864346f2 100644
|
||||
index 5dab1e10303177e5a4d97a91ee46ede66f30ae35..68236139e3571791b891dbbef6e3ee20031e16d9 100644
|
||||
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
@@ -1188,6 +1188,23 @@ public interface DispenseItemBehavior {
|
||||
@@ -1048,5 +1048,22 @@ public interface DispenseItemBehavior {
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -16,7 +16,7 @@ index a0c7c6208314d981e8577ad69ef1c5193290a085..603eac94296c32d87dccf2c6b5fd7183
|
||||
+ DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() {
|
||||
+ @Override
|
||||
+ public ItemStack execute(BlockSource dispenser, ItemStack stack) {
|
||||
+ Level level = dispenser.level();
|
||||
+ net.minecraft.world.level.Level level = dispenser.level();
|
||||
+ if (!level.purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack);
|
||||
+ Direction facing = dispenser.blockEntity().getBlockState().getValue(DispenserBlock.FACING);
|
||||
+ BlockPos pos = dispenser.pos().relative(facing);
|
||||
@@ -30,10 +30,9 @@ index a0c7c6208314d981e8577ad69ef1c5193290a085..603eac94296c32d87dccf2c6b5fd7183
|
||||
+ }));
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
static Vec3 getEntityPokingOutOfBlockPos(BlockSource pointer, EntityType<?> entityType, Direction direction) {
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 008ae05e639b38a28d27a6dacbb6ef25a5c9ecbf..8ee713af7d57bbf52a9aacf11385c0a325a24aa8 100644
|
||||
index 7b584d5c8460e90dfea250591e4ca36cb1db004a..00c4cda4ca21195c4fbfeb47f92e197be18aa4c6 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -315,8 +315,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,13 +5,13 @@ Subject: [PATCH] Allow anvil colors
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
index b500a04b8135604f0159a741b3d228c9e87b2a46..8a7c30e316db4960b0b62ca0e366c19febead214 100644
|
||||
index 9036426256f87b3ba4a78e6fa2cea4e028f84481..5cadd69bcae33b1de58806fcf40533850d976154 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
@@ -294,6 +294,54 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -279,6 +279,54 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
if (!this.itemName.equals(itemstack.getHoverName().getString())) {
|
||||
b1 = 1;
|
||||
i += b1;
|
||||
b0 = 1;
|
||||
i += b0;
|
||||
+ // Purpur start
|
||||
+ if (this.player != null) {
|
||||
+ org.bukkit.craftbukkit.entity.CraftHumanEntity player = this.player.getBukkitEntity();
|
||||
@@ -56,15 +56,15 @@ index b500a04b8135604f0159a741b3d228c9e87b2a46..8a7c30e316db4960b0b62ca0e366c19f
|
||||
+ if (removeItalics) {
|
||||
+ component = component.decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
|
||||
+ }
|
||||
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(component));
|
||||
+ itemstack1.set(DataComponents.CUSTOM_NAME, io.papermc.paper.adventure.PaperAdventure.asVanilla(component));
|
||||
+ }
|
||||
+ else
|
||||
+ // Purpur end
|
||||
itemstack1.setHoverName(Component.literal(this.itemName));
|
||||
itemstack1.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName));
|
||||
}
|
||||
} else if (itemstack.hasCustomHoverName()) {
|
||||
} else if (itemstack.has(DataComponents.CUSTOM_NAME)) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8ee713af7d57bbf52a9aacf11385c0a325a24aa8..4ac9e1c076d73e3964be68f4a550e3f8e2c96a7d 100644
|
||||
index 00c4cda4ca21195c4fbfeb47f92e197be18aa4c6..4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -293,6 +293,13 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable dolphin treasure searching
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
index 89e3dbfddc739f97fdb6ec9a5714530f03cc7092..079fd78528377ee4236fb2e7189a5f0fc5ec4fb3 100644
|
||||
index 4f294b3ecf061f34046b52bf2b6a3d0ff1ed347b..366d583926e7e33a8c1e5a803bb75a456b4838d0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
@@ -485,6 +485,7 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -471,6 +471,7 @@ public class Dolphin extends WaterAnimal {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
@@ -17,7 +17,7 @@ index 89e3dbfddc739f97fdb6ec9a5714530f03cc7092..079fd78528377ee4236fb2e7189a5f0f
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4ac9e1c076d73e3964be68f4a550e3f8e2c96a7d..f20c2daa8dabb5f6131eb6e6b8dba66cf5ad812b 100644
|
||||
index 4c80796777c5a90c5e7a9e8ef0beedfcb49f0aa9..b9faaf71e0cd5918b072d068bbc2096aa2805616 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -610,6 +610,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,24 +5,24 @@ Subject: [PATCH] Short enderman height
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
index 518b927dac087000b5049bc61d43a46a7379e256..5d703e322bd220665c3ce3a41e40129b238ae150 100644
|
||||
index 9b3bf5ac043262c6cd00d83b750c3313122d92a9..3097529a9066841a58c899ce55b3bc0cd6af7e88 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
|
||||
@@ -309,7 +309,8 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
@@ -322,7 +322,8 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
private Component description;
|
||||
@Nullable
|
||||
private ResourceLocation lootTable;
|
||||
private ResourceKey<LootTable> lootTable;
|
||||
- private final EntityDimensions dimensions;
|
||||
+ private EntityDimensions dimensions; // Purpur - remove final
|
||||
+ public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur
|
||||
private final float spawnDimensionsScale;
|
||||
private final FeatureFlagSet requiredFeatures;
|
||||
|
||||
private static <T extends Entity> EntityType<T> register(String id, EntityType.Builder type) { // CraftBukkit - decompile error
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 86581579aed4d8bd18c7b7ea58e2dc4fee5315ba..ebef4f39af4928ed5bd206a82aa0e3992e67db78 100644
|
||||
index 89275ac02fcfab963b520efae6135d6f5ac13465..cb307a9419399e33a895376a584456f084691965 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -440,6 +440,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -419,6 +419,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
return false;
|
||||
} else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage
|
||||
@@ -31,7 +31,7 @@ index 86581579aed4d8bd18c7b7ea58e2dc4fee5315ba..ebef4f39af4928ed5bd206a82aa0e399
|
||||
boolean flag = source.getDirectEntity() instanceof ThrownPotion;
|
||||
boolean flag1;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 387da71594b75a43100790e8e8d69d9246598537..e813c87f4cc90fd31a4a48fcfffbe2b4407e5f5d 100644
|
||||
index 43f42895c745be0fb809db856083dbea5def5776..68b19f66b38ffecfa05aaa7ec1187fb0967ebd57 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -244,6 +244,12 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index ea1ecc287a75860fd8275d604fb9b130d355894b..267e3ddaed711ee275bf64855c0382df81d1f12c 100644
|
||||
index a99d04b820c230422bc82a3e0e094a79ab0c5c33..9a3796a69dd8745a498be5f2bb06c50355af44ce 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -4368,6 +4368,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -4511,6 +4511,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.yRotO = this.getYRot();
|
||||
}
|
||||
|
||||
@@ -19,13 +19,13 @@ index ea1ecc287a75860fd8275d604fb9b130d355894b..267e3ddaed711ee275bf64855c0382df
|
||||
+ // Purpur end
|
||||
+
|
||||
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
|
||||
if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip
|
||||
if (this.touchingUnloadedChunk()) {
|
||||
return false;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
index 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308bbb8ccf8 100644
|
||||
index e38416189d9dc72f0b5951a1f6430dbc4578c422..c562eeb5e865a57fbc595de47c5d4e2b90430026 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
@@ -75,6 +75,12 @@ public class Squid extends WaterAnimal {
|
||||
@@ -73,6 +73,12 @@ public class Squid extends WaterAnimal {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth);
|
||||
}
|
||||
|
||||
@@ -39,12 +39,12 @@ index 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
|
||||
diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java
|
||||
index e3dbf3066337a482460238f8a94d854cf88adfa2..5c70aa2ce1a9e89c8c271201b6755ea1325058ac 100644
|
||||
index 92394960fc76886f393cba02ac33c57739a4b383..494808b7bc2fb296b78e229ce138a937b7ac2c59 100644
|
||||
--- a/src/main/java/net/minecraft/world/phys/AABB.java
|
||||
+++ b/src/main/java/net/minecraft/world/phys/AABB.java
|
||||
@@ -374,4 +374,10 @@ public class AABB {
|
||||
@@ -502,4 +502,10 @@ public class AABB {
|
||||
public static AABB ofSize(Vec3 center, double dx, double dy, double dz) {
|
||||
return new AABB(center.x - dx / 2.0D, center.y - dy / 2.0D, center.z - dz / 2.0D, center.x + dx / 2.0D, center.y + dy / 2.0D, center.z + dz / 2.0D);
|
||||
return new AABB(center.x - dx / 2.0, center.y - dy / 2.0, center.z - dz / 2.0, center.x + dx / 2.0, center.y + dy / 2.0, center.z + dz / 2.0);
|
||||
}
|
||||
+
|
||||
+ // Purpur - tuinity added method
|
||||
@@ -54,7 +54,7 @@ index e3dbf3066337a482460238f8a94d854cf88adfa2..5c70aa2ce1a9e89c8c271201b6755ea1
|
||||
+ // Purpur
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index f20c2daa8dabb5f6131eb6e6b8dba66cf5ad812b..5bdd0d69eb2efcc6dbe0a3d48870e1906763948b 100644
|
||||
index b9faaf71e0cd5918b072d068bbc2096aa2805616..56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1478,6 +1478,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||
index c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a8c3aa979 100644
|
||||
index af24467ee37cfc06f692b3b02e68f6cfbaaa8d59..afe6b2170846273b41b694aa53dca4c31bf78b3f 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
||||
@@ -34,7 +34,7 @@ public class PortalShape {
|
||||
@@ -33,7 +33,7 @@ public class PortalShape {
|
||||
private static final int MIN_HEIGHT = 3;
|
||||
public static final int MAX_HEIGHT = 21;
|
||||
private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> {
|
||||
@@ -18,7 +18,7 @@ index c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a
|
||||
private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F;
|
||||
private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index e813c87f4cc90fd31a4a48fcfffbe2b4407e5f5d..6470f383b6f044877f0a4d8c91119d0eae451b8f 100644
|
||||
index 68b19f66b38ffecfa05aaa7ec1187fb0967ebd57..2f68cf2fc064a38ca059504a39d563d95d01643e 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -212,6 +212,7 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 267e3ddaed711ee275bf64855c0382df81d1f12c..f2b06c4930c39a3e47f0ea35dfa5997f21654674 100644
|
||||
index 9a3796a69dd8745a498be5f2bb06c50355af44ce..a93ae9de698ce97e8603deb1075e6dc5aeaab274 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -3087,7 +3087,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -3220,7 +3220,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
public void handleInsidePortal(BlockPos pos) {
|
||||
if (this.isOnPortalCooldown()) {
|
||||
this.setPortalCooldown();
|
||||
@@ -17,17 +17,17 @@ index 267e3ddaed711ee275bf64855c0382df81d1f12c..f2b06c4930c39a3e47f0ea35dfa5997f
|
||||
if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) {
|
||||
this.portalEntrancePos = pos.immutable();
|
||||
}
|
||||
@@ -3792,7 +3792,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -3914,7 +3914,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public boolean canChangeDimensions() {
|
||||
- return !this.isPassenger() && !this.isVehicle() && isAlive() && valid; // Paper
|
||||
+ return !this.isPassenger() && !this.isVehicle() && isAlive() && valid && (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper // Purpur
|
||||
- return !this.isPassenger() && !this.isVehicle() && isAlive() && valid; // Paper - Fix item duplication and teleport issues
|
||||
+ return !this.isPassenger() && !this.isVehicle() && isAlive() && valid && (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper - Fix item duplication and teleport issues // Purpur
|
||||
}
|
||||
|
||||
public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 5bdd0d69eb2efcc6dbe0a3d48870e1906763948b..3a4b67415d2e86d2d3d3709dd669c0d6ee56644a 100644
|
||||
index 56f34c0a0f7bc94a90bb1db32f8e30a590a3b38c..1f25407aafba71762a482f0b1982302fed14387f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -98,6 +98,7 @@ public class PurpurWorldConfig {
|
||||
@@ -5,18 +5,19 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index 3c65041eed148fe30be3c73e423433e37ae58cc5..07cbcb7f5a77b75ba10ccb470502c73fab17784e 100644
|
||||
index aa351df679f300018367244c7ccb3e5a59e9276f..11bd76d79bbfff68734d8ee1095f21c5c50e7bde 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -1110,5 +1110,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
public void setSafeFallDistance(float safeFallDistance) {
|
||||
getHandle().safeFallDistance = safeFallDistance;
|
||||
@@ -1173,4 +1173,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
this.getHandle().setYBodyRot(bodyYaw);
|
||||
}
|
||||
// Paper end - body yaw API
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void broadcastItemBreak(org.bukkit.inventory.EquipmentSlot slot) {
|
||||
+ if (slot == null) return;
|
||||
+ getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
|
||||
+ }
|
||||
// Purpur end
|
||||
+ // Purpur end
|
||||
}
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Customizable wither health and healing
|
||||
Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index e6d6341f895c763fee05db3a7a7e05a68b9d36e9..8796b779ac0550e32c7313b1280278de48070baf 100644
|
||||
index 0cc32342cf6c65466dd1e45f9097ca89b01036e4..8d2894bb1ae70f63c8fa67de3e9f7c6a9c940f3e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -525,8 +525,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -520,8 +520,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ index e6d6341f895c763fee05db3a7a7e05a68b9d36e9..8796b779ac0550e32c7313b1280278de
|
||||
|
||||
this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth());
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 3a4b67415d2e86d2d3d3709dd669c0d6ee56644a..2495cf8d28a2f11ddd1efefd6d772fccf1e488ba 100644
|
||||
index 1f25407aafba71762a482f0b1982302fed14387f..beea39d7cdbca783de7248a5c40ea2c7ab02e5b5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1717,6 +1717,8 @@ public class PurpurWorldConfig {
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world
|
||||
In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index c0f11d06e077c41d65b25396a14a4d81a39993e2..8824d5e4b6d0ab504dd80b0cceef743b456d7e2e 100644
|
||||
index b02d9db8442b209a9df27e417be71b11d426878b..1c74802577e056b9023dcc2cbec5885d02fe2c92 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -707,7 +707,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -714,7 +714,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
this.dragonParts = new Int2ObjectOpenHashMap();
|
||||
this.tickTime = flag1;
|
||||
this.server = minecraftserver;
|
||||
@@ -36,10 +36,10 @@ index c0f11d06e077c41d65b25396a14a4d81a39993e2..8824d5e4b6d0ab504dd80b0cceef743b
|
||||
ChunkGenerator chunkgenerator = worlddimension.generator();
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||
index 8385eb1d60f377da94e3178ab506feefb43563fd..a5443f92786427c42092aec8350e7ab37704db7a 100644
|
||||
index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb83305733b480179 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
||||
@@ -159,7 +159,17 @@ public class WanderingTraderSpawner implements CustomSpawner {
|
||||
@@ -160,7 +160,17 @@ public class WanderingTraderSpawner implements CustomSpawner {
|
||||
int k = pos.getX() + this.random.nextInt(range * 2) - range;
|
||||
int l = pos.getZ() + this.random.nextInt(range * 2) - range;
|
||||
int i1 = world.getHeight(Heightmap.Types.WORLD_SURFACE, k, l);
|
||||
@@ -56,10 +56,10 @@ index 8385eb1d60f377da94e3178ab506feefb43563fd..a5443f92786427c42092aec8350e7ab3
|
||||
+ }
|
||||
+ // Purpur end
|
||||
|
||||
if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) {
|
||||
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
|
||||
blockposition1 = blockposition2;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 2495cf8d28a2f11ddd1efefd6d772fccf1e488ba..8b1b424a61397f7e3c002611de961718046f0149 100644
|
||||
index beea39d7cdbca783de7248a5c40ea2c7ab02e5b5..ce5db64c233bac3800a715e66aada4740bdad95b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -69,6 +69,12 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Raid cooldown setting
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
|
||||
index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1636def75 100644
|
||||
index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e2679480d4d412c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java
|
||||
@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3;
|
||||
@@ -26,6 +26,7 @@ import net.minecraft.world.phys.Vec3;
|
||||
public class Raids extends SavedData {
|
||||
|
||||
private static final String RAID_FILE_ID = "raids";
|
||||
@@ -16,7 +16,7 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1
|
||||
public final Map<Integer, Raid> raidMap = Maps.newHashMap();
|
||||
private final ServerLevel level;
|
||||
private int nextAvailableID;
|
||||
@@ -54,6 +55,17 @@ public class Raids extends SavedData {
|
||||
@@ -51,6 +52,17 @@ public class Raids extends SavedData {
|
||||
|
||||
public void tick() {
|
||||
++this.tick;
|
||||
@@ -31,25 +31,25 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1
|
||||
+ });
|
||||
+ }
|
||||
+ // Purpur end
|
||||
Iterator iterator = this.raidMap.values().iterator();
|
||||
Iterator<Raid> iterator = this.raidMap.values().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
@@ -138,11 +150,13 @@ public class Raids extends SavedData {
|
||||
}
|
||||
@@ -122,11 +134,13 @@ public class Raids extends SavedData {
|
||||
*/
|
||||
|
||||
if (flag) {
|
||||
if (!raid.isStarted() || (raid.isInProgress() && raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel())) { // CraftBukkit - fixed a bug with raid: players could add up Bad Omen level even when the raid had finished
|
||||
+ if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur
|
||||
// CraftBukkit start
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) {
|
||||
player.removeEffect(MobEffects.BAD_OMEN);
|
||||
player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN);
|
||||
return null;
|
||||
}
|
||||
+ if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur
|
||||
|
||||
if (!this.raidMap.containsKey(raid.getId())) {
|
||||
if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) {
|
||||
this.raidMap.put(raid.getId(), raid);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8b1b424a61397f7e3c002611de961718046f0149..bcee031a53e24a6c3731c2e0555f53ad2c5d81e8 100644
|
||||
index ce5db64c233bac3800a715e66aada4740bdad95b..9654023afbb0569d5d814368b93b74dedda905a4 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -109,6 +109,7 @@ public class PurpurWorldConfig {
|
||||
@@ -7,11 +7,11 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim
|
||||
The config remains for migration purposes.
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index bcee031a53e24a6c3731c2e0555f53ad2c5d81e8..472f3cb5775aed6d902928b9dafe99a139d475d5 100644
|
||||
index 9654023afbb0569d5d814368b93b74dedda905a4..8a577d78d63adc799de71f96b45320372c346552 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -286,6 +286,39 @@ public class PurpurWorldConfig {
|
||||
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
|
||||
@@ -318,6 +318,40 @@ public class PurpurWorldConfig {
|
||||
});
|
||||
}
|
||||
|
||||
+ private static boolean projectileDespawnRateSettingsMigrated = false;
|
||||
@@ -30,7 +30,7 @@ index bcee031a53e24a6c3731c2e0555f53ad2c5d81e8..472f3cb5775aed6d902928b9dafe99a1
|
||||
+ migrateProjectileDespawnRateSettings(EntityType.SMALL_FIREBALL);
|
||||
+ migrateProjectileDespawnRateSettings(EntityType.SNOWBALL);
|
||||
+ migrateProjectileDespawnRateSettings(EntityType.WITHER_SKULL);
|
||||
+ //PufferfishConfig.save();
|
||||
+ //PufferfishConfig.save(); // TODO: Pufferfish
|
||||
+ set("gameplay-mechanics.projectile-despawn-rates", null);
|
||||
+ // pufferfish's entity_timeout is a global config
|
||||
+ // we only want to migrate values from the
|
||||
@@ -39,6 +39,7 @@ index bcee031a53e24a6c3731c2e0555f53ad2c5d81e8..472f3cb5775aed6d902928b9dafe99a1
|
||||
+ }
|
||||
+ }
|
||||
+ private void migrateProjectileDespawnRateSettings(EntityType<?> type) {
|
||||
+ // TODO: Pufferfish
|
||||
+ //String pufferName = "entity_timeouts." + type.id.toUpperCase(Locale.ROOT);
|
||||
+ //int value = getInt("gameplay-mechanics.projectile-despawn-rates." + type.id, -1);
|
||||
+ //if (value != -1 && PufferfishConfig.getRawInt(pufferName, -1) == -1) {
|
||||
@@ -47,6 +48,6 @@ index bcee031a53e24a6c3731c2e0555f53ad2c5d81e8..472f3cb5775aed6d902928b9dafe99a1
|
||||
+ //}
|
||||
+ }
|
||||
+
|
||||
public boolean silkTouchEnabled = false;
|
||||
public String silkTouchSpawnerName = "<reset><white>Monster Spawner";
|
||||
public List<String> silkTouchSpawnerLore = new ArrayList<>();
|
||||
public boolean anvilAllowColors = false;
|
||||
public boolean anvilColorsUseMiniMessage;
|
||||
private void anvilSettings() {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
|
||||
index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952c34ba8e3 100644
|
||||
index c72d6bccf7d72d08d388c65936a89c92261c7860..ee746753515c9cea8dd246f4f56e6781956726c1 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
|
||||
@@ -136,6 +136,10 @@ public class MobGoalHelper {
|
||||
@@ -137,6 +137,10 @@ public class MobGoalHelper {
|
||||
static {
|
||||
// TODO these kinda should be checked on each release, in case obfuscation changes
|
||||
deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee");
|
||||
@@ -20,16 +20,16 @@ index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952
|
||||
ignored.add("goal_selector_1");
|
||||
ignored.add("goal_selector_2");
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c2e2a5e00 100644
|
||||
index 1d283484be270497859e23e3bb4ab38c09af23e6..b02cdbaa0455319b1e8a7e777e64ff4a56590388 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
@@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -123,7 +123,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D));
|
||||
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class));
|
||||
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget));
|
||||
- if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Paper
|
||||
- if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Paper - Check drowned for villager aggression config
|
||||
+ // Purpur start
|
||||
+ if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Spigot
|
||||
+ if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Paper - Check drowned for villager aggression config
|
||||
+ @Override
|
||||
+ public boolean canUse() {
|
||||
+ return (level().purpurConfig.zombieAggressiveTowardsVillagerWhenLagging || !level().getServer().server.isLagging()) && super.canUse();
|
||||
@@ -45,10 +45,10 @@ index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false));
|
||||
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654d10a9dd3 100644
|
||||
index 555b86925b8d848fad40a838dd98607db8741e3b..3d42b2ea26217243dba96174ff0eadbcdd81a6cd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
@@ -157,7 +157,19 @@ public class Zombie extends Monster {
|
||||
@@ -154,7 +154,19 @@ public class Zombie extends Monster {
|
||||
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
|
||||
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class));
|
||||
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
|
||||
@@ -70,10 +70,10 @@ index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654
|
||||
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43e5cbe4b3 100644
|
||||
index 8a577d78d63adc799de71f96b45320372c346552..69c433dd27be4a67052d73620c80d48ed6566034 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1850,6 +1850,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1851,6 +1851,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombieJockeyOnlyBaby = true;
|
||||
public double zombieJockeyChance = 0.05D;
|
||||
public boolean zombieJockeyTryExistingChickens = true;
|
||||
@@ -81,11 +81,11 @@ index 472f3cb5775aed6d902928b9dafe99a139d475d5..45fc13436aa43da593704d142202eb43
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||
@@ -1864,6 +1865,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1865,6 +1866,7 @@ public class PurpurWorldConfig {
|
||||
zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby);
|
||||
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
|
||||
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
|
||||
+ zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
|
||||
}
|
||||
|
||||
public boolean zombieHorseRidableInWater = false;
|
||||
public boolean zombieHorseRidable = false;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
|
||||
index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..3532db21cee82c18f95c540d24b2071585d71c4e 100644
|
||||
index e314f36951e9ac15c57137e24fce8c410373130a..21dfb8e91c5427ac12133de2c05d923d87adf5ba 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
|
||||
@@ -39,6 +39,7 @@ public final class Ingredient implements Predicate<ItemStack> {
|
||||
@@ -41,6 +41,7 @@ public final class Ingredient implements Predicate<ItemStack> {
|
||||
@Nullable
|
||||
private IntList stackingIds;
|
||||
public boolean exact; // CraftBukkit
|
||||
@@ -16,7 +16,7 @@ index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..3532db21cee82c18f95c540d24b20715
|
||||
public static final Codec<Ingredient> CODEC = Ingredient.codec(true);
|
||||
public static final Codec<Ingredient> CODEC_NONEMPTY = Ingredient.codec(false);
|
||||
|
||||
@@ -70,6 +71,12 @@ public final class Ingredient implements Predicate<ItemStack> {
|
||||
@@ -72,6 +73,12 @@ public final class Ingredient implements Predicate<ItemStack> {
|
||||
} else if (this.isEmpty()) {
|
||||
return itemstack.isEmpty();
|
||||
} else {
|
||||
@@ -30,10 +30,10 @@ index 06fe5b056d78d42cdf78437eeabe1786d596b7f8..3532db21cee82c18f95c540d24b20715
|
||||
int i = aitemstack.length;
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
||||
index 13d25d118eb4d3ef35a4cdfb9bbde9ed83f6c04b..553ecc9b5631ffc0848a798bb3295f16d1722c1f 100644
|
||||
index 6ba29875d78ede4aa7978ff689e588f7fed11528..4afec4387971612f62b825e9e56c2ead7424a7c2 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
||||
@@ -30,6 +30,7 @@ public interface CraftRecipe extends Recipe {
|
||||
@@ -29,6 +29,7 @@ public interface CraftRecipe extends Recipe {
|
||||
} else if (bukkit instanceof RecipeChoice.ExactChoice) {
|
||||
stack = new Ingredient(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> new net.minecraft.world.item.crafting.Ingredient.ItemValue(CraftItemStack.asNMSCopy(mat))));
|
||||
stack.exact = true;
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Flying squids! Oh my!
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java
|
||||
index dc99e7f0e6f173c1313c0d5e9ea5dd6bdbdac169..19f95ddb2fa9dd264947a8b0033dd7437ee66c7f 100644
|
||||
index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca84be6823 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/GlowSquid.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java
|
||||
@@ -41,6 +41,11 @@ public class GlowSquid extends Squid {
|
||||
@@ -21,10 +21,10 @@ index dc99e7f0e6f173c1313c0d5e9ea5dd6bdbdac169..19f95ddb2fa9dd264947a8b0033dd743
|
||||
protected ParticleOptions getInkParticle() {
|
||||
return ParticleTypes.GLOW_SQUID_INK;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0344c601f 100644
|
||||
index c562eeb5e865a57fbc595de47c5d4e2b90430026..f0261117a4f8ae240b3b991053deaf8d6419b5b4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
@@ -81,6 +81,15 @@ public class Squid extends WaterAnimal {
|
||||
@@ -79,6 +79,15 @@ public class Squid extends WaterAnimal {
|
||||
return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck);
|
||||
}
|
||||
|
||||
@@ -40,28 +40,28 @@ index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
|
||||
@@ -153,6 +162,7 @@ public class Squid extends WaterAnimal {
|
||||
@@ -151,6 +160,7 @@ public class Squid extends WaterAnimal {
|
||||
}
|
||||
|
||||
if (this.isInWaterOrBubble()) {
|
||||
+ if (canFly()) setNoGravity(!wasTouchingWater); // Purpur
|
||||
if (this.tentacleMovement < (float)Math.PI) {
|
||||
float f = this.tentacleMovement / (float)Math.PI;
|
||||
this.tentacleAngle = Mth.sin(f * f * (float)Math.PI) * (float)Math.PI * 0.25F;
|
||||
@@ -366,7 +376,7 @@ public class Squid extends WaterAnimal {
|
||||
if (this.tentacleMovement < (float) Math.PI) {
|
||||
float f = this.tentacleMovement / (float) Math.PI;
|
||||
this.tentacleAngle = Mth.sin(f * f * (float) Math.PI) * (float) Math.PI * 0.25F;
|
||||
@@ -358,7 +368,7 @@ public class Squid extends WaterAnimal {
|
||||
int i = this.squid.getNoActionTime();
|
||||
if (i > 100) {
|
||||
this.squid.setMovementVector(0.0F, 0.0F, 0.0F);
|
||||
- } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) {
|
||||
+ } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur
|
||||
float f = this.squid.getRandom().nextFloat() * ((float)Math.PI * 2F);
|
||||
float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2);
|
||||
float g = Mth.cos(f) * 0.2F;
|
||||
float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a230bca41 100644
|
||||
index 69c433dd27be4a67052d73620c80d48ed6566034..636f1a2962ee48a42a644b241569f08e7d57097c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -902,10 +902,12 @@ public class PurpurWorldConfig {
|
||||
@@ -903,10 +903,12 @@ public class PurpurWorldConfig {
|
||||
public boolean glowSquidRidable = false;
|
||||
public boolean glowSquidControllable = true;
|
||||
public double glowSquidMaxHealth = 10.0D;
|
||||
@@ -74,7 +74,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a
|
||||
}
|
||||
|
||||
public boolean goatRidable = false;
|
||||
@@ -1537,6 +1539,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1538,6 +1540,7 @@ public class PurpurWorldConfig {
|
||||
public double squidMaxHealth = 10.0D;
|
||||
public boolean squidImmuneToEAR = true;
|
||||
public double squidOffsetWaterCheck = 0.0D;
|
||||
@@ -82,7 +82,7 @@ index 45fc13436aa43da593704d142202eb43e5cbe4b3..a85d4a9c2583f8233032b680c89b147a
|
||||
private void squidSettings() {
|
||||
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
|
||||
squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
|
||||
@@ -1548,6 +1551,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1549,6 +1552,7 @@ public class PurpurWorldConfig {
|
||||
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
|
||||
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
|
||||
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
|
||||
@@ -5,29 +5,29 @@ Subject: [PATCH] Infinity bow settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c8ebe6366 100644
|
||||
index 5ca843df5b4caa668953e5e36a9b20fabeb35046..4ae6b98b6a0d41e949b055f0678200a672a1df38 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
@@ -38,7 +38,7 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable {
|
||||
float f = BowItem.getPowerForTime(j);
|
||||
|
||||
if ((double) f >= 0.1D) {
|
||||
- boolean flag1 = flag && itemstack1.is(Items.ARROW);
|
||||
+ boolean flag1 = flag && ((itemstack1.is(Items.ARROW) && world.purpurConfig.infinityWorksWithNormalArrows) || (itemstack1.is(Items.TIPPED_ARROW) && world.purpurConfig.infinityWorksWithTippedArrows) || (itemstack1.is(Items.SPECTRAL_ARROW) && world.purpurConfig.infinityWorksWithSpectralArrows)); // Purpur if (!world.isClientSide) {
|
||||
|
||||
if (!world.isClientSide) {
|
||||
ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW);
|
||||
@@ -132,7 +132,7 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable {
|
||||
ItemStack itemstack = user.getItemInHand(hand);
|
||||
boolean flag = !user.getProjectile(itemstack).isEmpty();
|
||||
|
||||
- if (!user.getAbilities().instabuild && !flag) {
|
||||
+ if (!(world.purpurConfig.infinityWorksWithoutArrows && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, itemstack) > 0) && !user.getAbilities().instabuild && !flag) { // Purpur
|
||||
return InteractionResultHolder.fail(itemstack);
|
||||
@@ -29,7 +29,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
int i = this.getUseDuration(stack) - remainingUseTicks;
|
||||
float f = getPowerForTime(i);
|
||||
if (!((double)f < 0.1)) {
|
||||
- List<ItemStack> list = draw(stack, itemStack, player);
|
||||
+ List<ItemStack> list = draw(stack, itemStack, player, !((itemStack.is(Items.ARROW) && world.purpurConfig.infinityWorksWithNormalArrows) || (itemStack.is(Items.TIPPED_ARROW) && world.purpurConfig.infinityWorksWithTippedArrows) || (itemStack.is(Items.SPECTRAL_ARROW) && world.purpurConfig.infinityWorksWithSpectralArrows)));
|
||||
if (!world.isClientSide() && !list.isEmpty()) {
|
||||
this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null);
|
||||
}
|
||||
@@ -81,7 +81,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
|
||||
ItemStack itemStack = user.getItemInHand(hand);
|
||||
boolean bl = !user.getProjectile(itemStack).isEmpty();
|
||||
- if (!user.hasInfiniteMaterials() && !bl) {
|
||||
+ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) {
|
||||
return InteractionResultHolder.fail(itemStack);
|
||||
} else {
|
||||
user.startUsingItem(hand);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a85d4a9c2583f8233032b680c89b147a230bca41..598a9f2dae899513cf10e33c8baad5991597b55c 100644
|
||||
index 636f1a2962ee48a42a644b241569f08e7d57097c..b66182a7b52d16aac78b61cd9c077236a2abbe33 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -140,6 +140,17 @@ public class PurpurWorldConfig {
|
||||
@@ -5,12 +5,12 @@ Subject: [PATCH] Configurable daylight cycle
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
|
||||
index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaaec05a2791 100644
|
||||
index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd884443c56a 100644
|
||||
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
|
||||
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.network.protocol.Packet;
|
||||
|
||||
public class ClientboundSetTimePacket implements Packet<ClientGamePacketListener> {
|
||||
@@ -10,7 +10,7 @@ public class ClientboundSetTimePacket implements Packet<ClientGamePacketListener
|
||||
ClientboundSetTimePacket::write, ClientboundSetTimePacket::new
|
||||
);
|
||||
private final long gameTime;
|
||||
- private final long dayTime;
|
||||
+ private long dayTime; public void setDayTime(long dayTime) { this.dayTime = dayTime; } // Purpur
|
||||
@@ -18,10 +18,10 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae
|
||||
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
|
||||
this.gameTime = time;
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046aeb8e00cb3 100644
|
||||
index 3a622f5274f036608950702291c1e624488a6faa..6dd29845955b65e269a0487501330917effe7688 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1523,7 +1523,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1754,7 +1754,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
long worldTime = level.getGameTime();
|
||||
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
|
||||
for (Player entityhuman : level.players()) {
|
||||
@@ -31,10 +31,10 @@ index c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046ae
|
||||
}
|
||||
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a50b6c19f3 100644
|
||||
index 1c74802577e056b9023dcc2cbec5885d02fe2c92..aef5157d183b69903fd215a5ce30c0705ba8fa3e 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -214,6 +214,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -220,6 +220,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
private final StructureManager structureManager;
|
||||
private final StructureCheck structureCheck;
|
||||
private final boolean tickTime;
|
||||
@@ -43,7 +43,7 @@ index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a5
|
||||
private final RandomSequences randomSequences;
|
||||
public long lastMidTickExecuteFailure; // Paper - execute chunk tasks mid tick
|
||||
|
||||
@@ -786,6 +788,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -793,6 +795,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
|
||||
this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system
|
||||
this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system
|
||||
@@ -51,7 +51,7 @@ index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a5
|
||||
}
|
||||
|
||||
// Paper start
|
||||
@@ -961,6 +964,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -969,6 +972,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
this.serverLevelData.setGameTime(i);
|
||||
this.serverLevelData.getScheduledEvents().tick(this.server, i);
|
||||
if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
|
||||
@@ -65,7 +65,7 @@ index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a5
|
||||
this.setDayTime(this.levelData.getDayTime() + 1L);
|
||||
}
|
||||
|
||||
@@ -969,7 +979,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -977,7 +987,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
|
||||
public void setDayTime(long timeOfDay) {
|
||||
this.serverLevelData.setDayTime(timeOfDay);
|
||||
@@ -88,7 +88,7 @@ index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a5
|
||||
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
|
||||
Iterator iterator = this.customSpawners.iterator();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 598a9f2dae899513cf10e33c8baad5991597b55c..7e8816a3bd9c60844ca0fbb8674abf6c53b4d81c 100644
|
||||
index b66182a7b52d16aac78b61cd9c077236a2abbe33..d2ab4fe9ccb19f837a41bddddf29cfcc96fc3f96 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -122,6 +122,13 @@ public class PurpurWorldConfig {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Allow infinite and mending enchantments together
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
index 518d85a13c37a2f7d32ca0718323181048559986..2c4ce164ab3011f372ff1719c8d4a3331d8db55f 100644
|
||||
index 81cc05c929d612898609965d82454b89cd18f9f5..fa73c3d4b58ad8379963a9866d8f09e1d6abd663 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
@@ -19,6 +19,6 @@ public class ArrowInfiniteEnchantment extends Enchantment {
|
||||
@@ -7,6 +7,6 @@ public class ArrowInfiniteEnchantment extends Enchantment {
|
||||
|
||||
@Override
|
||||
public boolean checkCompatibility(Enchantment other) {
|
||||
- return other instanceof MendingEnchantment ? false : super.checkCompatibility(other);
|
||||
+ return other instanceof MendingEnchantment ? org.purpurmc.purpur.PurpurConfig.allowInfinityMending : super.checkCompatibility(other);
|
||||
- return !(other instanceof MendingEnchantment) && super.checkCompatibility(other);
|
||||
+ return !(other instanceof MendingEnchantment) && super.checkCompatibility(other) || other instanceof MendingEnchantment && org.purpurmc.purpur.PurpurConfig.allowInfinityMending; // Purpur
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 6470f383b6f044877f0a4d8c91119d0eae451b8f..de1a9b08946005d1235264c7658b51bbdc2c47c2 100644
|
||||
index 2f68cf2fc064a38ca059504a39d563d95d01643e..6d621a93aaf94927fa6c73e649dcdb8bbbaadd2a 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -246,6 +246,16 @@ public class PurpurConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Furnace uses lava from underneath
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||
index a18aadbf7ae83713e1f2b21553185d8000bc7699..b0afc384907bb75dfa26e432a2328fe080660019 100644
|
||||
index a99fe191c429bb528209dd0f31b509acf9cccbb5..ce2c424068001eec16032361baa206f6a5aa5332 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
|
||||
@@ -44,6 +44,7 @@ import net.minecraft.world.level.Level;
|
||||
@@ -45,6 +45,7 @@ import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.AbstractFurnaceBlock;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -16,7 +16,7 @@ index a18aadbf7ae83713e1f2b21553185d8000bc7699..b0afc384907bb75dfa26e432a2328fe0
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
// CraftBukkit start
|
||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||
@@ -324,6 +325,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||
@@ -335,6 +336,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||
}
|
||||
|
||||
ItemStack itemstack = (ItemStack) blockEntity.items.get(1);
|
||||
@@ -38,7 +38,7 @@ index a18aadbf7ae83713e1f2b21553185d8000bc7699..b0afc384907bb75dfa26e432a2328fe0
|
||||
boolean flag2 = !((ItemStack) blockEntity.items.get(0)).isEmpty();
|
||||
boolean flag3 = !itemstack.isEmpty();
|
||||
|
||||
@@ -409,6 +425,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||
@@ -420,6 +436,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
|
||||
setChanged(world, pos, state);
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ index a18aadbf7ae83713e1f2b21553185d8000bc7699..b0afc384907bb75dfa26e432a2328fe0
|
||||
|
||||
private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder<?> recipe, NonNullList<ItemStack> slots, int count) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7e8816a3bd9c60844ca0fbb8674abf6c53b4d81c..02aa54fbd0605b92de9263ba852ac04e24b2fdef 100644
|
||||
index d2ab4fe9ccb19f837a41bddddf29cfcc96fc3f96..163d2cfaeaa301c34f04ed13d8ff881ecb868224 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -409,6 +409,17 @@ public class PurpurWorldConfig {
|
||||
@@ -410,6 +410,17 @@ public class PurpurWorldConfig {
|
||||
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user