we compile

This commit is contained in:
Ben Kerllenevich 2023-06-09 09:57:52 -04:00
parent 589c34e018
commit 71c445017d
No known key found for this signature in database
22 changed files with 110 additions and 98 deletions

View File

@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.20-R0.1-SNAPSHOT
mcVersion = 1.20
paperCommit = 4b5f84712ba3afab4ab9184de91d85d070584e60
paperCommit = 648c000fb2330ca1f9b7833a275e70f06c1fce83
org.gradle.caching = true
org.gradle.parallel = true

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index bb62037ea111f27bed78001ec2e179cc69e0084e..949bacc06d06d90980243dfc14360599a8030e03 100644
index ca7a9098db4eb7ddcb72f1e14a81626de2c75811..7d54129ef393583df2fb2a4af81649be82eebdbe 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3192,5 +3192,21 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -3192,5 +3192,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Clears all debug block highlights
*/
void clearBlockHighlights();
@ -26,7 +26,11 @@ index bb62037ea111f27bed78001ec2e179cc69e0084e..949bacc06d06d90980243dfc14360599
+ *
+ * @param message The death message to show the player
+ * @param killer The entity that killed the player
+ * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet.
+ */
+ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer);
+ @Deprecated(since = "1.20")
+ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) {
+ sendDeathScreen(message);
+ }
// Purpur end
}

View File

@ -460,7 +460,7 @@ index 0000000000000000000000000000000000000000..2b7f1dedb3289efc7e42a138f4483f49
+}
diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..173b6bba1c8eb4c6c6ab55cad478db7c4c91fd75
index 0000000000000000000000000000000000000000..afdf04f8b22ad0b7c0b41675e44687b49c2f86d6
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
@@ -0,0 +1,65 @@
@ -514,7 +514,7 @@ index 0000000000000000000000000000000000000000..173b6bba1c8eb4c6c6ab55cad478db7c
+ MinecraftServer console = MinecraftServer.getServer();
+ PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
+ for (ServerLevel level : console.getAllLevels()) {
+ level().purpurConfig.init();
+ level.purpurConfig.init();
+ }
+ console.server.reloadCount++;
+

View File

@ -6316,7 +6316,7 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6
+}
diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
new file mode 100644
index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e324b567b46
index 0000000000000000000000000000000000000000..af057c1d7fd74f3dd806c5ce7f8b0ad06cab7b8e
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
@@ -0,0 +1,99 @@
@ -6361,7 +6361,7 @@ index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e32
+ super_tick();
+
+ Vec3 mot = this.getDeltaMovement();
+ HitResult hitResult = ProjectileUtil.getHitResult(this, this::canHitEntity);
+ HitResult hitResult = ProjectileUtil.getHitResult(this.position(), this, this::canHitEntity, mot, level());
+
+ this.preOnHit(hitResult);
+
@ -6373,7 +6373,7 @@ index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e32
+
+ Vec3 motDouble = mot.scale(2.0);
+ for (int i = 0; i < 5; i++) {
+ ((ServerLevel) level).sendParticles(null, ParticleTypes.BUBBLE,
+ ((ServerLevel) level()).sendParticles(null, ParticleTypes.BUBBLE,
+ getX() + random.nextFloat() / 2 - 0.25F,
+ getY() + random.nextFloat() / 2 - 0.25F,
+ getZ() + random.nextFloat() / 2 - 0.25F,
@ -6415,7 +6415,7 @@ index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e32
+ return;
+ }
+ BlockState state = this.level().getBlockState(blockHitResult.getBlockPos());
+ state.onProjectileHit(this.level, state, blockHitResult, this);
+ state.onProjectileHit(this.level(), state, blockHitResult, this);
+ this.discard();
+ }
+}

View File

@ -73,7 +73,7 @@ index 5465711d486e5f265a26042031e895fb09e30608..e73446de9a58643609fedcbd0a503d95
@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 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e6399d0a3 100644
index 961300cb8bcc7b0aff476a435aa33e713bd520a6..86df67578334a4743909c748213c2e1ed5d19bd9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
@ -84,23 +84,22 @@ index 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e
public Phantom(EntityType<? extends Phantom> type, Level world) {
super(type, world);
@@ -116,6 +117,24 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -116,6 +117,23 @@ public class Phantom extends FlyingMob implements Enemy {
level().addFreshEntity(flames);
return true;
}
+
+ @Override
+ protected net.minecraft.world.level.storage.loot.LootContext.Builder createLootContext(boolean causedByPlayer, DamageSource source) {
+ protected void dropFromLootTable(DamageSource damageSource, boolean causedByPlayer) {
+ boolean dropped = false;
+ if (lastHurtByPlayer == null && source.getEntity() instanceof net.minecraft.world.entity.boss.enderdragon.EndCrystal) {
+ if (lastHurtByPlayer == null && damageSource.getEntity() instanceof net.minecraft.world.entity.boss.enderdragon.EndCrystal) {
+ if (random.nextInt(5) < 1) {
+ dropped = spawnAtLocation(new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.PHANTOM_MEMBRANE)) != null;
+ }
+ }
+ if (!dropped) {
+ return super.createLootContext(causedByPlayer, source);
+ super.dropFromLootTable(damageSource, causedByPlayer);
+ }
+ return new net.minecraft.world.level.storage.loot.LootContext.Builder((net.minecraft.server.level.ServerLevel) level);
+ }
+
+ public boolean isCirclingCrystal() {
@ -109,7 +108,7 @@ index 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e
// Purpur end
@Override
@@ -130,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -130,11 +148,17 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
protected void registerGoals() {
@ -132,7 +131,7 @@ index 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
}
@@ -348,6 +373,124 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -348,6 +372,124 @@ public class Phantom extends FlyingMob implements Enemy {
private AttackPhase() {}
}
@ -151,7 +150,7 @@ index 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e
+ @Override
+ public boolean canUse() {
+ double range = maxTargetRange();
+ List<net.minecraft.world.entity.boss.enderdragon.EndCrystal> crystals = level.getEntitiesOfClass(net.minecraft.world.entity.boss.enderdragon.EndCrystal.class, phantom.getBoundingBox().inflate(range));
+ List<net.minecraft.world.entity.boss.enderdragon.EndCrystal> crystals = level().getEntitiesOfClass(net.minecraft.world.entity.boss.enderdragon.EndCrystal.class, phantom.getBoundingBox().inflate(range));
+ if (crystals.isEmpty()) {
+ return false;
+ }
@ -234,11 +233,11 @@ index 961300cb8bcc7b0aff476a435aa33e713bd520a6..a72dc02aaed018df9172f9c322b27c3e
+ if (phantom.moveTargetPoint.distanceToSqr(phantom.getX(), phantom.getY(), phantom.getZ()) < 4.0D) {
+ updateOffset();
+ }
+ if (phantom.moveTargetPoint.y < phantom.getY() && !phantom.level.isEmptyBlock(new BlockPos(phantom).below(1))) {
+ if (phantom.moveTargetPoint.y < phantom.getY() && !phantom.level().isEmptyBlock(new BlockPos(phantom).below(1))) {
+ this.verticalChange = Math.max(1.0F, this.verticalChange);
+ updateOffset();
+ }
+ if (phantom.moveTargetPoint.y > phantom.getY() && !phantom.level.isEmptyBlock(new BlockPos(phantom).above(1))) {
+ if (phantom.moveTargetPoint.y > phantom.getY() && !phantom.level().isEmptyBlock(new BlockPos(phantom).above(1))) {
+ this.verticalChange = Math.min(-1.0F, this.verticalChange);
+ updateOffset();
+ }

View File

@ -5,7 +5,7 @@ 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 b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f43075ce02a29 100644
index 86df67578334a4743909c748213c2e1ed5d19bd9..899a7d3989b51456600787ae09b1736f83bf9a65 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
@ -16,7 +16,7 @@ index b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f4307
Vec3 crystalPosition; // Purpur
public Phantom(EntityType<? extends Phantom> type, Level world) {
@@ -247,7 +248,12 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -246,7 +247,12 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
public void aiStep() {
@ -30,7 +30,7 @@ index b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f4307
if (getRider() == null || !this.isControllable()) // Purpur
this.setSecondsOnFire(8);
}
@@ -657,6 +663,12 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -656,6 +662,12 @@ public class Phantom extends FlyingMob implements Enemy {
return false;
} else if (!entityliving.isAlive()) {
return false;
@ -43,7 +43,7 @@ index b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f4307
} else {
if (entityliving instanceof Player) {
Player entityhuman = (Player) entityliving;
@@ -802,6 +814,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -801,6 +813,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));

View File

@ -124,13 +124,13 @@ index 27f499f7a6924f9d3ca923c5c57d8770228c3c38..79f951f6275612234a26bff758ef3b0a
public int daytimeTicks = 12000;
diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
index 173b6bba1c8eb4c6c6ab55cad478db7c4c91fd75..e1e2a010bb741110aff43690e3aa6be84a5e1bb8 100644
index afdf04f8b22ad0b7c0b41675e44687b49c2f86d6..2621e54879e9ab0029a875f1d09eee67878b90d5 100644
--- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
+++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
@@ -49,6 +49,7 @@ public class PurpurCommand extends Command {
PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
for (ServerLevel level : console.getAllLevels()) {
level().purpurConfig.init();
level.purpurConfig.init();
+ level.resetBreedingCooldowns();
}
console.server.reloadCount++;

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Phantom flames on swoop
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 776602b545f5ee3b566787befb0f43075ce02a29..29167ec21bc68e43c6505b6b1ee376d75a43c1ef 100644
index 899a7d3989b51456600787ae09b1736f83bf9a65..076a881412d40ce6a8f5e5f83f7598bfa08f199c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -243,6 +243,7 @@ public class Phantom extends FlyingMob implements Enemy {
this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D);
}

View File

@ -823,10 +823,10 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F);
}
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 5511075728e3a2db213d9c4faf90f0fba255044c..7a5429bc117137989efe322eca092ad26869bb82 100644
index 076a881412d40ce6a8f5e5f83f7598bfa08f199c..7c9f6076f68de295e882e69137ac573db8d9698b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -138,6 +138,11 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -137,6 +137,11 @@ public class Phantom extends FlyingMob implements Enemy {
}
// Purpur end

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Allow infinity on crossbows
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
index a433910fb4d0bd8d7b6b0d66c8fc88d62a0e4879..795803bbb89e8f19a308ece7b5d1359da1538519 100644
index a433910fb4d0bd8d7b6b0d66c8fc88d62a0e4879..ae6ba3c0a7722674b304291f643960b0a58fca57 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -114,7 +114,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
@ -13,7 +13,7 @@ index a433910fb4d0bd8d7b6b0d66c8fc88d62a0e4879..795803bbb89e8f19a308ece7b5d1359d
int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, crossbow);
int j = i == 0 ? 1 : 3;
- boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume
+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur
+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, crossbow) > 0); // Paper - add consume // Purpur
ItemStack itemstack1 = shooter.getProjectile(crossbow);
ItemStack itemstack2 = itemstack1.copy();

View File

@ -48,7 +48,7 @@ index 6b4f6866d075d52ca9a8fe024b070a6183591cdd..e93a619dcd06a2cb65c0d6c4bb4ef36a
public boolean llamaRidable = false;
diff --git a/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java b/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java
new file mode 100644
index 0000000000000000000000000000000000000000..115a3b36cbb7716b28ef940a29ca97ac42a8a521
index 0000000000000000000000000000000000000000..9660716f4162a4441c6e1b0baddef8f5086566c5
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java
@@ -0,0 +1,91 @@
@ -88,7 +88,7 @@ index 0000000000000000000000000000000000000000..115a3b36cbb7716b28ef940a29ca97ac
+ if (uuid == null) {
+ return false;
+ }
+ Entity target = ((ServerLevel) this.irongolem.level).getEntity(uuid);
+ Entity target = ((ServerLevel) this.irongolem.level()).getEntity(uuid);
+ if (!(target instanceof ServerPlayer player)) {
+ return false;
+ }

View File

@ -212,7 +212,7 @@ index 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384
@Override
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 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b52061497419c9512d0 100644
index 7c9f6076f68de295e882e69137ac573db8d9698b..8605dfe152a09f31492226b1eb2a5eb39db9fcbc 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy {
@ -223,7 +223,7 @@ index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b5206149741
}
// Purpur start
@@ -254,16 +255,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -253,16 +254,7 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
public void aiStep() {
@ -241,7 +241,7 @@ index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b5206149741
super.aiStep();
}
@@ -291,7 +283,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -290,7 +282,7 @@ public class Phantom extends FlyingMob implements Enemy {
if (nbt.hasUUID("Paper.SpawningEntity")) {
this.spawningEntity = nbt.getUUID("Paper.SpawningEntity");
}
@ -250,7 +250,7 @@ index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b5206149741
this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
}
// Paper end
@@ -308,7 +300,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -307,7 +299,7 @@ public class Phantom extends FlyingMob implements Enemy {
if (this.spawningEntity != null) {
nbt.putUUID("Paper.SpawningEntity", this.spawningEntity);
}
@ -259,7 +259,7 @@ index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b5206149741
// Paper end
}
@@ -374,8 +366,14 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -373,8 +365,14 @@ public class Phantom extends FlyingMob implements Enemy {
}
public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; }
@ -269,7 +269,7 @@ index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b5206149741
+ // Purpur start
+ public boolean shouldBurnInDay() {
+ boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
+ boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
+ boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
+ return burnFromDaylight || burnFromLightSource;
+ }
+ // Purpur End

View File

@ -174,7 +174,7 @@ index d38b3c4a722396cc3b61a9a8ed7e39cea4ae65cb..d333334f323049ca97e756324cff0b23
}
diff --git a/src/main/java/org/purpurmc/purpur/task/CompassTask.java b/src/main/java/org/purpurmc/purpur/task/CompassTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7bc40f8f678c75c964d26ac98689c7866a2ef9d
index 0000000000000000000000000000000000000000..bece7eefc8ba8822b433835526251d2fb916c025
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/task/CompassTask.java
@@ -0,0 +1,68 @@
@ -207,7 +207,7 @@ index 0000000000000000000000000000000000000000..d7bc40f8f678c75c964d26ac98689c78
+ tick = 0;
+
+ MinecraftServer.getServer().getAllLevels().forEach((level) -> {
+ if (level().purpurConfig.compassItemShowsBossBar) {
+ if (level.purpurConfig.compassItemShowsBossBar) {
+ level.players().forEach(player -> {
+ if (!player.compassBar()) {
+ if (player.getMainHandItem().getItem() != Items.COMPASS && player.getOffhandItem().getItem() != Items.COMPASS) {

View File

@ -373,7 +373,7 @@ index b16d075581a352714f86f1b87805f24c9e336aa3..87b6f6b10ba6e3d9c6a42298a2019a52
return "entity.minecraft.tropical_fish.predefined." + variant;
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
index 5c2fc833dac13dd8b959f035abb74432ec6c82c9..bcc6d50aed60d1255fbdbfb7b9494b52300a7e3a 100644
index 9f8891a3eacf461071ce7ad2a277c78048171d51..7787b121def6525642672dfd67fae9ac0e010f52 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
@@ -115,6 +115,11 @@ public class Turtle extends Animal {
@ -645,7 +645,7 @@ index b494d5689beb19d621f5d7c9c22d84e12d303fa0..b30f13d2a7198f568bc36c0d974fd6dc
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
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 f9bc9e2d57111b6260b5303fa2dbc405ef9835a2..10b2708a1067cba489aca17c5e8713139c623cdc 100644
index 8db82eaa2355b15aa78fc9500368acf2c7f75ffc..1cb816cee305969d4215ef2baa1a255b1c88d6e5 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -114,6 +114,11 @@ public class EnderMan extends Monster implements NeutralMob {
@ -789,10 +789,10 @@ index e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F);
}
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 85026b498f25c38653bf3b52061497419c9512d0..c3b9878de5ac74b9a1aaa77030edb4a2b53586c3 100644
index 8605dfe152a09f31492226b1eb2a5eb39db9fcbc..f71cbaabfff370f019f124203fb947ea7a817d95 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -144,6 +144,11 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -143,6 +143,11 @@ public class Phantom extends FlyingMob implements Enemy {
return this.level().purpurConfig.phantomTakeDamageFromWater;
}

View File

@ -17,7 +17,7 @@ index c4a88ef1cc23b0f7b3fe50019441535bae1a1b64..1041e8e24e03ce46824f6b0f4fca6fc0
this.hasLoggedStop = true; // Paper
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index cd663643c38e787b06e7bc9cf74d9f78431ca988..9eeda0276b4a6f444e7fd2afee7a2c62ad58e0cd 100644
index 0b2c90fc95889502636e7a4f95aa62bd11c89e7a..4b9cf94e24bc583f7bef593e6e8fd70e5564ca38 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -373,6 +373,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@ -30,7 +30,7 @@ index cd663643c38e787b06e7bc9cf74d9f78431ca988..9eeda0276b4a6f444e7fd2afee7a2c62
}
diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..055dd307e9d5ac0d4623c961164c84bab1edd3bd
index 0000000000000000000000000000000000000000..2ebbaf5faa92a88bfb4d61298951e5b74157d1e1
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
@@ -0,0 +1,81 @@
@ -91,7 +91,7 @@ index 0000000000000000000000000000000000000000..055dd307e9d5ac0d4623c961164c84ba
+
+ ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
+
+ BlockEntity blockEntity = serverPlayer.level.getBlockEntity(pos);
+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos);
+ if (!(blockEntity instanceof BeehiveBlockEntity beehive)) {
+ return;
+ }

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Configurable phantom size
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 c3b9878de5ac74b9a1aaa77030edb4a2b53586c3..85adeb1c4061d95c53359331256dbbd19670524e 100644
index f71cbaabfff370f019f124203fb947ea7a817d95..17638b9d3340c86528a8ae597712c7590b98dba6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -271,7 +271,11 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
this.anchorPoint = this.blockPosition().above(5);

View File

@ -51,7 +51,7 @@ index b16d9e2eaa589f19c563ee70b1a56d67dbcdecb0..71beab673f04cd051c46ea37f8c84731
public static final FoodProperties BAKED_POTATO = (new FoodProperties.Builder()).nutrition(5).saturationMod(0.6F).build();
public static final FoodProperties BEEF = (new FoodProperties.Builder()).nutrition(3).saturationMod(0.3F).meat().build();
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
index 31f5ed9dd1727eee24804a384817d2b76a45676b..6e25f5765f169f9b3f48bf5ca3f7e6eb31e1af82 100644
index 31f5ed9dd1727eee24804a384817d2b76a45676b..5fbb13ebef0ca66419f3e5006d19e4a5918a038a 100644
--- a/src/main/java/net/minecraft/world/item/Items.java
+++ b/src/main/java/net/minecraft/world/item/Items.java
@@ -1309,6 +1309,13 @@ public class Items {
@ -60,8 +60,8 @@ index 31f5ed9dd1727eee24804a384817d2b76a45676b..6e25f5765f169f9b3f48bf5ca3f7e6eb
+ // Purpur start
+ if (item.getFoodProperties() != null) {
+ Foods.ALL_PROPERTIES.put(key.location().toString(), item.getFoodProperties());
+ Foods.DEFAULT_PROPERTIES.put(key.location().toString(), item.getFoodProperties().copy());
+ Foods.ALL_PROPERTIES.put(key.location().getPath(), item.getFoodProperties());
+ Foods.DEFAULT_PROPERTIES.put(key.location().getPath(), item.getFoodProperties().copy());
+ }
+ // Purpur end
+

View File

@ -244,7 +244,7 @@ index 4b9cf94e24bc583f7bef593e6e8fd70e5564ca38..f7238261f9797d127ff6e5dcdd62dd20
@Override
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 3bf565ce5110e38366523e0a383ac00cc6c4351a..f60c8dbe8d6e04a19450a6cc1f3b2a27ca3ba2db 100644
index 3bf565ce5110e38366523e0a383ac00cc6c4351a..914c75bb1fb761d93a43b5f80ba0831afcaf0668 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -620,15 +620,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@ -267,6 +267,35 @@ index 3bf565ce5110e38366523e0a383ac00cc6c4351a..f60c8dbe8d6e04a19450a6cc1f3b2a27
}
gameprofilerfiller.pop();
@@ -1250,24 +1250,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper start - optimised tracker
private final void processTrackQueue() {
- this.level.timings.tracker1.startTiming();
+ //this.level.timings.tracker1.startTiming(); // Purpur
try {
for (TrackedEntity tracker : this.entityMap.values()) {
// update tracker entry
tracker.updatePlayers(tracker.entity.getPlayersInTrackRange());
}
} finally {
- this.level.timings.tracker1.stopTiming();
+ //this.level.timings.tracker1.stopTiming(); // Purpur
}
- this.level.timings.tracker2.startTiming();
+ //this.level.timings.tracker2.startTiming(); // Purpur
try {
for (TrackedEntity tracker : this.entityMap.values()) {
tracker.serverEntity.sendChanges();
}
} finally {
- this.level.timings.tracker2.stopTiming();
+ //this.level.timings.tracker2.stopTiming(); Purpur
}
}
// Paper end - optimised tracker
@@ -1282,7 +1282,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
List<ServerPlayer> list = Lists.newArrayList();
List<ServerPlayer> list1 = this.level.players();

View File

@ -388,7 +388,7 @@ index aa3f4ca3be843616d34897e41909255f512f8963..426ac5faa9344472560fb20bdea8bdc3
++j;
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index f60c8dbe8d6e04a19450a6cc1f3b2a27ca3ba2db..7fb00407b75603cf6ff63f1fd1f3e020524caf82 100644
index 914c75bb1fb761d93a43b5f80ba0831afcaf0668..3a29bccd7c203de904f041b6469e990fbbdd0ad4 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -618,20 +618,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@ -1792,9 +1792,24 @@ index 4e2611c9a7df8343f76e3be3f01f2f828cdf8a1d..03fc9c6ef0fb320924038f2730c6f084
// Paper start
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 5de3b6cd73a45348d0feba858d96a500bf236ce7..d7b8b8250564831ab3e84043292e48f058698a93 100644
index 5de3b6cd73a45348d0feba858d96a500bf236ce7..f4849ed39a7da7454a611d0d9f1a828286121c1c 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -538,11 +538,11 @@ public class LevelChunk extends ChunkAccess {
if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
- gameprofilerfiller.push("updateSkyLightSources");
+ //gameprofilerfiller.push("updateSkyLightSources"); // Purpur
this.skyLightSources.update(this, j, i, l);
- gameprofilerfiller.popPush("queueCheckLight");
+ //gameprofilerfiller.popPush("queueCheckLight"); // Purpur
this.level.getChunkSource().getLightEngine().checkBlock(blockposition);
- gameprofilerfiller.pop();
+ //gameprofilerfiller.pop(); // Purpur
}
boolean flag3 = iblockdata1.hasBlockEntity();
@@ -1256,9 +1256,9 @@ public class LevelChunk extends ChunkAccess {
if (LevelChunk.this.isTicking(blockposition)) {

View File

@ -4,51 +4,19 @@ Date: Fri, 23 Sep 2022 18:41:05 -0700
Subject: [PATCH] Add death screen API
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java
index 76a62d872bc2ad12efd9522d8dd445b8d2342525..075a891413d072998e6d468e76d839e1a3bf7da9 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerCombatKillPacket.java
@@ -7,6 +7,7 @@ import net.minecraft.network.protocol.Packet;
public class ClientboundPlayerCombatKillPacket implements Packet<ClientGamePacketListener> {
private final int playerId;
private final Component message;
+ public net.kyori.adventure.text.Component adventure$message; // Purpur
public ClientboundPlayerCombatKillPacket(int entityId, Component message) {
this.playerId = entityId;
@@ -21,6 +22,12 @@ public class ClientboundPlayerCombatKillPacket implements Packet<ClientGamePacke
@Override
public void write(FriendlyByteBuf buf) {
buf.writeVarInt(this.playerId);
+ // Purpur start
+ if (this.adventure$message != null) {
+ buf.writeComponent(this.adventure$message);
+ return;
+ }
+ // Purpur end
buf.writeComponent(this.message);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index bfab934938bc0650fd6cbf0b551edecbbaf37404..bcd26a48a9fe3443eed943a3b131c1d5eb3da345 100644
index bfab934938bc0650fd6cbf0b551edecbbaf37404..f6d102cacbe50f6cc5f947de341ec0475d02472a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3254,5 +3254,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3254,5 +3254,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket(ClientboundCustomPayloadPacket.DEBUG_GAME_TEST_CLEAR, new FriendlyByteBuf(io.netty.buffer.Unpooled.buffer())));
}
+
+ @Override
+ public void sendDeathScreen(net.kyori.adventure.text.Component message) {
+ sendDeathScreen(message, null);
+ }
+
+ @Override
+ public void sendDeathScreen(net.kyori.adventure.text.Component message, org.bukkit.entity.Entity killer) {
+ if (this.getHandle().connection == null) return;
+ net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket packet = new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), killer == null ? -1 : killer.getEntityId(), null);
+ packet.adventure$message = message;
+ this.getHandle().connection.send(packet);
+ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message)));
+ }
// Purpur end
}

View File

@ -167,7 +167,7 @@ index 0000000000000000000000000000000000000000..2852c07adb080c34905f5d1b19efed8e
+}
diff --git a/src/main/java/org/purpurmc/purpur/command/RamCommand.java b/src/main/java/org/purpurmc/purpur/command/RamCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ea0877f92b6733035d83a186c3d02c101c9b6cd
index 0000000000000000000000000000000000000000..992f8dfc628c7485e335191e1308cdfd4eedfbe8
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/command/RamCommand.java
@@ -0,0 +1,30 @@
@ -189,7 +189,7 @@ index 0000000000000000000000000000000000000000..4ea0877f92b6733035d83a186c3d02c1
+ .executes(context -> {
+ CommandSourceStack sender = context.getSource();
+ RamBarTask ramBar = RamBarTask.instance();
+ sender.sendSuccess(PaperAdventure.asVanilla(MiniMessage.miniMessage().deserialize(PurpurConfig.ramCommandOutput,
+ sender.sendSuccess(() -> PaperAdventure.asVanilla(MiniMessage.miniMessage().deserialize(PurpurConfig.ramCommandOutput,
+ Placeholder.component("allocated", ramBar.format(ramBar.getAllocated())),
+ Placeholder.component("used", ramBar.format(ramBar.getUsed())),
+ Placeholder.component("xmx", ramBar.format(ramBar.getXmx())),

View File

@ -1,5 +1,2 @@
* make sure that all mobs are in entity attributes and ridables (some from previous updates weren't added to attributes)
* check sulker spawn from bullet options matches original design
* configurable food atributes check `key.location().toString()` still works
* merge pufferfish fixes into one
* test allow transparent blocks in enchanting box