mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
More more more work
This commit is contained in:
parent
f4a4fec81b
commit
dae8787b45
46 changed files with 60 additions and 146 deletions
|
@ -40,6 +40,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
ProjectileHitEvent event = new ProjectileHitEvent((Projectile) entity.getBukkitEntity(), hitEntity, hitBlock, hitFace);
|
ProjectileHitEvent event = new ProjectileHitEvent((Projectile) entity.getBukkitEntity(), hitEntity, hitBlock, hitFace);
|
||||||
+ event.setCancelled(cancelled); // Paper - propagate legacy event cancellation to modern event
|
+ event.setCancelled(cancelled); // Paper - propagate legacy event cancellation to modern event
|
||||||
entity.level.getCraftServer().getPluginManager().callEvent(event);
|
entity.level().getCraftServer().getPluginManager().callEvent(event);
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
|
@ -38,9 +38,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public abstract class Player extends LivingEntity {
|
@@ -0,0 +0,0 @@ public abstract class Player extends LivingEntity {
|
||||||
this.playShoulderEntityAmbientSound(this.getShoulderEntityLeft());
|
this.playShoulderEntityAmbientSound(this.getShoulderEntityLeft());
|
||||||
this.playShoulderEntityAmbientSound(this.getShoulderEntityRight());
|
this.playShoulderEntityAmbientSound(this.getShoulderEntityRight());
|
||||||
if (!this.level.isClientSide && (this.fallDistance > 0.5F || this.isInWater()) || this.abilities.flying || this.isSleeping() || this.isInPowderSnow) {
|
if (!this.level().isClientSide && (this.fallDistance > 0.5F || this.isInWater()) || this.abilities.flying || this.isSleeping() || this.isInPowderSnow) {
|
||||||
- this.removeEntitiesOnShoulder();
|
+ if (!this.level().paperConfig().entities.behavior.parrotsAreUnaffectedByPlayerMovement) // Paper - Hang on!
|
||||||
+ if (!this.level.paperConfig().entities.behavior.parrotsAreUnaffectedByPlayerMovement) this.removeEntitiesOnShoulder(); // Paper - Hang on!
|
this.removeEntitiesOnShoulder();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
|
@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ this.getProfileCache().save(false); // Paper
|
+ this.getProfileCache().save(false); // Paper
|
||||||
}
|
}
|
||||||
// Spigot end
|
// Spigot end
|
||||||
io.papermc.paper.chunk.system.io.RegionFileIOThread.close(true); // Paper // Paper - rewrite chunk system
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@ -15,7 +15,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class VillagerTrades {
|
@@ -0,0 +0,0 @@ public class VillagerTrades {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
ServerLevel serverLevel = (ServerLevel)entity.level;
|
ServerLevel serverLevel = (ServerLevel)entity.level();
|
||||||
- BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, true);
|
- BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, true);
|
||||||
+ if (!serverLevel.paperConfig().environment.treasureMaps.enabled) return null; // Paper
|
+ if (!serverLevel.paperConfig().environment.treasureMaps.enabled) return null; // Paper
|
||||||
+ BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, !serverLevel.paperConfig().environment.treasureMaps.findAlreadyDiscoveredVillager); // Paper
|
+ BlockPos blockPos = serverLevel.findNearestMapStructure(this.destination, entity.blockPosition(), 100, !serverLevel.paperConfig().environment.treasureMaps.findAlreadyDiscoveredVillager); // Paper
|
|
@ -138,9 +138,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
protected void dropExperience() {
|
protected void dropExperience() {
|
||||||
// CraftBukkit start - Update getExpReward() above if the removed if() changes!
|
// CraftBukkit start - Update getExpReward() above if the removed if() changes!
|
||||||
if (true && !(this instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon)) { // CraftBukkit - SPIGOT-2420: Special case ender dragon will drop the xp over time
|
if (true && !(this instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon)) { // CraftBukkit - SPIGOT-2420: Special case ender dragon will drop the xp over time
|
||||||
- ExperienceOrb.award((ServerLevel) this.level, this.position(), this.expToDrop);
|
- ExperienceOrb.award((ServerLevel) this.level(), this.position(), this.expToDrop);
|
||||||
+ LivingEntity attacker = this.lastHurtByPlayer != null ? this.lastHurtByPlayer : this.lastHurtByMob; // Paper
|
+ LivingEntity attacker = this.lastHurtByPlayer != null ? this.lastHurtByPlayer : this.lastHurtByMob; // Paper
|
||||||
+ ExperienceOrb.award((ServerLevel) this.level, this.position(), this.expToDrop, this instanceof ServerPlayer ? org.bukkit.entity.ExperienceOrb.SpawnReason.PLAYER_DEATH : org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, attacker, this); // Paper
|
+ ExperienceOrb.award((ServerLevel) this.level(), this.position(), this.expToDrop, this instanceof ServerPlayer ? org.bukkit.entity.ExperienceOrb.SpawnReason.PLAYER_DEATH : org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, attacker, this); // Paper
|
||||||
this.expToDrop = 0;
|
this.expToDrop = 0;
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
@ -149,14 +149,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class Animal extends AgeableMob {
|
@@ -0,0 +0,0 @@ public abstract class Animal extends AgeableMob {
|
||||||
if (world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
if (world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||||
// CraftBukkit start - use event experience
|
// CraftBukkit start - use event experience
|
||||||
if (experience > 0) {
|
if (experience > 0) {
|
||||||
- world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience));
|
- world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience));
|
||||||
+ world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, entityplayer, entityageable)); // Paper
|
+ world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, null)); // Paper //TODO trigger
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
}
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||||
|
@ -183,38 +183,25 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
|
||||||
@@ -0,0 +0,0 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
|
||||||
this.getBrain().setMemory(MemoryModuleType.IS_PREGNANT, Unit.INSTANCE);
|
|
||||||
world.broadcastEntityEvent(this, (byte)18);
|
|
||||||
if (world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
|
||||||
- world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), this.getRandom().nextInt(7) + 1));
|
|
||||||
+ world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), this.getRandom().nextInt(7) + 1, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, serverPlayer)); // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||||
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
||||||
|
|
||||||
if (this.level instanceof ServerLevel) {
|
if (this.level() instanceof ServerLevel) {
|
||||||
if (this.dragonDeathTime > 150 && this.dragonDeathTime % 5 == 0 && true) { // CraftBukkit - SPIGOT-2420: Already checked for the game rule when calculating the xp
|
if (this.dragonDeathTime > 150 && this.dragonDeathTime % 5 == 0 && true) { // CraftBukkit - SPIGOT-2420: Already checked for the game rule when calculating the xp
|
||||||
- ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.08F));
|
- ExperienceOrb.award((ServerLevel) this.level(), this.position(), Mth.floor((float) short0 * 0.08F));
|
||||||
+ ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.08F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
|
+ ExperienceOrb.award((ServerLevel) this.level(), this.position(), Mth.floor((float) short0 * 0.08F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.dragonDeathTime == 1 && !this.isSilent()) {
|
if (this.dragonDeathTime == 1 && !this.isSilent()) {
|
||||||
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
||||||
this.move(MoverType.SELF, new Vec3(0.0D, 0.10000000149011612D, 0.0D));
|
this.move(MoverType.SELF, new Vec3(0.0D, 0.10000000149011612D, 0.0D));
|
||||||
if (this.dragonDeathTime == 200 && this.level instanceof ServerLevel) {
|
if (this.dragonDeathTime == 200 && this.level() instanceof ServerLevel) {
|
||||||
if (true) { // CraftBukkit - SPIGOT-2420: Already checked for the game rule when calculating the xp
|
if (true) { // CraftBukkit - SPIGOT-2420: Already checked for the game rule when calculating the xp
|
||||||
- ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.2F));
|
- ExperienceOrb.award((ServerLevel) this.level(), this.position(), Mth.floor((float) short0 * 0.2F));
|
||||||
+ ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.2F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
|
+ ExperienceOrb.award((ServerLevel) this.level(), this.position(), Mth.floor((float) short0 * 0.2F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.dragonFight != null) {
|
if (this.dragonFight != null) {
|
||||||
|
@ -226,8 +213,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offer.shouldRewardExp()) {
|
if (offer.shouldRewardExp()) {
|
||||||
- this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i));
|
- this.level().addFreshEntity(new ExperienceOrb(this.level(), this.getX(), this.getY() + 0.5D, this.getZ(), i));
|
||||||
+ this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
|
+ this.level().addFreshEntity(new ExperienceOrb(this.level(), this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -239,8 +226,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
if (offer.shouldRewardExp()) {
|
if (offer.shouldRewardExp()) {
|
||||||
int i = 3 + this.random.nextInt(4);
|
int i = 3 + this.random.nextInt(4);
|
||||||
|
|
||||||
- this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i));
|
- this.level().addFreshEntity(new ExperienceOrb(this.level(), this.getX(), this.getY() + 0.5D, this.getZ(), i));
|
||||||
+ this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
|
+ this.level().addFreshEntity(new ExperienceOrb(this.level(), this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -249,11 +236,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
||||||
@@ -0,0 +0,0 @@ public class FishingHook extends Projectile {
|
@@ -0,0 +0,0 @@ public class FishingHook extends Projectile {
|
||||||
this.level.addFreshEntity(entityitem);
|
this.level().addFreshEntity(entityitem);
|
||||||
// CraftBukkit start - this.random.nextInt(6) + 1 -> playerFishEvent.getExpToDrop()
|
// CraftBukkit start - this.random.nextInt(6) + 1 -> playerFishEvent.getExpToDrop()
|
||||||
if (playerFishEvent.getExpToDrop() > 0) {
|
if (playerFishEvent.getExpToDrop() > 0) {
|
||||||
- entityhuman.level.addFreshEntity(new ExperienceOrb(entityhuman.level, entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop()));
|
- entityhuman.level().addFreshEntity(new ExperienceOrb(entityhuman.level(), entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop()));
|
||||||
+ entityhuman.level.addFreshEntity(new ExperienceOrb(entityhuman.level, entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.FISHING, this.getPlayerOwner(), this)); // Paper
|
+ entityhuman.level().addFreshEntity(new ExperienceOrb(entityhuman.level(), entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.FISHING, this.getPlayerOwner(), this)); // Paper
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
if (itemstack1.is(ItemTags.FISHES)) {
|
if (itemstack1.is(ItemTags.FISHES)) {
|
||||||
|
@ -265,8 +252,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
- ExperienceOrb.award((ServerLevel) this.level, this.position(), i);
|
- ExperienceOrb.award((ServerLevel) this.level(), this.position(), i);
|
||||||
+ ExperienceOrb.award((ServerLevel) this.level, this.position(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.EXP_BOTTLE, this.getOwner(), this); // Paper
|
+ ExperienceOrb.award((ServerLevel) this.level(), this.position(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.EXP_BOTTLE, this.getOwner(), this); // Paper
|
||||||
this.discard();
|
this.discard();
|
||||||
}
|
}
|
||||||
|
|
|
@ -561,7 +561,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
@@ -0,0 +0,0 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain
|
||||||
this.level.gameEvent(GameEvent.CONTAINER_CLOSE, this.position(), GameEvent.Context.of((Entity) player));
|
this.level().gameEvent(GameEvent.CONTAINER_CLOSE, this.position(), GameEvent.Context.of((Entity) player));
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
|
@ -606,19 +606,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public interface ContainerEntity extends Container, MenuProvider {
|
@@ -0,0 +0,0 @@ public interface ContainerEntity extends Container, MenuProvider {
|
||||||
|
|
||||||
default void unpackChestVehicleLootTable(@Nullable Player player) {
|
default void unpackChestVehicleLootTable(@Nullable Player player) {
|
||||||
MinecraftServer minecraftServer = this.getLevel().getServer();
|
MinecraftServer minecraftServer = this.level().getServer();
|
||||||
- if (this.getLootTable() != null && minecraftServer != null) {
|
- if (this.getLootTable() != null && minecraftServer != null) {
|
||||||
+ if (this.getLootableData().shouldReplenish(player) && minecraftServer != null) { // Paper
|
+ if (this.getLootableData().shouldReplenish(player) && minecraftServer != null) { // Paper
|
||||||
LootTable lootTable = minecraftServer.getLootTables().get(this.getLootTable());
|
LootTable lootTable = minecraftServer.getLootData().getLootTable(this.getLootTable());
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer)player, this.getLootTable());
|
CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer)player, this.getLootTable());
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.setLootTable((ResourceLocation)null);
|
- this.setLootTable((ResourceLocation)null);
|
||||||
+ // this.setLootTable((ResourceLocation)null); // Paper
|
|
||||||
+ this.getLootableData().processRefill(player); // Paper
|
+ this.getLootableData().processRefill(player); // Paper
|
||||||
+
|
LootParams.Builder builder = (new LootParams.Builder((ServerLevel)this.level())).withParameter(LootContextParams.ORIGIN, this.position());
|
||||||
LootContext.Builder builder = (new LootContext.Builder((ServerLevel)this.getLevel())).withParameter(LootContextParams.ORIGIN, this.position()).withOptionalRandomSeed(this.getLootTableSeed());
|
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
builder.withLuck(player.getLuck()).withParameter(LootContextParams.THIS_ENTITY, player);
|
builder.withLuck(player.getLuck()).withParameter(LootContextParams.THIS_ENTITY, player);
|
||||||
@@ -0,0 +0,0 @@ public interface ContainerEntity extends Container, MenuProvider {
|
@@ -0,0 +0,0 @@ public interface ContainerEntity extends Container, MenuProvider {
|
||||||
|
@ -680,17 +678,29 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public void unpackLootTable(@Nullable Player player) {
|
public void unpackLootTable(@Nullable Player player) {
|
||||||
- if (this.lootTable != null && this.level.getServer() != null) {
|
- if (this.lootTable != null && this.level.getServer() != null) {
|
||||||
+ if (this.lootableData.shouldReplenish(player) && this.level.getServer() != null) { // Paper
|
+ if (this.lootableData.shouldReplenish(player) && this.level.getServer() != null) { // Paper
|
||||||
LootTable lootTable = this.level.getServer().getLootTables().get(this.lootTable);
|
LootTable lootTable = this.level.getServer().getLootData().getLootTable(this.lootTable);
|
||||||
if (player instanceof ServerPlayer) {
|
if (player instanceof ServerPlayer) {
|
||||||
CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer)player, this.lootTable);
|
CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer)player, this.lootTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.lootTable = null;
|
- this.lootTable = null;
|
||||||
+ //this.lootTable = null; // Paper
|
|
||||||
+ this.lootableData.processRefill(player); // Paper
|
+ this.lootableData.processRefill(player); // Paper
|
||||||
LootContext.Builder builder = (new LootContext.Builder((ServerLevel)this.level)).withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(this.worldPosition)).withOptionalRandomSeed(this.lootTableSeed);
|
LootParams.Builder builder = (new LootParams.Builder((ServerLevel)this.level)).withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(this.worldPosition));
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
builder.withLuck(player.getLuck()).withParameter(LootContextParams.THIS_ENTITY, player);
|
builder.withLuck(player.getLuck()).withParameter(LootContextParams.THIS_ENTITY, player);
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftBrushableBlock extends CraftBlockEntityState<BrushableBlockEnt
|
||||||
|
this.setLootTable(this.getLootTable(), seed);
|
||||||
|
}
|
||||||
|
|
||||||
|
- private void setLootTable(LootTable table, long seed) {
|
||||||
|
+ public void setLootTable(LootTable table, long seed) { // Paper - make public since it overrides a public method
|
||||||
|
ResourceLocation key = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
|
||||||
|
getSnapshot().setLootTable(key, seed);
|
||||||
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
|
||||||
|
@ -719,19 +729,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public CraftLootable(World world, T tileEntity) {
|
public CraftLootable(World world, T tileEntity) {
|
||||||
super(world, tileEntity);
|
super(world, tileEntity);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSuspiciousSand.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSuspiciousSand.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSuspiciousSand.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSuspiciousSand.java
|
|
||||||
@@ -0,0 +0,0 @@ public class CraftSuspiciousSand extends CraftBlockEntityState<SuspiciousSandBlo
|
|
||||||
this.setLootTable(this.getLootTable(), seed);
|
|
||||||
}
|
|
||||||
|
|
||||||
- private void setLootTable(LootTable table, long seed) {
|
|
||||||
+ public void setLootTable(LootTable table, long seed) { // Paper - change visibility since it overrides a public method
|
|
||||||
ResourceLocation key = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
|
|
||||||
getSnapshot().setLootTable(key, seed);
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftChestBoat.java
|
|
@ -12,10 +12,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||||
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
@@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy {
|
||||||
// CraftBukkit start - Use relative location for far away sounds
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
// this.world.b(1028, this.getChunkCoordinates(), 0);
|
// this.level().globalLevelEvent(1028, this.blockPosition(), 0);
|
||||||
int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16;
|
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
|
||||||
- for (net.minecraft.server.level.ServerPlayer player : this.level.getServer().getPlayerList().players) {
|
- for (net.minecraft.server.level.ServerPlayer player : this.level().getServer().getPlayerList().players) {
|
||||||
+ for (net.minecraft.server.level.ServerPlayer player : level.spigotConfig.dragonDeathSoundRadius > 0 ? ((ServerLevel) level).players() : level.getServer().getPlayerList().players) { // Paper
|
+ for (net.minecraft.server.level.ServerPlayer player : this.level().spigotConfig.dragonDeathSoundRadius > 0 ? ((ServerLevel) this.level()).players() : this.level().getServer().getPlayerList().players) { // Paper
|
||||||
double deltaX = this.getX() - player.getX();
|
double deltaX = this.getX() - player.getX();
|
||||||
double deltaZ = this.getZ() - player.getZ();
|
double deltaZ = this.getZ() - player.getZ();
|
||||||
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
||||||
|
@ -25,10 +25,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||||
@@ -0,0 +0,0 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
@@ -0,0 +0,0 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||||
// CraftBukkit start - Use relative location for far away sounds
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
// this.world.globalLevelEvent(1023, new BlockPosition(this), 0);
|
// this.level().globalLevelEvent(1023, new BlockPosition(this), 0);
|
||||||
int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16;
|
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
|
||||||
- for (ServerPlayer player : (List<ServerPlayer>) MinecraftServer.getServer().getPlayerList().players) {
|
- for (ServerPlayer player : (List<ServerPlayer>) MinecraftServer.getServer().getPlayerList().players) {
|
||||||
+ for (ServerPlayer player : level.spigotConfig.witherSpawnSoundRadius > 0 ? ((ServerLevel) level).players() : level.getServer().getPlayerList().players) { // Paper
|
+ for (ServerPlayer player : this.level().spigotConfig.witherSpawnSoundRadius > 0 ? ((ServerLevel) this.level()).players() : this.level().getServer().getPlayerList().players) { // Paper
|
||||||
double deltaX = this.getX() - player.getX();
|
double deltaX = this.getX() - player.getX();
|
||||||
double deltaZ = this.getZ() - player.getZ();
|
double deltaZ = this.getZ() - player.getZ();
|
||||||
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
|
@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
@@ -0,0 +0,0 @@ public class ItemEntity extends Entity implements TraceableEntity {
|
||||||
PlayerPickupItemEvent playerEvent = new PlayerPickupItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.Item) this.getBukkitEntity(), remaining);
|
PlayerPickupItemEvent playerEvent = new PlayerPickupItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.Item) this.getBukkitEntity(), remaining);
|
||||||
playerEvent.setCancelled(!playerEvent.getPlayer().getCanPickupItems());
|
playerEvent.setCancelled(!playerEvent.getPlayer().getCanPickupItems());
|
||||||
this.level.getCraftServer().getPluginManager().callEvent(playerEvent);
|
this.level().getCraftServer().getPluginManager().callEvent(playerEvent);
|
||||||
+ flyAtPlayer = playerEvent.getFlyAtPlayer(); // Paper
|
+ flyAtPlayer = playerEvent.getFlyAtPlayer(); // Paper
|
||||||
if (playerEvent.isCancelled()) {
|
if (playerEvent.isCancelled()) {
|
||||||
itemstack.setCount(i); // SPIGOT-5294 - restore count
|
itemstack.setCount(i); // SPIGOT-5294 - restore count
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
@@ -0,0 +0,0 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
|
@@ -0,0 +0,0 @@ public class WatchdogThread extends Thread
|
||||||
while ( !this.stopping )
|
while ( !this.stopping )
|
||||||
{
|
{
|
||||||
//
|
//
|
|
@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
Collection<MobEffectInstance> collection = this.getActiveEffects();
|
Collection<MobEffectInstance> collection = this.getActiveEffects();
|
||||||
|
|
||||||
- if (!collection.isEmpty()) {
|
- if (!collection.isEmpty()) {
|
||||||
+ if (!collection.isEmpty() && !level.paperConfig().entities.behavior.disableCreeperLingeringEffect) { // Paper
|
+ if (!collection.isEmpty() && !this.level().paperConfig().entities.behavior.disableCreeperLingeringEffect) { // Paper
|
||||||
AreaEffectCloud entityareaeffectcloud = new AreaEffectCloud(this.level, this.getX(), this.getY(), this.getZ());
|
AreaEffectCloud entityareaeffectcloud = new AreaEffectCloud(this.level(), this.getX(), this.getY(), this.getZ());
|
||||||
|
|
||||||
entityareaeffectcloud.setOwner(this); // CraftBukkit
|
entityareaeffectcloud.setOwner(this); // CraftBukkit
|
|
@ -1,49 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aikar <aikar@aikar.co>
|
|
||||||
Date: Fri, 17 Jun 2016 20:50:11 -0400
|
|
||||||
Subject: [PATCH] Fix Old Sign Conversion
|
|
||||||
|
|
||||||
1) Sign loading code was trying to parse the JSON before the check for oldSign.
|
|
||||||
That code could then skip the old sign converting code if it triggers a JSON parse exception.
|
|
||||||
2) New Mojang Schematic system has Tile Entities in the new converted format, but missing the Bukkit.isConverted flag
|
|
||||||
This causes Igloos and such to render broken signs. We fix this by ignoring sign conversion for Defined Structures
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class BlockEntity {
|
|
||||||
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
|
|
||||||
public CraftPersistentDataContainer persistentDataContainer;
|
|
||||||
// CraftBukkit end
|
|
||||||
+ public boolean isLoadingStructure = false; // Paper
|
|
||||||
private static final Logger LOGGER = LogUtils.getLogger();
|
|
||||||
private final BlockEntityType<?> type;
|
|
||||||
@Nullable
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
|
|
||||||
@@ -0,0 +0,0 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
|
|
||||||
s = "\"\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (oldSign) {
|
|
||||||
+ if (oldSign && !this.isLoadingStructure) { // Paper - saved structures will be in the new format, but will not have isConverted
|
|
||||||
this.messages[i] = org.bukkit.craftbukkit.util.CraftChatMessage.fromString(s)[0];
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
|
|
||||||
@@ -0,0 +0,0 @@ public class StructureTemplate {
|
|
||||||
definedstructure_blockinfo.nbt.putLong("LootTableSeed", random.nextLong());
|
|
||||||
}
|
|
||||||
|
|
||||||
+ tileentity.isLoadingStructure = true; // Paper
|
|
||||||
tileentity.load(definedstructure_blockinfo.nbt);
|
|
||||||
+ tileentity.isLoadingStructure = false; // Paper
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aikar <aikar@aikar.co>
|
|
||||||
Date: Wed, 21 Dec 2016 03:48:29 -0500
|
|
||||||
Subject: [PATCH] Optimize ItemStack.isEmpty()
|
|
||||||
|
|
||||||
Remove hashMap lookup every check, simplify code to remove ternary
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
||||||
@@ -0,0 +0,0 @@ public final class ItemStack {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEmpty() {
|
|
||||||
- return this == ItemStack.EMPTY ? true : (this.getItem() != null && !this.is(Items.AIR) ? this.count <= 0 : true);
|
|
||||||
+ return this == ItemStack.EMPTY || this.item == null || this.item == Items.AIR || this.count <= 0; // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isItemEnabled(FeatureFlagSet enabledFeatures) {
|
|
Loading…
Reference in a new issue