|
|
|
|
@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes
|
|
|
|
|
Original license: MIT
|
|
|
|
|
Original project: https://github.com/PurpurMC/Purpur
|
|
|
|
|
|
|
|
|
|
Commit: a3c11d6845ae4a8b1cee0ee0d800e26adf5bfbff
|
|
|
|
|
Commit: 469a4de5ce87dcf6461e067d29a88507231f4a6b
|
|
|
|
|
|
|
|
|
|
Patches listed below are removed in this patch, They exists in Gale or Leaf:
|
|
|
|
|
* "net/minecraft/CrashReport.java.patch"
|
|
|
|
|
@@ -4569,10 +4569,10 @@ index 517c546cfc8eca2191df57289e6a22ac64fc867c..8964bb5098c0dc36741af3656af6bc0b
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
|
|
|
|
|
index 4e74d5b3076f50f9294553b453f5903ef32f1e8a..65d4bd89be02973291b85463d242a9b22b1cec5f 100644
|
|
|
|
|
index 4e74d5b3076f50f9294553b453f5903ef32f1e8a..e04da94daced96a7eb9fdb01c551bea667b72d76 100644
|
|
|
|
|
--- a/net/minecraft/world/entity/animal/HappyGhast.java
|
|
|
|
|
+++ b/net/minecraft/world/entity/animal/HappyGhast.java
|
|
|
|
|
@@ -118,6 +118,33 @@ public class HappyGhast extends Animal {
|
|
|
|
|
@@ -118,6 +118,47 @@ public class HappyGhast extends Animal {
|
|
|
|
|
this.removeAllGoals(goal -> true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -4602,11 +4602,25 @@ index 4e74d5b3076f50f9294553b453f5903ef32f1e8a..65d4bd89be02973291b85463d242a9b2
|
|
|
|
|
+ return 6000;
|
|
|
|
|
+ }
|
|
|
|
|
+ // Purpur end - Make entity breeding times configurable
|
|
|
|
|
+
|
|
|
|
|
+ // Purpur start - Toggle for water sensitive mob damage
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public boolean isSensitiveToWater() {
|
|
|
|
|
+ return this.level().purpurConfig.happyGhastTakeDamageFromWater;
|
|
|
|
|
+ }
|
|
|
|
|
+ // Purpur end - Toggle for water sensitive mob damage
|
|
|
|
|
+
|
|
|
|
|
+ // Purpur start - Mobs always drop experience
|
|
|
|
|
+ @Override
|
|
|
|
|
+ protected boolean isAlwaysExperienceDropper() {
|
|
|
|
|
+ return this.level().purpurConfig.happyGhastAlwaysDropExp;
|
|
|
|
|
+ }
|
|
|
|
|
+ // Purpur end - Mobs always drop experience
|
|
|
|
|
+
|
|
|
|
|
@Override
|
|
|
|
|
protected void ageBoundaryReached() {
|
|
|
|
|
if (this.isBaby()) {
|
|
|
|
|
@@ -141,7 +168,7 @@ public class HappyGhast extends Animal {
|
|
|
|
|
@@ -141,7 +182,7 @@ public class HappyGhast extends Animal {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected float sanitizeScale(float scale) {
|
|
|
|
|
@@ -10406,18 +10420,10 @@ index 9d84bf2cffee25404eebbefdc9cc3f37ebc386b0..2b85cedf235e673d6030c2a649abf60b
|
|
|
|
|
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockPos, blockState.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state
|
|
|
|
|
continue;
|
|
|
|
|
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
|
|
|
|
|
index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fef0e05be4 100644
|
|
|
|
|
index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..a46ca09f661a4f8f3ede6550d613e0c704a9389b 100644
|
|
|
|
|
--- a/net/minecraft/world/entity/monster/Shulker.java
|
|
|
|
|
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
|
|
|
|
@@ -52,6 +52,7 @@ import net.minecraft.world.level.Level;
|
|
|
|
|
import net.minecraft.world.level.ServerLevelAccessor;
|
|
|
|
|
import net.minecraft.world.level.block.Blocks;
|
|
|
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
|
|
|
+import net.minecraft.world.level.entity.EntityTypeTest;
|
|
|
|
|
import net.minecraft.world.level.gameevent.GameEvent;
|
|
|
|
|
import net.minecraft.world.level.storage.ValueInput;
|
|
|
|
|
import net.minecraft.world.level.storage.ValueOutput;
|
|
|
|
|
@@ -94,12 +95,68 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
@@ -94,12 +94,68 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
this.lookControl = new Shulker.ShulkerLookControl(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -10486,7 +10492,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fe
|
|
|
|
|
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, this.getClass()).setAlertOthers());
|
|
|
|
|
this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this));
|
|
|
|
|
this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this));
|
|
|
|
|
@@ -461,11 +518,21 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
@@ -461,11 +517,21 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
private void hitByShulkerBullet() {
|
|
|
|
|
Vec3 vec3 = this.position();
|
|
|
|
|
AABB boundingBox = this.getBoundingBox();
|
|
|
|
|
@@ -10498,7 +10504,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fe
|
|
|
|
|
+ if ((!this.level().purpurConfig.shulkerSpawnFromBulletRequireOpenLid || !this.isClosed()) && this.teleportSomewhere()) {
|
|
|
|
|
+ float chance = this.level().purpurConfig.shulkerSpawnFromBulletBaseChance;
|
|
|
|
|
+ if (!this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation.isBlank()) {
|
|
|
|
|
+ int nearby = this.level().getEntities((EntityTypeTest) EntityType.SHULKER, boundingBox.inflate(this.level().purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size();
|
|
|
|
|
+ int nearby = this.level().getEntities((net.minecraft.world.level.entity.EntityTypeTest) EntityType.SHULKER, boundingBox.inflate(this.level().purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size();
|
|
|
|
|
+ try {
|
|
|
|
|
+ chance -= ((Number) scriptEngine.eval("let nearby = " + nearby + "; " + this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation)).floatValue();
|
|
|
|
|
+ } catch (javax.script.ScriptException e) {
|
|
|
|
|
@@ -10512,7 +10518,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fe
|
|
|
|
|
if (shulker != null) {
|
|
|
|
|
shulker.setVariant(this.getVariant());
|
|
|
|
|
shulker.snapTo(vec3);
|
|
|
|
|
@@ -565,7 +632,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
@@ -565,7 +631,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected float sanitizeScale(float scale) {
|
|
|
|
|
@@ -10521,7 +10527,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fe
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void setVariant(Optional<DyeColor> variant) {
|
|
|
|
|
@@ -573,7 +640,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
@@ -573,7 +639,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Optional<DyeColor> getVariant() {
|
|
|
|
|
@@ -10530,7 +10536,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..2ace8aebd050e43582524c4a659132fe
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Nullable
|
|
|
|
|
@@ -693,7 +760,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
@@ -693,7 +759,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|