mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
fix lots of levels
This commit is contained in:
@@ -46,7 +46,7 @@ index 42d5b4ffc51da90a8f3bbec84e44ac2b0cb7b5ee..9168a02ede5b2fc924dbcf0063109f8e
|
||||
final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date());
|
||||
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr);
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 15539499b5a0f16ad2d44c39c5b824876fdf0951..d33eb475a41791b298c3300a14cf2af17e200c6c 100644
|
||||
index 15539499b5a0f16ad2d44c39c5b824876fdf0951..632af791c9c4c9d2fa84f46b0c28bb8089930ebe 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -751,6 +751,15 @@ public class ServerPlayer extends Player {
|
||||
@@ -55,7 +55,7 @@ index 15539499b5a0f16ad2d44c39c5b824876fdf0951..d33eb475a41791b298c3300a14cf2af1
|
||||
this.advancements.flushDirty(this);
|
||||
+
|
||||
+ // Purpur start
|
||||
+ if (this.level().purpurConfig.useNightVisionWhenRiding && this.getVehicle() != null && this.getVehicle().getRider() == this && this.level.getGameTime() % 100 == 0) { // 5 seconds
|
||||
+ if (this.level().purpurConfig.useNightVisionWhenRiding && this.getVehicle() != null && this.getVehicle().getRider() == this && this.level().getGameTime() % 100 == 0) { // 5 seconds
|
||||
+ MobEffectInstance nightVision = this.getEffect(MobEffects.NIGHT_VISION);
|
||||
+ if (nightVision == null || nightVision.getDuration() <= 300) { // 15 seconds
|
||||
+ this.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, 400, 0)); // 20 seconds
|
||||
@@ -269,7 +269,7 @@ index a6d730eaee1df1c5c61aa0f8731b8c055080a9a6..218eaf5f18162422b3376335e32f25d0
|
||||
// Paper end
|
||||
if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..89ea4208bc30bcf3ed59b3a28384c0796b9204c4 100644
|
||||
index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..d2ae293a23f8d02b3a2f0a60e4389497be77b60d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -145,8 +145,8 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -299,7 +299,7 @@ index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..89ea4208bc30bcf3ed59b3a28384c079
|
||||
+
|
||||
+ // Purpur start
|
||||
+ public double getMaxY() {
|
||||
+ return level.getHeight();
|
||||
+ return level().getHeight();
|
||||
+ }
|
||||
+
|
||||
+ public InteractionResult tryRide(Player player, InteractionHand hand) {
|
||||
@@ -526,7 +526,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5
|
||||
--this.lookAtCooldown;
|
||||
this.getYRotD().ifPresent((yaw) -> {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
index 940cd932e74bc2e6754186731d7aa6f10d56eb68..7798e8df6156d71878b7c1f60c5636be64a25591 100644
|
||||
index 940cd932e74bc2e6754186731d7aa6f10d56eb68..2ac0c8a7335450c192352da9c34151a70a2645dd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions;
|
||||
@@ -577,7 +577,7 @@ index 940cd932e74bc2e6754186731d7aa6f10d56eb68..7798e8df6156d71878b7c1f60c5636be
|
||||
+ super.onMount(rider);
|
||||
+ if (isResting()) {
|
||||
+ setResting(false);
|
||||
+ level.levelEvent(null, 1025, new BlockPos(this).above(), 0);
|
||||
+ level().levelEvent(null, 1025, new BlockPos(this).above(), 0);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@@ -964,7 +964,7 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561
|
||||
// CraftBukkit end
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..057ebdba945caa27db8982fe140d858bdb84fa39 100644
|
||||
index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f367342852185974 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
@@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -1037,10 +1037,10 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..057ebdba945caa27db8982fe140d858b
|
||||
+ loc.setPitch(loc.getPitch() - 10);
|
||||
+ org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(10).add(loc.toVector());
|
||||
+
|
||||
+ org.purpurmc.purpur.entity.DolphinSpit spit = new org.purpurmc.purpur.entity.DolphinSpit(level, this);
|
||||
+ org.purpurmc.purpur.entity.DolphinSpit spit = new org.purpurmc.purpur.entity.DolphinSpit(level(), this);
|
||||
+ spit.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), level().purpurConfig.dolphinSpitSpeed, 5.0F);
|
||||
+
|
||||
+ level.addFreshEntity(spit);
|
||||
+ level().addFreshEntity(spit);
|
||||
+ playSound(SoundEvents.DOLPHIN_ATTACK, 1.0F, 1.0F + (random.nextFloat() - random.nextFloat()) * 0.2F);
|
||||
+ return true;
|
||||
+ }
|
||||
@@ -2894,7 +2894,7 @@ index 92666c48620078623a451fbf68f673cb9f81c4b5..5a2eb6775ecb3b01fd136c796258395b
|
||||
this.dragonFight.updateDragon(this);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa457c5ed728 100644
|
||||
index f69e0b11be74ac83694f59999b3f07a318410c19..2a8f6b1fb7f3aac3100e5dc9ee64c53c0edd165b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -3021,11 +3021,11 @@ index f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa45
|
||||
+ }
|
||||
+
|
||||
+ public void shoot(int head, double x, double y, double z, Player rider) {
|
||||
+ level.levelEvent(null, 1024, blockPosition(), 0);
|
||||
+ level().levelEvent(null, 1024, blockPosition(), 0);
|
||||
+ double headX = getHeadX(head);
|
||||
+ double headY = getHeadY(head);
|
||||
+ double headZ = getHeadZ(head);
|
||||
+ WitherSkull skull = new WitherSkull(level, this, x - headX, y - headY, z - headZ) {
|
||||
+ WitherSkull skull = new WitherSkull(level(), this, x - headX, y - headY, z - headZ) {
|
||||
+ @Override
|
||||
+ public boolean canHitEntity(Entity target) {
|
||||
+ // do not hit rider
|
||||
@@ -3033,7 +3033,7 @@ index f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa45
|
||||
+ }
|
||||
+ };
|
||||
+ skull.setPosRaw(headX, headY, headZ);
|
||||
+ level.addFreshEntity(skull);
|
||||
+ level().addFreshEntity(skull);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@@ -3871,7 +3871,7 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192
|
||||
|
||||
@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 4a132c3eff6978e927bcd4df56b9ce0306af6d19..ea613fe67fcd977aebaae891f95272970ba23698 100644
|
||||
index 4a132c3eff6978e927bcd4df56b9ce0306af6d19..519d7667e6a8bcb39c200546af5ebbf74e0e9368 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,64 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -3931,7 +3931,7 @@ index 4a132c3eff6978e927bcd4df56b9ce0306af6d19..ea613fe67fcd977aebaae891f9527297
|
||||
+ org.purpurmc.purpur.entity.PhantomFlames flames = new org.purpurmc.purpur.entity.PhantomFlames(level, this);
|
||||
+ flames.canGrief = level().purpurConfig.phantomAllowGriefing;
|
||||
+ flames.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), 1.0F, 5.0F);
|
||||
+ level.addFreshEntity(flames);
|
||||
+ level().addFreshEntity(flames);
|
||||
+ return true;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
@@ -5110,6 +5110,19 @@ index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
|
||||
index cc0a3d9794d05b6bc6ab05f4f2ab8d83134b181d..e1f918d0bd2a70db1aba8bda8717149f58766825 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
|
||||
@@ -33,7 +33,7 @@ public final class ProjectileUtil {
|
||||
return getHitResult(vec32, entity, predicate, vec3, level);
|
||||
}
|
||||
|
||||
- private static HitResult getHitResult(Vec3 pos, Entity entity, Predicate<Entity> predicate, Vec3 velocity, Level world) {
|
||||
+ public static HitResult getHitResult(Vec3 pos, Entity entity, Predicate<Entity> predicate, Vec3 velocity, Level world) { // Purpur - private -> public
|
||||
Vec3 vec3 = pos.add(velocity);
|
||||
HitResult hitResult = world.clip(new ClipContext(pos, vec3, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity));
|
||||
if (hitResult.getType() != HitResult.Type.MISS) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea2de9ff84 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
@@ -6303,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..a3512b14ecc5b855831e44e7a34d6eba37851e76
|
||||
index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e324b567b46
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
|
||||
@@ -0,0 +1,99 @@
|
||||
@@ -6401,14 +6414,14 @@ index 0000000000000000000000000000000000000000..a3512b14ecc5b855831e44e7a34d6eba
|
||||
+ if (this.hitCancelled) {
|
||||
+ return;
|
||||
+ }
|
||||
+ BlockState state = this.level.getBlockState(blockHitResult.getBlockPos());
|
||||
+ BlockState state = this.level().getBlockState(blockHitResult.getBlockPos());
|
||||
+ state.onProjectileHit(this.level, state, blockHitResult, this);
|
||||
+ this.discard();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f383a62bf
|
||||
index 0000000000000000000000000000000000000000..1fd6412e332ea8ee82b19c108e113624e51d764b
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
|
||||
@@ -0,0 +1,114 @@
|
||||
@@ -6456,7 +6469,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
|
||||
+ 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);
|
||||
+
|
||||
@@ -6468,7 +6481,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
|
||||
+
|
||||
+ Vec3 motDouble = mot.scale(2.0);
|
||||
+ for (int i = 0; i < 5; i++) {
|
||||
+ ((ServerLevel) level).sendParticles(null, ParticleTypes.FLAME,
|
||||
+ ((ServerLevel) level()).sendParticles(null, ParticleTypes.FLAME,
|
||||
+ getX() + random.nextFloat() / 2 - 0.25F,
|
||||
+ getY() + random.nextFloat() / 2 - 0.25F,
|
||||
+ getZ() + random.nextFloat() / 2 - 0.25F,
|
||||
@@ -6477,7 +6490,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
|
||||
+
|
||||
+ if (++ticksLived > 20) {
|
||||
+ this.discard();
|
||||
+ } else if (this.level.getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) {
|
||||
+ } else if (this.level().getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) {
|
||||
+ this.discard();
|
||||
+ } else if (this.isInWaterOrBubble()) {
|
||||
+ this.discard();
|
||||
@@ -6520,8 +6533,8 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
|
||||
+ return;
|
||||
+ }
|
||||
+ if (this.canGrief) {
|
||||
+ BlockState state = this.level.getBlockState(blockHitResult.getBlockPos());
|
||||
+ state.onProjectileHit(this.level, state, blockHitResult, this);
|
||||
+ BlockState state = this.level().getBlockState(blockHitResult.getBlockPos());
|
||||
+ state.onProjectileHit(this.level(), state, blockHitResult, this);
|
||||
+ }
|
||||
+ this.discard();
|
||||
+ }
|
||||
|
||||
Reference in New Issue
Block a user