mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-24 07:49:29 +01:00
Some work
This commit is contained in:
parent
8e550effe8
commit
649ade0d96
22 changed files with 152 additions and 110 deletions
|
@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
||||||
@@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
|
@@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
|
||||||
public boolean hasEquipmentLock(EquipmentSlot equipmentSlot, LockType lockType) {
|
public boolean hasEquipmentLock(EquipmentSlot equipmentSlot, LockType lockType) {
|
||||||
return (this.getHandle().disabledSlots & (1 << CraftEquipmentSlot.getNMS(equipmentSlot).getFilterFlag() + lockType.ordinal() * 8)) != 0;
|
return (this.getHandle().disabledSlots & (1 << CraftEquipmentSlot.getNMS(equipmentSlot).getFilterBit(lockType.ordinal() * 8))) != 0;
|
||||||
}
|
}
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ @Override
|
+ @Override
|
103
patches/server/Add-EntityZapEvent.patch
Normal file
103
patches/server/Add-EntityZapEvent.patch
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: AlphaBlend <whizkid3000@hotmail.com>
|
||||||
|
Date: Sun, 16 Oct 2016 23:19:30 -0700
|
||||||
|
Subject: [PATCH] Add EntityZapEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ConversionParams.java b/src/main/java/net/minecraft/world/entity/ConversionParams.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ConversionParams.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ConversionParams.java
|
||||||
|
@@ -0,0 +0,0 @@ public record ConversionParams(ConversionType type, boolean keepEquipment, boole
|
||||||
|
public interface AfterConversion<T extends Mob> {
|
||||||
|
void finalizeConversion(T convertedEntity);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Paper start - entity zap event - allow conversion to be cancelled during finalization
|
||||||
|
+ @FunctionalInterface
|
||||||
|
+ public interface CancellingAfterConversion<T extends Mob> {
|
||||||
|
+ boolean finalizeConversionOrCancel(final T convertedEntity);
|
||||||
|
+ }
|
||||||
|
+ // Paper start - entity zap event - allow conversion to be cancelled during finalization
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public <T extends Mob> T convertTo(EntityType<T> entitytypes, ConversionParams conversionparams, EntitySpawnReason entityspawnreason, ConversionParams.AfterConversion<T> conversionparams_a, EntityTransformEvent.TransformReason transformReason, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||||
|
+ // Paper start - entity zap event - allow cancellation of conversion post creation
|
||||||
|
+ return this.convertTo(entitytypes, conversionparams, entityspawnreason, e -> { conversionparams_a.finalizeConversion(e); return true; }, transformReason, spawnReason);
|
||||||
|
+ }
|
||||||
|
+ @Nullable
|
||||||
|
+ public <T extends Mob> T convertTo(EntityType<T> entitytypes, ConversionParams conversionparams, EntitySpawnReason entityspawnreason, ConversionParams.CancellingAfterConversion<T> conversionparams_a, EntityTransformEvent.TransformReason transformReason, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||||
|
+ // Paper end - entity zap event - allow cancellation of conversion post creation
|
||||||
|
// CraftBukkit end
|
||||||
|
if (this.isRemoved()) {
|
||||||
|
return null;
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
conversionparams.type().convert(this, t0, conversionparams);
|
||||||
|
- conversionparams_a.finalizeConversion(t0);
|
||||||
|
+ if (!conversionparams_a.finalizeConversionOrCancel(t0)) return null; // Paper - entity zap event - return null if conversion was cancelled
|
||||||
|
Level world = this.level();
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public <T extends Mob> T convertTo(EntityType<T> entitytypes, ConversionParams conversionparams, ConversionParams.AfterConversion<T> conversionparams_a, EntityTransformEvent.TransformReason transformReason, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||||
|
+ // Paper start - entity zap event - allow cancellation of conversion post creation
|
||||||
|
+ return this.convertTo(entitytypes, conversionparams, e -> { conversionparams_a.finalizeConversion(e); return true; }, transformReason, spawnReason);
|
||||||
|
+ }
|
||||||
|
+ public <T extends Mob> T convertTo(EntityType<T> entitytypes, ConversionParams conversionparams, ConversionParams.CancellingAfterConversion<T> conversionparams_a, EntityTransformEvent.TransformReason transformReason, CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||||
|
+ // Paper start - entity zap event - allow cancellation of conversion post creation
|
||||||
|
return this.convertTo(entitytypes, conversionparams, EntitySpawnReason.CONVERSION, conversionparams_a, transformReason, spawnReason);
|
||||||
|
// CraftBukkit end
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||||
|
@@ -0,0 +0,0 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||||
|
@Override
|
||||||
|
public void thunderHit(ServerLevel world, LightningBolt lightning) {
|
||||||
|
if (world.getDifficulty() != Difficulty.PEACEFUL) {
|
||||||
|
- Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning);
|
||||||
|
+ // Paper - Add EntityZapEvent; move log down, event can cancel
|
||||||
|
Witch entitywitch = (Witch) this.convertTo(EntityType.WITCH, ConversionParams.single(this, false, false), (entitywitch1) -> {
|
||||||
|
+ // Paper start - Add EntityZapEvent
|
||||||
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch1).isCancelled()) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Move down
|
||||||
|
+ // Paper end - Add EntityZapEvent
|
||||||
|
entitywitch1.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch1.blockPosition()), EntitySpawnReason.CONVERSION, (SpawnGroupData) null);
|
||||||
|
entitywitch1.setPersistenceRequired();
|
||||||
|
this.releaseAllPois();
|
||||||
|
+ return true; // Paper start - Add EntityZapEvent
|
||||||
|
}, EntityTransformEvent.TransformReason.LIGHTNING, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
|
||||||
|
|
||||||
|
if (entitywitch == null) {
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||||
|
return !event.isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ public static com.destroystokyo.paper.event.entity.EntityZapEvent callEntityZapEvent(Entity entity, Entity lightning, Entity changedEntity) {
|
||||||
|
+ com.destroystokyo.paper.event.entity.EntityZapEvent event = new com.destroystokyo.paper.event.entity.EntityZapEvent(entity.getBukkitEntity(), (LightningStrike) lightning.getBukkitEntity(), changedEntity.getBukkitEntity());
|
||||||
|
+ entity.getBukkitEntity().getServer().getPluginManager().callEvent(event);
|
||||||
|
+ return event;
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
public static boolean callEntityChangeBlockEvent(Entity entity, BlockPos position, net.minecraft.world.level.block.state.BlockState newBlock) {
|
||||||
|
return CraftEventFactory.callEntityChangeBlockEvent(entity, position, newBlock, false);
|
||||||
|
}
|
|
@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java
|
--- a/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java
|
+++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/ExplorationMapFunction.java
|
||||||
@@ -0,0 +0,0 @@ public class ExplorationMapFunction extends LootItemConditionalFunction {
|
@@ -0,0 +0,0 @@ public class ExplorationMapFunction extends LootItemConditionalFunction {
|
||||||
Vec3 vec3 = context.getParamOrNull(LootContextParams.ORIGIN);
|
Vec3 vec3 = context.getOptionalParameter(LootContextParams.ORIGIN);
|
||||||
if (vec3 != null) {
|
if (vec3 != null) {
|
||||||
ServerLevel serverLevel = context.getLevel();
|
ServerLevel serverLevel = context.getLevel();
|
||||||
+ // Paper start - Configurable cartographer treasure maps
|
+ // Paper start - Configurable cartographer treasure maps
|
|
@ -65,21 +65,23 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
||||||
+++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
+++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
|
||||||
@@ -0,0 +0,0 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
@@ -0,0 +0,0 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
||||||
vec3.z + (double)direction.getStepZ() * 0.15,
|
|
||||||
itemStack
|
itemStack
|
||||||
|
),
|
||||||
|
serverLevel,
|
||||||
|
- itemStack
|
||||||
|
+ itemStack, f -> f.spawningEntity = context.getPlayer() == null ? null : context.getPlayer().getUUID() // Paper - firework api - assign spawning entity uuid
|
||||||
);
|
);
|
||||||
+ fireworkRocketEntity.spawningEntity = context.getPlayer() == null ? null : context.getPlayer().getUUID(); // Paper
|
|
||||||
level.addFreshEntity(fireworkRocketEntity);
|
|
||||||
itemStack.shrink(1);
|
itemStack.shrink(1);
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
@@ -0,0 +0,0 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
||||||
|
if (user.isFallFlying()) {
|
||||||
ItemStack itemStack = user.getItemInHand(hand);
|
ItemStack itemStack = user.getItemInHand(hand);
|
||||||
if (!world.isClientSide) {
|
if (world instanceof ServerLevel serverLevel) {
|
||||||
FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(world, itemStack, user);
|
- Projectile.spawnProjectile(new FireworkRocketEntity(world, itemStack, user), serverLevel, itemStack);
|
||||||
+ fireworkRocketEntity.spawningEntity = user.getUUID(); // Paper
|
+ Projectile.spawnProjectile(new FireworkRocketEntity(world, itemStack, user), serverLevel, itemStack, f -> f.spawningEntity = user.getUUID()); // Paper - firework api - assign spawning entity uuid
|
||||||
world.addFreshEntity(fireworkRocketEntity);
|
|
||||||
itemStack.consume(1, user);
|
itemStack.consume(1, user);
|
||||||
user.awardStat(Stats.ITEM_USED.get(this));
|
user.awardStat(Stats.ITEM_USED.get(this));
|
||||||
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
@ -14,7 +14,7 @@ diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/mai
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void levelEvent(@Nullable Player player, int eventId, BlockPos pos, int data) {
|
public void levelEvent(@Nullable Player player, int eventId, BlockPos pos, int data) {
|
||||||
|
@ -23,22 +23,40 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLogicalHeight() {
|
public int getLogicalHeight() {
|
||||||
|
@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
return this.serverLevelData.getGameRules();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start - respect global sound events gamerule
|
||||||
|
+ public List<net.minecraft.server.level.ServerPlayer> getPlayersForGlobalSoundGamerule() {
|
||||||
|
+ return this.getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) ? ((ServerLevel) this).getServer().getPlayerList().players : ((ServerLevel) this).players();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public double getGlobalSoundRangeSquared(java.util.function.Function<org.spigotmc.SpigotWorldConfig, Integer> rangeFunction) {
|
||||||
|
+ final double range = rangeFunction.apply(this.spigotConfig);
|
||||||
|
+ return range <= 0 ? 64.0 * 64.0 : range * range; // 64 is taken from default in ServerLevel#levelEvent
|
||||||
|
+ }
|
||||||
|
+ // Paper end - respect global sound events gamerule
|
||||||
|
+
|
||||||
|
@Override
|
||||||
|
public CrashReportCategory fillReportDetails(CrashReport report) {
|
||||||
|
CrashReportCategory crashreportsystemdetails = super.fillReportDetails(report);
|
||||||
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 {
|
||||||
// CraftBukkit start - Use relative location for far away sounds
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
// this.level().globalLevelEvent(1028, this.blockPosition(), 0);
|
// worldserver.globalLevelEvent(1028, this.blockPosition(), 0);
|
||||||
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
|
int viewDistance = worldserver.getCraftServer().getViewDistance() * 16;
|
||||||
- for (net.minecraft.server.level.ServerPlayer player : this.level().getServer().getPlayerList().players) {
|
- for (net.minecraft.server.level.ServerPlayer player : worldserver.getServer().getPlayerList().players) {
|
||||||
+ for (net.minecraft.server.level.ServerPlayer player : this.level().getPlayersForGlobalSoundGamerule()) { // Paper - respect global sound events gamerule
|
+ for (net.minecraft.server.level.ServerPlayer player : worldserver.getPlayersForGlobalSoundGamerule()) { // Paper - respect global sound events gamerule
|
||||||
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;
|
||||||
- if ( this.level().spigotConfig.dragonDeathSoundRadius > 0 && distanceSquared > this.level().spigotConfig.dragonDeathSoundRadius * this.level().spigotConfig.dragonDeathSoundRadius ) continue; // Spigot
|
- if ( worldserver.spigotConfig.dragonDeathSoundRadius > 0 && distanceSquared > worldserver.spigotConfig.dragonDeathSoundRadius * worldserver.spigotConfig.dragonDeathSoundRadius ) continue; // Spigot
|
||||||
+ final double soundRadiusSquared = this.level().getGlobalSoundRangeSquared(config -> config.dragonDeathSoundRadius); // Paper - respect global sound events gamerule
|
+ final double soundRadiusSquared = worldserver.getGlobalSoundRangeSquared(config -> config.dragonDeathSoundRadius); // Paper - respect global sound events gamerule
|
||||||
+ if ( !this.level().getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) && distanceSquared > soundRadiusSquared ) continue; // Spigot // Paper - respect global sound events gamerule
|
+ if ( !worldserver.getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) && distanceSquared > soundRadiusSquared ) continue; // Spigot // Paper - respect global sound events gamerule
|
||||||
if (distanceSquared > viewDistance * viewDistance) {
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
double deltaLength = Math.sqrt(distanceSquared);
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
||||||
|
@ -46,18 +64,18 @@ diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.jav
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||||
+++ 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 RangedAttackMob {
|
||||||
// CraftBukkit start - Use relative location for far away sounds
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
// this.level().globalLevelEvent(1023, new BlockPosition(this), 0);
|
// worldserver.globalLevelEvent(1023, new BlockPosition(this), 0);
|
||||||
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
|
int viewDistance = world.getCraftServer().getViewDistance() * 16;
|
||||||
- for (ServerPlayer player : (List<ServerPlayer>) MinecraftServer.getServer().getPlayerList().players) {
|
- for (ServerPlayer player : (List<ServerPlayer>) MinecraftServer.getServer().getPlayerList().players) {
|
||||||
+ for (ServerPlayer player : this.level().getPlayersForGlobalSoundGamerule()) { // Paper - respect global sound events gamerule
|
+ for (ServerPlayer player : world.getPlayersForGlobalSoundGamerule()) { // Paper - respect global sound events gamerule
|
||||||
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;
|
||||||
- if ( this.level().spigotConfig.witherSpawnSoundRadius > 0 && distanceSquared > this.level().spigotConfig.witherSpawnSoundRadius * this.level().spigotConfig.witherSpawnSoundRadius ) continue; // Spigot
|
- if ( world.spigotConfig.witherSpawnSoundRadius > 0 && distanceSquared > world.spigotConfig.witherSpawnSoundRadius * world.spigotConfig.witherSpawnSoundRadius ) continue; // Spigot
|
||||||
+ final double soundRadiusSquared = this.level().getGlobalSoundRangeSquared(config -> config.witherSpawnSoundRadius); // Paper - respect global sound events gamerule
|
+ final double soundRadiusSquared = world.getGlobalSoundRangeSquared(config -> config.witherSpawnSoundRadius); // Paper - respect global sound events gamerule
|
||||||
+ if ( !this.level().getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) && distanceSquared > soundRadiusSquared ) continue; // Spigot // Paper - respect global sound events gamerule
|
+ if ( !world.getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) && distanceSquared > soundRadiusSquared ) continue; // Spigot // Paper - respect global sound events gamerule
|
||||||
if (distanceSquared > viewDistance * viewDistance) {
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
double deltaLength = Math.sqrt(distanceSquared);
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
||||||
|
@ -66,7 +84,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/world/item/EnderEyeItem.java
|
--- a/src/main/java/net/minecraft/world/item/EnderEyeItem.java
|
||||||
+++ b/src/main/java/net/minecraft/world/item/EnderEyeItem.java
|
+++ b/src/main/java/net/minecraft/world/item/EnderEyeItem.java
|
||||||
@@ -0,0 +0,0 @@ public class EnderEyeItem extends Item {
|
@@ -0,0 +0,0 @@ public class EnderEyeItem extends Item {
|
||||||
// world.b(1038, blockposition1.c(1, 0, 1), 0);
|
// world.globalLevelEvent(1038, blockposition1.offset(1, 0, 1), 0);
|
||||||
int viewDistance = world.getCraftServer().getViewDistance() * 16;
|
int viewDistance = world.getCraftServer().getViewDistance() * 16;
|
||||||
BlockPos soundPos = blockposition1.offset(1, 0, 1);
|
BlockPos soundPos = blockposition1.offset(1, 0, 1);
|
||||||
- for (ServerPlayer player : world.getServer().getPlayerList().players) {
|
- for (ServerPlayer player : world.getServer().getPlayerList().players) {
|
||||||
|
@ -80,22 +98,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
if (distanceSquared > viewDistance * viewDistance) {
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
double deltaLength = Math.sqrt(distanceSquared);
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
double relativeX = player.getX() + (deltaX / deltaLength) * viewDistance;
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
|
||||||
return this.id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ // Paper start - respect global sound events gamerule
|
|
||||||
+ public List<net.minecraft.server.level.ServerPlayer> getPlayersForGlobalSoundGamerule() {
|
|
||||||
+ return this.getGameRules().getBoolean(GameRules.RULE_GLOBAL_SOUND_EVENTS) ? ((ServerLevel) this).getServer().getPlayerList().players : ((ServerLevel) this).players();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public double getGlobalSoundRangeSquared(java.util.function.Function<org.spigotmc.SpigotWorldConfig, Integer> rangeFunction) {
|
|
||||||
+ final double range = rangeFunction.apply(this.spigotConfig);
|
|
||||||
+ return range <= 0 ? 64.0 * 64.0 : range * range; // 64 is taken from default in ServerLevel#levelEvent
|
|
||||||
+ }
|
|
||||||
+ // Paper end - respect global sound events gamerule
|
|
||||||
}
|
|
|
@ -8,26 +8,12 @@ object identity checks safely.
|
||||||
|
|
||||||
Use a simpler optimized hashcode
|
Use a simpler optimized hashcode
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java
|
|
||||||
@@ -0,0 +0,0 @@ public class BooleanProperty extends Property<Boolean> {
|
|
||||||
return value.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
- @Override
|
|
||||||
- public boolean equals(Object object) {
|
|
||||||
+ public boolean equals_unused(Object object) { // Paper - Perf: Optimize hashCode/equals
|
|
||||||
if (this == object) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
--- a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java
|
||||||
@@ -0,0 +0,0 @@ public class EnumProperty<T extends Enum<T> & StringRepresentable> extends Prope
|
@@ -0,0 +0,0 @@ public final class EnumProperty<T extends Enum<T> & StringRepresentable> extends
|
||||||
return value.getSerializedName();
|
return this.ordinalToIndex[enum_.ordinal()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- @Override
|
- @Override
|
||||||
|
@ -40,7 +26,7 @@ diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/Inte
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java
|
--- a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java
|
+++ b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java
|
||||||
@@ -0,0 +0,0 @@ public class IntegerProperty extends Property<Integer> {
|
@@ -0,0 +0,0 @@ public final class IntegerProperty extends Property<Integer> {
|
||||||
return this.values;
|
return this.values;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: AlphaBlend <whizkid3000@hotmail.com>
|
|
||||||
Date: Sun, 16 Oct 2016 23:19:30 -0700
|
|
||||||
Subject: [PATCH] Add EntityZapEvent
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
@@ -0,0 +0,0 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
|
||||||
@Override
|
|
||||||
public void thunderHit(ServerLevel world, LightningBolt lightning) {
|
|
||||||
if (world.getDifficulty() != Difficulty.PEACEFUL) {
|
|
||||||
- Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning);
|
|
||||||
+ // Paper - Add EntityZapEvent; move log down, event can cancel
|
|
||||||
Witch entitywitch = (Witch) EntityType.WITCH.create(world);
|
|
||||||
|
|
||||||
if (entitywitch != null) {
|
|
||||||
+ // Paper start - Add EntityZapEvent
|
|
||||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch).isCancelled()) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Move down
|
|
||||||
+ // Paper end - Add EntityZapEvent
|
|
||||||
+
|
|
||||||
entitywitch.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
|
|
||||||
entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null);
|
|
||||||
entitywitch.setNoAi(this.isNoAi());
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
||||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
|
||||||
return !event.isCancelled();
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Paper start
|
|
||||||
+ public static com.destroystokyo.paper.event.entity.EntityZapEvent callEntityZapEvent(Entity entity, Entity lightning, Entity changedEntity) {
|
|
||||||
+ com.destroystokyo.paper.event.entity.EntityZapEvent event = new com.destroystokyo.paper.event.entity.EntityZapEvent(entity.getBukkitEntity(), (LightningStrike) lightning.getBukkitEntity(), changedEntity.getBukkitEntity());
|
|
||||||
+ entity.getBukkitEntity().getServer().getPluginManager().callEvent(event);
|
|
||||||
+ return event;
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+
|
|
||||||
public static boolean callEntityChangeBlockEvent(Entity entity, BlockPos position, net.minecraft.world.level.block.state.BlockState newBlock) {
|
|
||||||
return CraftEventFactory.callEntityChangeBlockEvent(entity, position, newBlock, false);
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue