Update to 1.18.2

This commit is contained in:
BillyGalbreath
2022-03-01 17:27:08 -06:00
parent 133b3e1719
commit 90adb4e4af
192 changed files with 1500 additions and 1550 deletions

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index ca07ba8eb33f1b4f10aba9f4b4c7c1078f80f61b..5ce3feae48e97eaa64798a401e399adc3c8f57f8 100644
index 5a1a0ccf163488d5c4ec377821afaa95abebddcb..f8713a8b5abbb246a13646f05ece7438f6151a79 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -2190,7 +2190,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2242,7 +2242,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
public class TrackedEntity {
@@ -18,7 +18,7 @@ index ca07ba8eb33f1b4f10aba9f4b4c7c1078f80f61b..5ce3feae48e97eaa64798a401e399adc
private final int range;
SectionPos lastSectionPos;
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index e80176708db486190dd527e3ade5fc690ceb39f7..e3d7a80f8c4b68933875ef90006b79776b4ab000 100644
index 937a93d134dc986fe23e5676d58f7619524b9bf3..65f1f919a689f6f7960d731b250582bd521c4eea 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -67,7 +67,7 @@ public class ServerEntity {
@@ -31,7 +31,7 @@ index e80176708db486190dd527e3ade5fc690ceb39f7..e3d7a80f8c4b68933875ef90006b7977
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 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe611bcdd4 100644
index e5b8bcfe0d69cc0deecdf54662d553f16550fd2a..1c5aa4e7b06c2b2ce32ea63140154db3c5c58231 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -54,6 +54,12 @@ public class ItemEntity extends Entity {
@@ -47,7 +47,7 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
super(type, world);
@@ -327,6 +333,16 @@ public class ItemEntity extends Entity {
@@ -327,6 +333,15 @@ public class ItemEntity extends Entity {
return false;
} else if (!this.getItem().getItem().canBeHurtBy(source)) {
return false;
@@ -58,13 +58,12 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe
+ (immuneToLightning && source == DamageSource.LIGHTNING_BOLT) ||
+ (immuneToExplosion && source.isExplosion())
+ ) {
+ respawnOnClient();
+ return false;
+ // Purpur end
} else if (this.level.isClientSide) {
return true;
} else {
// CraftBukkit start
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, source, amount)) {
@@ -509,6 +525,12 @@ public class ItemEntity extends Entity {
@@ -511,6 +526,12 @@ public class ItemEntity extends Entity {
com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty
@@ -77,24 +76,6 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe
}
@Override
@@ -599,4 +621,17 @@ public class ItemEntity extends Entity {
public SoundSource getSoundSource() {
return SoundSource.AMBIENT;
}
+
+ // Purpur start
+ public void respawnOnClient() {
+ Packet<?> spawnPacket = new ClientboundAddEntityPacket(this);
+ Packet<?> metadataPacket = new net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket(getId(), getEntityData(), true);
+ for (net.minecraft.server.network.ServerPlayerConnection connection : this.tracker.serverEntity.trackedPlayers) {
+ if (!connection.getPlayer().purpurClient) {
+ connection.send(spawnPacket);
+ connection.send(metadataPacket);
+ }
+ }
+ }
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java
index 8d56f0ab748373e55c0166b92382c126fe8e5381..0637e074dbe4a10bc19e7bf9dd79e2d966b07b1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java