Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@46c6f49 Fix Registry#getKey implementation
PaperMC/Paper@4c6ea84 move junit platform dep to -server and -api
PaperMC/Paper@c31d95e remove test plugin diff accidentally committed
PaperMC/Paper@90d50aa update .editorconfig
PaperMC/Paper@8ad15d6 Update minecraft dir references
PaperMC/Paper@083c083 Fix a bunch more issues arising from mutable types (#11769)
PaperMC/Paper@eb793c3 [ci skip] more cleanup from repo reorg
PaperMC/Paper@f8bf600 Fix potion effect type removal (#11778)
PaperMC/Paper@188124b Fix totems negating incorrect item (#11776)
PaperMC/Paper@a0b3326 refactor registry entry to detach 'delayed' from other meta
PaperMC/Paper@cbf630d Move missing import into feature patches to fix pre-features compile
PaperMC/Paper@17f649d Fix PlayerTradeEvent visual issue when being cancelled (#11773)
PaperMC/Paper@976b0a4 [ci skip] Simplify and update contribution guidelines
PaperMC/Paper@63c94c9 [ci skip] Comment out update tasks, update comments
PaperMC/Paper@62d4130 [ci skip] Fix Inventory#addItem javadoc mismatch with behaviour (#11782)
PaperMC/Paper@bd4c235 Throw during plugin update folder process on failed rename/delete (#11784)
PaperMC/Paper@793d361 Fix recipe book items order (#11787)
PaperMC/Paper@c768099 Fix tripwires (#11790)
PaperMC/Paper@17d76ae Correctly die when cancelling EntityResurrectEvent (#11785)
PaperMC/Paper@aa2c52b Fix dropper inventory var
PaperMC/Paper@d0d0efe Partially revert 083c083188 for Transformation (#11798)
PaperMC/Paper@b8a0541 Fix 0 parameter in Player#applyMending (#11802)
PaperMC/Paper@9e2d39c Fix double chest identification (#11812)
PaperMC/Paper@321d17c [ci skip] Only build PRs on correct label (#11811)
PaperMC/Paper@d568e17 Port basic lookAt methods from Player to Entity (#11775)
PaperMC/Paper@25cc3d8 Fix EnchantmentView#setOffers length precondition being flipped (#11818)
PaperMC/Paper@763b32d Fix framed maps looping through all players in world (#11819)
PaperMC/Paper@946314f Remove disableTeleportationSuffocationCheck config (#11822)
PaperMC/Paper@140577b Fix broken field rename compat for instrument "feel_goat_horn" (#11824)
PaperMC/Paper@a07cec1 Add effective name to ItemStack (#11770)
PaperMC/Paper@3a479ea Add Registry#getTags (#11795)
PaperMC/Paper@d85d318 Fix NullPointerException in PlayerInteractEvent#getClickedPosition (#11827)
PaperMC/Paper@3331805 Deprecate #furnace_materials item tag (#11823)
PaperMC/Paper@c9a904e Fix keepalive logic resetting counter
PaperMC/Paper@a8f850a temporarily revert OldEnum toString changes (#11829)
PaperMC/Paper@a14c06b fix annotation test for null marked inner classes (#11826)
PaperMC/Paper@f51aa3e Fix BlockRedstoneEvent for tripwire hooks (#11791)
PaperMC/Paper@af2812f For new registry values, allow copying from existing (#11796)
PaperMC/Paper@0efd301 Fix suggestions for ResourceLocation (#11830)
PaperMC/Paper@aac246a Expand on entity serialization API (#11807)
PaperMC/Paper@953f6f9 Banner pattern registry modification (#11803)
PaperMC/Paper@a5b8df6 add tagkey file for entity type (#11832)
PaperMC/Paper@c530c39 More var name fixes
PaperMC/Paper@2b73d19 More var name fixes
PaperMC/Paper@326c687 Fix whack diff from last commit
PaperMC/Paper@13c94e4 Updated adventure to 4.18.0 (#11809)
PaperMC/Paper@ca8709b Fix more incorrect array nullability annotations (#11836)
PaperMC/Paper@e10dcbf [ci skip] Improve build workflow conditions (#11842)
PaperMC/Paper@b4051db Handle disabled vanilla registry values correctly (#11781)
PaperMC/Paper@4b89390 Fix contextual map renderer memory leak (#11841)
PaperMC/Paper@5c7537c Add DamageType RegistryEvent (#11783)
PaperMC/Paper@33411ec Properly remove UnsafeValues#getDamageEffect
PaperMC/Paper@0629524 Directly build Art (#11813)
PaperMC/Paper@e0abc5f Do not spawn fire for visual lightning (#11845)
PaperMC/Paper@dac977a Correctly force particles (#11850)
PaperMC/Paper@feb8756 Add datapack registration lifecycle event (#11804)
PaperMC/Paper@18da1ae [ci skip] update DiscoveredDatapack javadoc
PaperMC/Paper@93a3df0 Extend HumanEntity#dropItem API (#11810)
PaperMC/Paper@287eb52 Use hidden classes for event executors (#11848)
PaperMC/Paper@887f3f7 [ci skip] Replace FQN with import in EventExecutor
PaperMC/Paper@d00344a update jb annotations to 26.0.1 (#11860)
PaperMC/Paper@60edd61 [ci skip] Fix spelling of ignition's word into javadoc (#11864)
PaperMC/Paper@a81990e Update mache, fixes dev bundle use with Java 23
PaperMC/Paper@1e4669e [ci skip] Clarify loot table behavior when set to null. (#11861)
PaperMC/Paper@9298f59 Update paperweight to 2.0.0-beta.10
PaperMC/Paper@bdfad1c Add sendRich/PlainMessage methods to Server (#11872)
PaperMC/Paper@1dd52be Use playerlist whitelist status instead of properties
PaperMC/Paper@83995d7 Fix settings changes not being saved (#11881)
PaperMC/Paper@daddcf6 Fix JOML javadoc URL (#11883)
PaperMC/Paper@edde726 [ci skip] Add missing Nullable annotations for NMS DamageSource (#11875)
PaperMC/Paper@4106da7 Fix retain passengers teleport flag (#11858)
PaperMC/Paper@6ab1352 Improve performance of PoiCompetitorScan by unrolling stream (#11871)
PaperMC/Paper@33a590b Fix TargetHitEvent#getSignalStrength() post-hard-fork (#11897)
PaperMC/Paper@f367f10 Add rotation helpers to Location (#11908)
PaperMC/Paper@9f90b4c Fix ItemDamageEvents called for 0 damage (#11900)
PaperMC/Paper@486e521 Re-add droped MapLike spam fix (#11917)
PaperMC/Paper@3375570 Fix MapCanvas#drawImage (#11865)
PaperMC/Paper@49d15f6 Fix DiscoveredDatapack#getSource (#11928)
PaperMC/Paper@b34ae4f Fix wolves ignoring result of damage event (#11932)
PaperMC/Paper@efdcaa2 Fix removing the "LootTable" nbt tag from Block entities (#11929)
PaperMC/Paper@55f3f28 Reimplement ItemStack Obfuscation (#11817)
PaperMC/Paper@08fc33c Update CustomTimingsHandler Nag Message (#11923)
PaperMC/Paper@5e14504 [ci skip] Add missing deprecated docs for isEnabledByFeature (#11938)
PaperMC/Paper@4007171 Correct obfuscation of oversized items (#11944)
PaperMC/Paper@1b38f28 Fix reading recipes used on furnace (#11947)
PaperMC/Paper@b03d39b [ci skip] Update paperweight to 2.0.0-beta.13
PaperMC/Paper@6316a50 Make CraftServer#isPrimaryThread use TickThread check
PaperMC/Paper@ea7b961 Fix MapItem incorectly fetching water biomes on treasure maps (#11936)
PaperMC/Paper@b242f1e Prevent day cycle on the client when using fixed time (#11924)
PaperMC/Paper@3e42518 Fix snow accumulating in custom biomes without precipitation (#11854)
PaperMC/Paper@3d9ecc4 Log thread check parameters when the thread check fails
PaperMC/Paper@3ad3fbc Update to Concurrentutil 0.0.3
PaperMC/Paper@79ffcd1 Fix vanilla parity on enchantable items with no targets (#11896)
PaperMC/Paper@19ddbef Fix InventoryAction wrong for Bundles (#11902)
PaperMC/Paper@ac3aaa2 Don't use delayed registries in impl anywhere (#11918)
PaperMC/Paper@775002a [ci skip] Remove nullable from SyncedEntityData#packAll (#11949)
PaperMC/Paper@c949225 MenuType API addition InventoryView Builders (#11816)
PaperMC/Paper@c2f24e1 Feat: Add 'with' methods to CommandSourceStack (#11868)
PaperMC/Paper@ed75b0e Disallow calling JavaPlugin#getCommand during onEnable for Paper plugins (#11914)
PaperMC/Paper@08ac057 Rename getPotentialBedLocation to getPotentialRespawnLocation (#11950)
PaperMC/Paper@9746d73 Add back known movement check
PaperMC/Paper@e5542cf Hide unnecessary decorated pot data (#11957)
PaperMC/Paper@eb4db79 Make CommandSourceStack respect hidden players (#11898)
PaperMC/Paper@76617dd Add EntityEffectTickEvent (#11838)
PaperMC/Paper@86c6308 Fix locate command dist overflow/underflow (#11956)
PaperMC/Paper@2ea6aee Deprecate Turtle#isDigging (#11959)
PaperMC/Paper@ad74b67 Fix client visual desync if cooldown events are cancelled (#11892)
PaperMC/Paper@50c2c59 Fix unstable Suggestion comparison by sorting int suggestions before text ones (#11941)
PaperMC/Paper@3709150 Expose all possible block data states (#11958)
PaperMC/Paper@5e23d28 Remove entity tag selector tag completion fix (#11964)
PaperMC/Paper@ab1b312 Call PlayerItemDamageEvent for tridents (#11899)
PaperMC/Paper@1bb3677 Remove deprecation from EntityRemoveEvent (#11961)
PaperMC/Paper@d69981b [ci skip] Remove redundant build configuration
PaperMC/Paper@6fde26d remove .paperassetsroot
PaperMC/Paper@fe75eaf split direct holder support up from ctor accepting Holder
This commit is contained in:
granny
2025-01-14 01:19:08 -08:00
committed by granny
parent a415bf72de
commit 6e45786e29
50 changed files with 163 additions and 153 deletions

View File

@@ -1,6 +1,6 @@
--- a/paper-server/build.gradle.kts
+++ b/paper-server/build.gradle.kts
@@ -20,8 +_,19 @@
@@ -21,6 +_,20 @@
// macheOldPath = file("F:\\Projects\\PaperTooling\\mache\\versions\\1.21.4\\src\\main\\java")
// gitFilePatches = true
@@ -12,16 +12,16 @@
+ outputDir = rootDirectory.dir("paper-server")
+ }
+ }
+
+ activeFork = purpur
+
paper {
- reobfMappingsPatch = layout.projectDirectory.file("../build-data/reobf-mappings-patch.tiny")
+ paper {
+ paperServerDir = upstreamsDirectory().map { it.dir("paper/paper-server") }
}
+ }
+
spigot {
@@ -104,7 +_,19 @@
buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42"
packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment
@@ -101,7 +_,20 @@
}
}
@@ -36,24 +36,25 @@
+ resources { srcDir("../paper-server/src/test/resources") }
+ }
+}
+
+val log4jPlugins = sourceSets.create("log4jPlugins") {
+ java { srcDir("../paper-server/src/log4jPlugins/java") }
+}
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
extendsFrom(configurations.compileClasspath.get())
}
@@ -123,7 +_,7 @@
// Paper end - configure mockito agent that is needed in newer java versions
@@ -119,7 +_,7 @@
}
dependencies {
- implementation(project(":paper-api"))
+ implementation(project(":purpur-api"))
implementation("ca.spottedleaf:concurrentutil:0.0.2") // Paper - Add ConcurrentUtil dependency
// Paper start
implementation("ca.spottedleaf:concurrentutil:0.0.3")
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
@@ -155,6 +_,10 @@
}
// Paper end - Use Velocity cipher
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
@@ -149,6 +_,10 @@
runtimeOnly("com.mysql:mysql-connector-j:9.1.0")
runtimeOnly("com.lmax:disruptor:3.4.4")
+ implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
+ implementation("org.mozilla:rhino-engine:1.7.14") // Purpur
@@ -62,14 +63,14 @@
runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6")
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
@@ -193,14 +_,14 @@
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() // Paper
@@ -188,14 +_,14 @@
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim()
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
- "Implementation-Title" to "Paper",
+ "Implementation-Title" to "Purpur", // Purpur
"Implementation-Version" to implementationVersion,
"Implementation-Vendor" to date, // Paper
"Implementation-Vendor" to date,
- "Specification-Title" to "Paper",
+ "Specification-Title" to "Purpur", // Purpur
"Specification-Version" to project.version,
@@ -81,4 +82,4 @@
+ "Brand-Name" to "Purpur", // Purpur
"Build-Number" to (build ?: ""),
"Build-Time" to buildTime.toString(),
"Git-Branch" to gitBranch, // Paper
"Git-Branch" to gitBranch,

View File

@@ -18,10 +18,10 @@ index 29d402620d2e1cbed94f941f933ae8eb5d786e7f..ec0998369158286fccb38c8e10c3cfa2
public boolean isLocalPlayer() {
return true;
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 6a8aa33bbfbf1cd5afcd40abede3176975e8fae9..2bd5a295be2500f198230a62f48900b51038d22b 100644
index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573964479b4 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1744,6 +1744,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1745,6 +1745,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
@@ -42,7 +42,7 @@ index 345e5c7aff07544e24f2e91d71585b06392d9927..fd84a5aac26bbf2de2c2fa8bb5bc76bc
public LevelChunk getChunkIfLoaded(int x, int z) {
return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 30f36d3beb477e3e37b4b2ca27cd84a58f1e1cc2..580818b9d2f992dd33b4831dbc612ba28c1bd725 100644
index bb8f89d9a5f0bb69baea6ba241cc391b43f2314e..e4a27ef7c201b2f8c9fbb12a7dbcf704b9a92f2f 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -848,6 +848,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -62,7 +62,7 @@ index 30f36d3beb477e3e37b4b2ca27cd84a58f1e1cc2..580818b9d2f992dd33b4831dbc612ba2
private void updatePlayerAttributes() {
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 4b1c9dc3f14973f9a1403d6cc407a31017f9a468..4dc6531bca6bd91d4f04e0559d21ce6ba07c05df 100644
index d0dc5d6f25b7514bc3c65bbef5b40703f6d0eed7..f524f1de2093e0a3bd2f3cf8806232b2211d0583 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2828,6 +2828,8 @@ public class ServerGamePacketListenerImpl
@@ -75,10 +75,10 @@ index 4b1c9dc3f14973f9a1403d6cc407a31017f9a468..4dc6531bca6bd91d4f04e0559d21ce6b
if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b7344dcf3 100644
index 474e5b8163e82a76aea8c4402d6acfcd366acaef..e4ee886f33ee63ae740cd89067c8ec81c12f2a62 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3157,6 +3157,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3155,6 +3155,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list);
}
@@ -92,7 +92,7 @@ index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
}
}
@@ -3198,6 +3205,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3196,6 +3203,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false;
}
// CraftBukkit end
@@ -107,7 +107,7 @@ index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b
if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) {
this.passengers = ImmutableList.of();
} else {
@@ -5121,4 +5136,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5119,4 +5134,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition());
}
// Paper end - Expose entity id counter
@@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e9760070c 100644
index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6a8fcbbfa 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -210,7 +210,7 @@ index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e
@Override
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
@@ -3535,8 +3536,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3537,8 +3538,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.pushEntities();
profilerFiller.pop();
// Paper start - Add EntityMoveEvent
@@ -223,7 +223,7 @@ index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
@@ -3546,6 +3549,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3548,6 +3551,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
}
}
@@ -1931,7 +1931,7 @@ index 354ec2b987882d8f40ef4ac5257183d2fda73bb8..98cb91574c8d2bdb6d180256f657ecc6
this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0, this.turtle.getSpeed() * d1 * 0.1, 0.0));
}
diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java
index 2455164db9612c97008e4bca76bdcc2e7bf3d0b1..9c517f7afdf18f3cfa7c30da00066b3757f2dbbf 100644
index 6cc3893742b443ec84942252910cf444cdbf0c96..90609ff3060322110ece27630de0abae1a6370a8 100644
--- a/net/minecraft/world/entity/animal/Wolf.java
+++ b/net/minecraft/world/entity/animal/Wolf.java
@@ -180,9 +180,32 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
@@ -5047,7 +5047,7 @@ index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2
if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading
this.setTradingPlayer(player);
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 1b70c8b75d8bd0503e5329caa0b7c42ec7f7479f..898964b9a73950fa9e8de95f84faa74935c57ee6 100644
index 7ce6d81b1b1dff25e8986d2c7a0c90afd2855f42..d0321875d2a2b612b438cc7973a7e9f172a61778 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -220,6 +220,19 @@ public abstract class Player extends LivingEntity {

View File

@@ -37,7 +37,7 @@ index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8
public boolean isWhiteListed(GameProfile profile) {
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index f46593419be333ed201ff6a9b1e46042fe04daab..f850e2a8fe2e5203765ec25b9aba06411cb771ae 100644
index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f424e14660 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -202,6 +202,7 @@ public abstract class Player extends LivingEntity {
@@ -49,10 +49,10 @@ index f46593419be333ed201ff6a9b1e46042fe04daab..f850e2a8fe2e5203765ec25b9aba0641
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
index cf5b99c1337a7eafa9f5e8b2062c32ab4ff78968..e046d070e24c892743b241136f18c14c10f1efd9 100644
index 280169afbd637eeb67ddf7eaeb4eecd464a128d5..ba7730a24831efa33de4c5ffce57bfa7177f89d6 100644
--- a/net/minecraft/world/inventory/ChestMenu.java
+++ b/net/minecraft/world/inventory/ChestMenu.java
@@ -61,10 +61,30 @@ public class ChestMenu extends AbstractContainerMenu {
@@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu {
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, 6);
}
@@ -108,19 +108,21 @@ index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958a
this.activeChest = enderChestBlockEntity;
}
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
index 2f60681c50e3656400e84fe9a7670e0412743853..6e3d28aa6206d969815889ed327a5e343b8658d9 100644
index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5a0ecbbf1 100644
--- a/net/minecraft/world/level/block/EnderChestBlock.java
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
@@ -84,7 +84,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
@@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
enderChestInventory.setActiveChest(enderChestBlockEntity); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
if (level instanceof ServerLevel serverLevel && player.openMenu(
- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE)
+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, enderChestInventory) : ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE) // Purpur - Barrels and enderchests 6 rows
new SimpleMenuProvider(
- (containerId, playerInventory, player1) -> ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE
- )
+ (containerId, playerInventory, player1) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, playerInventory, player, enderChestInventory) : ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE
+ ) // Purpur - Barrels and enderchests 6 rows
).isPresent()) {
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
player.awardStat(Stats.OPEN_ENDERCHEST);
@@ -98,6 +98,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
@@ -100,6 +100,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
}
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index a82b57734afdd5f470db14c8ad953b5a5d1f69bd..f70bf8f32064a8ec33367107cfcc51b7780f5870 100644
index d1f7da0f4adc4609247c349d7ccdb0e6bba9b8f8..6de5f527c018201d874e06a45c9509fa12125766 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3593,7 +3593,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3595,7 +3595,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (i1 % 2 == 0) {
List<EquipmentSlot> list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
EquipmentSlot equipmentSlot = Util.getRandom(list, this.random);
@@ -53,7 +53,7 @@ index 75a9bd205f32b77c5d242cb9fac0f571ce36045a..b03f182c62c699cc222e67c1ae6eadf9
itemInHand.shrink(1); // Moved up from below
} else {
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index ef66c7b03696c2601d1fd0379fa038336ee0bb87..735ede5c5aa4b74639660fb4966101dcf63a2d75 100644
index c5426585f53a3139dc9d188a73e3a7ff4cb2e492..264b713e8b7c3d5f7d8e1facc90a60349f2cf414 100644
--- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java
@@ -733,6 +733,14 @@ public final class ItemStack implements DataComponentHolder {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index f70bf8f32064a8ec33367107cfcc51b7780f5870..bbf8dce405942b2840028d12f0d80fc0779bc14f 100644
index 6de5f527c018201d874e06a45c9509fa12125766..2dc588e2d503c16ccd2589ce18abd2ecebbc8e74 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -1816,7 +1816,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (this.level() instanceof ServerLevel serverLevel) {
boolean var6 = false;
if (this.dead && entitySource instanceof WitherBoss) { // Paper
@@ -268,10 +268,10 @@ index 4a752ace041228f095af7b1b4878a03c5ed2381f..3e8b5d042eddb817dee2504ff9aa263f
org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity());
this.level().getCraftServer().getPluginManager().callEvent(event);
diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java
index af71a71ff11b418a43728fd464b1e673d593140f..a7c5896226e57c6dea1bea894c5f23fcb5481fcd 100644
index ad0bb896d6ea669ce88bfe6490319e8ba7a29001..843f1396a6567672e5e8002d7e48fb18cf39d5de 100644
--- a/net/minecraft/world/entity/projectile/Projectile.java
+++ b/net/minecraft/world/entity/projectile/Projectile.java
@@ -451,7 +451,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@@ -454,7 +454,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@Override
public boolean mayInteract(ServerLevel level, BlockPos pos) {
Entity owner = this.getOwner();

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev>
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 250676c904f6083edd06a2284307569cd76f0694..f11f3aa49ad40c6efd08274e30573ec19c84c23d 100644
index e4ee886f33ee63ae740cd89067c8ec81c12f2a62..f61c29abf75443b206f37b90950d6c0e14ea59ff 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -534,6 +534,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -35,7 +35,7 @@ index 250676c904f6083edd06a2284307569cd76f0694..f11f3aa49ad40c6efd08274e30573ec1
this.type = entityType;
this.level = level;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index bbf8dce405942b2840028d12f0d80fc0779bc14f..19a36386efdeb135e17e13153fa5adf0e9a8c925 100644
index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f36f2d112 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -67,7 +67,7 @@ index bbf8dce405942b2840028d12f0d80fc0779bc14f..19a36386efdeb135e17e13153fa5adf0
}
// CraftBukkit start
@@ -3572,6 +3580,32 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3574,6 +3582,32 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F);
}

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/commands/CommandSourceStack.java
+++ b/net/minecraft/commands/CommandSourceStack.java
@@ -431,6 +_,19 @@
@@ -455,6 +_,19 @@
}
// CraftBukkit end
@@ -20,7 +20,7 @@
public Vec3 getPosition() {
return this.worldPosition;
}
@@ -516,6 +_,30 @@
@@ -540,6 +_,30 @@
}
}
}

View File

@@ -122,7 +122,7 @@
continue;
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1854,7 +_,7 @@
@@ -1855,7 +_,7 @@
@DontObfuscate
public String getServerModName() {

View File

@@ -217,7 +217,7 @@
public ServerStatsCounter getStats() {
return this.stats;
@@ -3077,4 +_,56 @@
@@ -3078,4 +_,56 @@
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
}
// CraftBukkit end

View File

@@ -68,5 +68,5 @@
+ // Purpur end - Alternative Keepalive Handling
+
if (!this.isSingleplayerOwner() && elapsedTime >= 15000L) { // use vanilla's 15000L between keep alive packets
if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
// Paper end - give clients a longer time to respond to pings as per pre 1.12.2 timings
if (this.keepAlivePending) {
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected

View File

@@ -37,7 +37,7 @@
// Paper start - fix DamageSource API
@Nullable
public Entity getCustomEventDamager() {
@@ -116,6 +_,8 @@
@@ -118,6 +_,8 @@
damageSource.sweep = this.isSweep();
damageSource.poison = this.isPoison();
damageSource.melting = this.isMelting();
@@ -46,7 +46,7 @@
return damageSource;
}
// CraftBukkit end
@@ -182,11 +_,20 @@
@@ -184,11 +_,20 @@
} else {
Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName();
ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY;

View File

@@ -88,7 +88,7 @@
if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) {
this.wasTouchingWater = false;
} else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) {
@@ -2532,6 +_,13 @@
@@ -2525,6 +_,13 @@
compound.putBoolean("Paper.FreezeLock", true);
}
// Paper end
@@ -102,7 +102,7 @@
return compound;
} catch (Throwable var9) {
CrashReport crashReport = CrashReport.forThrowable(var9, "Saving entity NBT");
@@ -2681,6 +_,13 @@
@@ -2674,6 +_,13 @@
freezeLocked = compound.getBoolean("Paper.FreezeLock");
}
// Paper end
@@ -116,7 +116,7 @@
} catch (Throwable var17) {
CrashReport crashReport = CrashReport.forThrowable(var17, "Loading entity NBT");
CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded");
@@ -2922,6 +_,7 @@
@@ -2920,6 +_,7 @@
if (this.isAlive() && this instanceof Leashable leashable) {
if (leashable.getLeashHolder() == player) {
if (!this.level().isClientSide()) {
@@ -124,7 +124,7 @@
// CraftBukkit start - fire PlayerUnleashEntityEvent
// Paper start - Expand EntityUnleashEvent
org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
@@ -3247,15 +_,18 @@
@@ -3245,15 +_,18 @@
return Vec3.directionFromRotation(this.getRotationVector());
}
@@ -144,7 +144,7 @@
}
}
}
@@ -3460,7 +_,7 @@
@@ -3458,7 +_,7 @@
}
public int getMaxAirSupply() {
@@ -153,7 +153,7 @@
}
public int getAirSupply() {
@@ -3955,7 +_,7 @@
@@ -3953,7 +_,7 @@
// CraftBukkit end
public boolean canUsePortal(boolean allowPassengers) {
@@ -162,7 +162,7 @@
}
public boolean canTeleport(Level fromLevel, Level toLevel) {
@@ -4487,6 +_,12 @@
@@ -4485,6 +_,12 @@
return Mth.lerp(partialTick, this.yRotO, this.yRot);
}
@@ -175,7 +175,7 @@
// Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
if (this.touchingUnloadedChunk()) {
@@ -4885,7 +_,7 @@
@@ -4883,7 +_,7 @@
}
public float maxUpStep() {

View File

@@ -135,10 +135,10 @@
+ }
+ // Purpur end - Totems work in inventory
+
org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemStack == null);
@@ -1788,6 +_,7 @@
@@ -1790,6 +_,7 @@
boolean flag = this.lastHurtByPlayerTime > 0;
this.dropEquipment(level); // CraftBukkit - from below
if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
@@ -146,7 +146,7 @@
this.dropFromLootTable(level, damageSource, flag);
// Paper start
final boolean prev = this.clearEquipmentSlots;
@@ -1796,6 +_,7 @@
@@ -1798,6 +_,7 @@
// Paper end
this.dropCustomDeathLoot(level, damageSource, flag);
this.clearEquipmentSlots = prev; // Paper
@@ -154,7 +154,7 @@
}
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
@@ -2987,6 +_,7 @@
@@ -2989,6 +_,7 @@
float f = (float)(d * 10.0 - 3.0);
if (f > 0.0F) {
this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F);
@@ -162,7 +162,7 @@
this.hurt(this.damageSources().flyIntoWall(), f);
}
}
@@ -4396,6 +_,12 @@
@@ -4398,6 +_,12 @@
? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND)
: slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType());
}

View File

@@ -61,7 +61,7 @@
list.add(entity);
} else if (!entity.isRemoved()) {
this.touch(entity);
@@ -1264,7 +_,7 @@
@@ -1269,7 +_,7 @@
flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits
if (flag2) {
damageSource = damageSource.critical(true); // Paper start - critical damage API
@@ -70,7 +70,7 @@
}
float f2 = f + f1;
@@ -1877,7 +_,23 @@
@@ -1882,7 +_,23 @@
@Override
protected int getBaseExperienceReward(ServerLevel level) {
@@ -95,7 +95,7 @@
}
@Override
@@ -1960,6 +_,13 @@
@@ -1965,6 +_,13 @@
public boolean canUseSlot(EquipmentSlot slot) {
return slot != EquipmentSlot.BODY;
}

View File

@@ -40,7 +40,7 @@
this.addStandardInventorySlots(playerInventory, 8, 84);
this.addDataSlot(DataSlot.shared(this.costs, 0));
this.addDataSlot(DataSlot.shared(this.costs, 1));
@@ -292,7 +_,7 @@
@@ -294,7 +_,7 @@
@Override
public void removed(Player player) {
super.removed(player);

View File

@@ -43,7 +43,7 @@
public int getDamageValue() {
return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, Integer.valueOf(0)), 0, this.getMaxDamage());
}
@@ -1232,6 +_,12 @@
@@ -1251,6 +_,12 @@
public boolean isEnchanted() {
return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty();
}

View File

@@ -9,16 +9,16 @@
return InteractionResult.SUCCESS_SERVER;
} else if (state.getValue(OCCUPIED)) {
if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first
@@ -152,7 +_,7 @@
@@ -148,7 +_,7 @@
}
Vec3 vec3d = blockposition.getCenter();
- world.explode(null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
+ if (world.purpurConfig.bedExplode) world.explode(null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options
return InteractionResult.SUCCESS;
}
}
@@ -175,7 +_,7 @@
Vec3 center = pos.getCenter();
- level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options
return InteractionResult.SUCCESS_SERVER;
}
// CraftBukkit end
@@ -169,7 +_,7 @@
@Override
public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/block/BushBlock.java
+++ b/net/minecraft/world/level/block/BushBlock.java
@@ -62,4 +_,24 @@
@@ -61,4 +_,24 @@
protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) {
return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType);
}

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/block/ChestBlock.java
+++ b/net/minecraft/world/level/block/ChestBlock.java
@@ -361,6 +_,7 @@
@@ -357,6 +_,7 @@
}
public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) {

View File

@@ -6,6 +6,6 @@
private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) {
- if (state.getValue(INSTRUMENT).worksAboveNoteBlock() || level.getBlockState(pos.above()).isAir()) {
+ if (level.purpurConfig.noteBlockIgnoreAbove || state.getValue(INSTRUMENT).worksAboveNoteBlock() || level.getBlockState(pos.above()).isAir()) { // Purpur - Config to allow Note Block sounds when blocked
// CraftBukkit start
// org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE));
// if (event.isCancelled()) {
level.blockEvent(pos, this, 0, 0);
level.gameEvent(entity, GameEvent.NOTE_BLOCK_PLAY, pos);
}

View File

@@ -37,7 +37,7 @@
}
@@ -310,6 +_,28 @@
// CraftBukkit - this
return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel) world, 2, string, component, world.getServer(), player); // Paper - Fix commands from signs not firing command events
return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events
}
+
+ // Purpur start - Signs allow color codes

View File

@@ -1,17 +1,15 @@
--- a/net/minecraft/world/level/material/WaterFluid.java
+++ b/net/minecraft/world/level/material/WaterFluid.java
@@ -74,6 +_,14 @@
@@ -74,6 +_,12 @@
protected boolean canConvertToSource(ServerLevel level) {
return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION);
}
+
+ // Purpur start - Implement infinite liquids
+ @Override
+ protected int getRequiredSources(Level level) {
+ return level.purpurConfig.waterInfiniteRequiredSources;
+ }
+ // Purpur end - Implement infinite liquids
+
// Paper start - Add BlockBreakBlockEvent
@Override
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state, BlockPos source) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Ridables
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index de89c7c9388ba9202d075aff60a5e5d0696ae13d..48a2800004c8d5be6b672af849c7a93658e24d7a 100644
index 03ff6e062f92d0405dcf10bd35c6ba2fa553b8c0..4e584c69e3f13e7e441dc8a69d57287fc349841d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1318,4 +1318,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1344,4 +1344,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
}
// Paper end - broadcast hurt animation
@@ -37,7 +37,7 @@ index de89c7c9388ba9202d075aff60a5e5d0696ae13d..48a2800004c8d5be6b672af849c7a936
+ // Purpur end - Ridables
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 471752b8f05e9496e6b25efa8412377e937ba1c4..d52d41d8c56e017f95914da19b05c3d79f8f1640 100644
index 1bb9a0bb4b1b898c9359d0095d9413a46b5e7630..1b7fdbecf9c28732d5196236980e87fa737a0769 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -602,6 +602,15 @@ public class CraftEventFactory {

View File

@@ -7,10 +7,10 @@ temporarily migrate to paper's config
drop patch on the next minecraft release
diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
index 098ab351de4f84cdc943ebe855dd0022174e1e67..9f87f3da8e3f8cb16ea8f04cc233e143b174a709 100644
index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c450960701 100644
--- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
+++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
@@ -263,6 +263,7 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
@@ -267,6 +267,7 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
for (final NodePath path : RemovedConfigurations.REMOVED_WORLD_PATHS) {
builder.addAction(path, TransformAction.remove());
}
@@ -19,10 +19,10 @@ index 098ab351de4f84cdc943ebe855dd0022174e1e67..9f87f3da8e3f8cb16ea8f04cc233e143
final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index b1c917d65076a3805e5b78cb946753f0c101e214..229404b8583adc9723e3186775f38fdb97daacbc 100644
index d7c9acaffdcff5e35e026ae90a3e521bab13b074..a426ba82af695426952bb5e04fa721e6ccff2f89 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -409,6 +409,7 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -398,6 +398,7 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean useVanillaWorldScoreboardNameColoring = false;
}
@@ -30,7 +30,7 @@ index b1c917d65076a3805e5b78cb946753f0c101e214..229404b8583adc9723e3186775f38fdb
public Environment environment;
public class Environment extends ConfigurationPart {
@@ -418,7 +419,9 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -407,7 +408,9 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false;
public FrostedIce frostedIce;

View File

@@ -17,11 +17,11 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 48a2800004c8d5be6b672af849c7a93658e24d7a..f6c8a08fd4f0329357156085348d6b9141d18fdb 100644
index 4e584c69e3f13e7e441dc8a69d57287fc349841d..762cd2f3a18bcb4039f8d232f1175aaac4ef623d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -258,6 +258,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
boolean ignorePassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS);
@@ -260,6 +260,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS);
// Don't allow teleporting between worlds while keeping passengers
if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) {
+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent
@@ -29,10 +29,10 @@ index 48a2800004c8d5be6b672af849c7a93658e24d7a..f6c8a08fd4f0329357156085348d6b91
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b61e994e90f9ccc3e24cb916dd83a0af46ecf39f..614ebecdfe5838af5b2bf4a2d9f7ba26698a00f7 100644
index da365651d67f584547217701762564d74e09ad5d..9fbbdc9664353fd2be8eae112e5cfe8880d51d08 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1449,6 +1449,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1431,6 +1431,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start - Teleport passenger API
// Don't allow teleporting between worlds while keeping passengers
if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) {
@@ -40,7 +40,7 @@ index b61e994e90f9ccc3e24cb916dd83a0af46ecf39f..614ebecdfe5838af5b2bf4a2d9f7ba26
return false;
}
@@ -1470,6 +1471,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1452,6 +1453,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev>
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index f6c8a08fd4f0329357156085348d6b9141d18fdb..359fb91294b3b0eb4719982ba64fcf8667533a42 100644
index 762cd2f3a18bcb4039f8d232f1175aaac4ef623d..8755fc950af21e076858de7aafe3b562982299cf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -99,6 +99,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -101,6 +101,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
// Purpur end - Fire Immunity API

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -426,6 +_,20 @@
@@ -427,6 +_,20 @@
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end
@@ -21,7 +21,7 @@
CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1086,6 +_,7 @@
@@ -1087,6 +_,7 @@
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -29,7 +29,7 @@
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1101,6 +_,7 @@
@@ -1102,6 +_,7 @@
}
}
world.spigotConfig.init(); // Spigot
@@ -37,7 +37,7 @@
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1118,6 +_,7 @@
@@ -1119,6 +_,7 @@
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
this.spark.registerCommandBeforePlugins(this); // Paper - spark
@@ -45,7 +45,7 @@
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1645,6 +_,60 @@
@@ -1646,6 +_,60 @@
return true;
}
@@ -106,7 +106,7 @@
@Override
public List<Recipe> getRecipesFor(ItemStack result) {
Preconditions.checkArgument(result != null, "ItemStack cannot be null");
@@ -3049,6 +_,18 @@
@@ -3055,6 +_,18 @@
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}
@@ -125,7 +125,7 @@
@Override
public void restart() {
org.spigotmc.RestartCommand.restart();
@@ -3078,6 +_,7 @@
@@ -3084,6 +_,7 @@
@Override
public double[] getTPS() {
return new double[] {
@@ -133,7 +133,7 @@
net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
@@ -3288,4 +_,18 @@
@@ -3294,4 +_,18 @@
this.console.addPluginAllowingSleep(plugin.getName(), value);
}
// Paper end - API to check if the server is sleeping

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2346,6 +_,50 @@
@@ -2349,6 +_,50 @@
return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight());
}

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -87,6 +_,18 @@
@@ -89,6 +_,18 @@
this.entityType = CraftEntityType.minecraftToBukkit(entity.getType());
}

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -273,6 +_,7 @@
@@ -281,6 +_,7 @@
@Override
public void recalculatePermissions() {
this.perm.recalculatePermissions();

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -584,10 +_,15 @@
@@ -585,10 +_,15 @@
@Override
public void setPlayerListName(String name) {
@@ -17,7 +17,7 @@
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)) {
@@ -2763,6 +_,28 @@
@@ -2745,6 +_,28 @@
return this.getHandle().getAbilities().walkingSpeed * 2f;
}
@@ -46,7 +46,7 @@
private void validateSpeed(float value) {
Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
}
@@ -3559,4 +_,74 @@
@@ -3541,4 +_,74 @@
this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundEntityEventPacket(((CraftEntity) target).getHandle(), effect.getData()));
}
// Paper end - entity effect API

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
@@ -375,4 +_,11 @@
@@ -373,4 +_,11 @@
getHandle().getGossips().gossips.clear();
}
// Paper end

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
@@ -146,4 +_,15 @@
@@ -145,4 +_,15 @@
return this.getKey().hashCode();
}
}

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -658,4 +_,285 @@
@@ -666,4 +_,285 @@
}
// Paper end - data component API

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -505,7 +_,7 @@
@@ -508,7 +_,7 @@
// Paper start
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {

View File

@@ -1,3 +0,0 @@
--- a/src/main/resources/data/.paperassetsroot
+++ b/src/main/resources/data/.paperassetsroot
@@ -1,0 +_,0 @@