Add 'bungee' online mode to bstats graph

This commit is contained in:
William Blake Galbreath
2020-04-04 01:00:05 -05:00
parent 7858a4f9cd
commit c923510cec
20 changed files with 295 additions and 339 deletions

View File

@@ -1,4 +1,4 @@
From 9cf06be15c14b9550817387d504504404973951a Mon Sep 17 00:00:00 2001
From d37c97a3d37806c3efae56031dbe5253adbb152f Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 9 May 2019 18:09:43 -0500
Subject: [PATCH] Purpur config files
@@ -20,7 +20,7 @@ Subject: [PATCH] Purpur config files
create mode 100644 src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 1d7d1ffbf7..d886f1d145 100644
index 6916ed30c4..cd00a48927 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -96,10 +96,12 @@ public class PaperConfig {
@@ -37,7 +37,7 @@ index 1d7d1ffbf7..d886f1d145 100644
static void readConfig(Class<?> clazz, Object instance) {
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 349a0ea213..d70c8cab2b 100644
index 1ef7890da5..e614570d33 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -192,6 +192,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -82,7 +82,7 @@ index 5117dafbcf..1131d43269 100644
this.world = new CraftWorld((WorldServer) this, gen, env);
diff --git a/src/main/java/net/pl3x/purpur/Metrics.java b/src/main/java/net/pl3x/purpur/Metrics.java
new file mode 100644
index 0000000000..246eb8140f
index 0000000000..9210afab6d
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/Metrics.java
@@ -0,0 +1,598 @@
@@ -647,7 +647,7 @@ index 0000000000..246eb8140f
+ }));
+
+ metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : "offline"));
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (Bukkit.spigot().getSpigotConfig().getBoolean("settings.bungeecord") ? "bungee" : "offline")));
+ metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown"));
+
+ metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {

View File

@@ -1,4 +1,4 @@
From 0ed72be7432541d6fbc0cae5de1e2877bf8db166 Mon Sep 17 00:00:00 2001
From 392cd63c778db648271e8db15aac6b3d4e060bf9 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 6 Feb 2020 19:53:59 -0600
Subject: [PATCH] Ridables
@@ -50,7 +50,7 @@ Subject: [PATCH] Ridables
.../net/minecraft/server/EntityOcelot.java | 19 +
.../net/minecraft/server/EntityPanda.java | 47 +-
.../net/minecraft/server/EntityParrot.java | 77 ++-
.../net/minecraft/server/EntityPhantom.java | 77 ++-
.../net/minecraft/server/EntityPhantom.java | 97 ++-
.../java/net/minecraft/server/EntityPig.java | 48 +-
.../net/minecraft/server/EntityPigZombie.java | 17 +
.../net/minecraft/server/EntityPillager.java | 19 +
@@ -93,22 +93,24 @@ Subject: [PATCH] Ridables
.../minecraft/server/ProjectileHelper.java | 1 +
src/main/java/net/minecraft/server/Vec3D.java | 3 +
src/main/java/net/minecraft/server/World.java | 7 +
.../net/pl3x/purpur/PurpurWorldConfig.java | 595 ++++++++++++++++++
.../net/pl3x/purpur/PurpurWorldConfig.java | 599 ++++++++++++++++++
.../purpur/controller/ControllerLookWASD.java | 75 +++
.../purpur/controller/ControllerMoveWASD.java | 86 +++
.../controller/ControllerMoveWASDFlying.java | 53 ++
.../ControllerMoveWASDFlyingWithSpacebar.java | 61 ++
.../controller/ControllerMoveWASDWater.java | 43 ++
.../net/pl3x/purpur/entity/DolphinSpit.java | 119 ++++
.../net/pl3x/purpur/entity/PhantomFlames.java | 126 ++++
.../pathfinder/PathfinderGoalHasRider.java | 21 +
.../craftbukkit/entity/CraftEntity.java | 27 +
98 files changed, 3451 insertions(+), 204 deletions(-)
99 files changed, 3601 insertions(+), 204 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
create mode 100644 src/main/java/net/pl3x/purpur/entity/DolphinSpit.java
create mode 100644 src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
create mode 100644 src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java
@@ -195,7 +197,7 @@ index 816d301f1c..f7344d3aec 100644
this.C = true;
return this;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index d098b224fb..ffdad5f332 100644
index 862a64b6fd..69ae184bc6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -79,7 +79,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2279,7 +2281,7 @@ index 5782a25ecd..c87fc523f1 100644
+ protected void ez() { if (world.purpurConfig.zombieHorseCanSwim) goalSelector.a(0, new PathfinderGoalFloat(this)); } // Purpur
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 584166f225..de22cad764 100644
index 7afcde608e..f372c13d8b 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -374,9 +374,21 @@ public abstract class EntityHuman extends EntityLiving {
@@ -3059,7 +3061,7 @@ index 94e57a2d85..7ba2f3a351 100644
this.goalSelector.a(2, this.goalSit);
this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true));
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index 90eeddb1af..5ccbc341d2 100644
index 90eeddb1af..c392085d0b 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -22,6 +22,40 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -3115,21 +3117,20 @@ index 90eeddb1af..5ccbc341d2 100644
this.targetSelector.a(1, new EntityPhantom.b());
}
@@ -39,6 +75,13 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -39,6 +75,12 @@ public class EntityPhantom extends EntityFlying implements IMonster {
protected void initAttributes() {
super.initAttributes();
this.getAttributeMap().b(GenericAttributes.ATTACK_DAMAGE);
+ // Purpur start
+ if (world != null && world.purpurConfig.phantomRidable) {
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.01D);
+ this.getAttributeMap().b(GenericAttributes.FLYING_SPEED);
+ this.getAttributeInstance(GenericAttributes.FLYING_SPEED).setValue(0.6000000238418579D);
+ this.getAttributeInstance(GenericAttributes.FLYING_SPEED).setValue(3.0D);
+ }
+ // Purpur end
}
@Override
@@ -103,7 +146,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -103,7 +145,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public void movementTick() {
@@ -3138,7 +3139,35 @@ index 90eeddb1af..5ccbc341d2 100644
this.setOnFire(8);
}
@@ -215,6 +258,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -115,6 +157,27 @@ public class EntityPhantom extends EntityFlying implements IMonster {
super.mobTick();
}
+ // Purpur start
+ @Override
+ public boolean onSpacebar() {
+ if (hasRider() && getRider().getBukkitEntity().hasPermission("allow.special.phantom")) {
+ shoot();
+ }
+ return false;
+ }
+
+ public boolean shoot() {
+ org.bukkit.Location loc = ((org.bukkit.entity.LivingEntity) getBukkitEntity()).getEyeLocation();
+ loc.setPitch(-loc.getPitch());
+ org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(100).add(loc.toVector());
+
+ net.pl3x.purpur.entity.PhantomFlames flames = new net.pl3x.purpur.entity.PhantomFlames(world, this);
+ flames.shoot(target.getX() - locX(), target.getY() - locY(), target.getZ() - locZ(), 1.0F, 5.0F);
+ world.addEntity(flames);
+ return true;
+ }
+ // Purpur end
+
@Override
public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
this.d = (new BlockPosition(this)).up(5);
@@ -215,6 +278,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean a() {
@@ -3146,7 +3175,7 @@ index 90eeddb1af..5ccbc341d2 100644
if (this.c > 0) {
--this.c;
return false;
@@ -244,6 +288,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -244,6 +308,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean b() {
@@ -3154,7 +3183,7 @@ index 90eeddb1af..5ccbc341d2 100644
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false;
@@ -258,6 +303,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -258,6 +323,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean a() {
@@ -3162,7 +3191,7 @@ index 90eeddb1af..5ccbc341d2 100644
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false;
@@ -447,14 +493,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -447,14 +513,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
}
@@ -3188,7 +3217,7 @@ index 90eeddb1af..5ccbc341d2 100644
}
class d extends EntityAIBodyControl {
@@ -470,7 +525,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -470,7 +545,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
}
@@ -3197,7 +3226,7 @@ index 90eeddb1af..5ccbc341d2 100644
private float j = 0.1F;
@@ -479,7 +534,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -479,7 +554,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
@Override
@@ -3357,7 +3386,7 @@ index 0357c9da93..98a657cece 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false));
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index e353d93365..f4fcefc68e 100644
index f44825090f..c8e2b81a1f 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1291,6 +1291,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -5212,10 +5241,10 @@ index 1131d43269..7451b7fc4b 100644
+ // Purpur end
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index eda37fa43f..430e31a2a3 100644
index eda37fa43f..69f99a993d 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -64,4 +64,599 @@ public class PurpurWorldConfig {
@@ -64,4 +64,603 @@ public class PurpurWorldConfig {
PurpurConfig.config.addDefault("world-settings.default." + path, def);
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
}
@@ -5529,11 +5558,15 @@ index eda37fa43f..430e31a2a3 100644
+ public boolean phantomRidableInWater = false;
+ public boolean phantomRequireShiftToMount = true;
+ public double phantomMaxY = 256D;
+ public float phantomFlameDamage = 1.0F;
+ public int phantomFlameFireTime = 8;
+ private void phantomSettings() {
+ phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
+ phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
+ phantomRequireShiftToMount = getBoolean("mobs.phantom.require-shift-to-mount", phantomRequireShiftToMount);
+ phantomMaxY = getDouble("mobs.phantom.ridable-max-y", phantomMaxY);
+ phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage);
+ phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime);
+ }
+
+ public boolean pigRidable = false;
@@ -6288,6 +6321,138 @@ index 0000000000..7189cc569f
+ return new PacketPlayOutSpawnEntity(this);
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
new file mode 100644
index 0000000000..f9e680efd2
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
@@ -0,0 +1,126 @@
+package net.pl3x.purpur.entity;
+
+import net.minecraft.server.DamageSource;
+import net.minecraft.server.Entity;
+import net.minecraft.server.EntityLiving;
+import net.minecraft.server.EntityLlamaSpit;
+import net.minecraft.server.EntityPhantom;
+import net.minecraft.server.EntityTypes;
+import net.minecraft.server.IProjectile;
+import net.minecraft.server.Material;
+import net.minecraft.server.MathHelper;
+import net.minecraft.server.MovingObjectPosition;
+import net.minecraft.server.MovingObjectPositionEntity;
+import net.minecraft.server.NBTTagCompound;
+import net.minecraft.server.Packet;
+import net.minecraft.server.PacketPlayOutSpawnEntity;
+import net.minecraft.server.Particles;
+import net.minecraft.server.ProjectileHelper;
+import net.minecraft.server.RayTrace;
+import net.minecraft.server.Vec3D;
+import net.minecraft.server.World;
+import net.minecraft.server.WorldServer;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+
+public class PhantomFlames extends EntityLlamaSpit implements IProjectile {
+ public EntityLiving phantom;
+ public int ticksLived;
+
+ public PhantomFlames(EntityTypes<? extends EntityLlamaSpit> entitytypes, World world) {
+ super(entitytypes, world);
+ }
+
+ public PhantomFlames(World world, EntityPhantom phantom) {
+ this(EntityTypes.LLAMA_SPIT, world);
+ this.phantom = phantom;
+
+ setPosition(phantom.locX() - (double) (phantom.getWidth() + 1.0F) * 0.5D * (double) MathHelper.sin(phantom.getBodyRotation() * ((float) Math.PI / 180F)), phantom.getHeadY() - (double) 0.1F, phantom.locZ() + (double) (phantom.getWidth() + 1.0F) * 0.5D * (double) MathHelper.cos(phantom.getBodyRotation() * ((float) Math.PI / 180F)));
+ }
+
+ @Override
+ public boolean canSaveToDisk() {
+ return false;
+ }
+
+ @Override
+ public void tick() {
+ setFlag(6, isGlowing());
+ entityBaseTick();
+
+ Vec3D mot = getMot();
+
+ MovingObjectPosition hitResult = ProjectileHelper.getHitResult(this, getBoundingBox().expandTowards(mot).expand(1.0D), (entity) -> !entity.isSpectator() && entity != phantom && entity != phantom.getRider(), RayTrace.BlockCollisionOption.OUTLINE, true);
+ if (hitResult != null) {
+ onHit(hitResult);
+ }
+
+ mot = mot.scale(0.99F);
+ setMot(mot);
+ setPosition(locX() + mot.x, locY() + mot.y, locZ() + mot.z);
+
+ Vec3D m = mot.scale(2.0);
+ for (int i = 0; i < 5; i++) {
+ ((WorldServer) world).sendParticles(null, Particles.FLAME,
+ locX() + random.nextFloat() / 2 - 0.25F,
+ locY() + random.nextFloat() / 2 - 0.25F,
+ locZ() + random.nextFloat() / 2 - 0.25F,
+ 0, m.getX(), m.getY(), m.getZ(), 0.1, true);
+ }
+
+ if (!world.containsMaterial(getBoundingBox(), Material.AIR)) {
+ die();
+ }
+ if (++ticksLived > 20) {
+ die();
+ }
+ }
+
+ @Override
+ public void shoot(double x, double y, double z, float speed, float inaccuracy) {
+ setMot(new Vec3D(x, y, z).normalize().add(
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy,
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy,
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy)
+ .scale(speed));
+ }
+
+ public void onHit(MovingObjectPosition rayTrace) {
+ CraftEventFactory.callProjectileHitEvent(this, rayTrace);
+
+ switch (rayTrace.getType()) {
+ case BLOCK:
+ die();
+ break;
+ case ENTITY:
+ if (phantom != null) {
+ Entity entity = ((MovingObjectPositionEntity) rayTrace).getEntity();
+ entity.damageEntity(DamageSource.indirectMobAttack(this, phantom).setProjectile(), world.purpurConfig.phantomFlameDamage);
+ if (world.purpurConfig.phantomFlameFireTime > 0) {
+ entity.setOnFire(world.purpurConfig.phantomFlameFireTime);
+ }
+ }
+ die();
+ }
+ }
+
+ @Override
+ public void a(MovingObjectPosition movingobjectposition) {
+ }
+
+ @Override
+ protected void initDatawatcher() {
+ }
+
+ @Override
+ protected void a(NBTTagCompound nbttagcompound) {
+ }
+
+ @Override
+ protected void b(NBTTagCompound nbttagcompound) {
+ }
+
+ @Override
+ public Packet<?> L() {
+ return new PacketPlayOutSpawnEntity(this);
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
new file mode 100644
index 0000000000..6e50344c07

View File

@@ -1,4 +1,4 @@
From cc32d1e064dadb7ca0e568c9115411faf97110dd Mon Sep 17 00:00:00 2001
From 86d744e619ded147013c506fcab0423e8542e6ed Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 7 Jul 2019 19:52:16 -0500
Subject: [PATCH] Zombie horse naturally spawn
@@ -9,7 +9,7 @@ Subject: [PATCH] Zombie horse naturally spawn
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 941eee838..56d598186 100644
index c7ec8cbc11..02f711540b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -561,12 +561,18 @@ public class WorldServer extends World {
@@ -38,10 +38,10 @@ index 941eee838..56d598186 100644
this.strikeLightning(new EntityLightning(this, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, flag1), org.bukkit.event.weather.LightningStrikeEvent.Cause.WEATHER); // CraftBukkit
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 9a184f7a2..afae9a626 100644
index 96a66926fc..4c7469b903 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -653,9 +653,11 @@ public class PurpurWorldConfig {
@@ -657,9 +657,11 @@ public class PurpurWorldConfig {
public boolean zombieHorseCanSwim = false;
public boolean zombieHorseRidableInWater = false;

View File

@@ -1,4 +1,4 @@
From c4acb9e5dc63b31bbea9ec78610f310546d93ef5 Mon Sep 17 00:00:00 2001
From 58e34621703befdfff630573a97f05c8f636304a Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 31 Aug 2019 17:47:11 -0500
Subject: [PATCH] Rabbit naturally spawn toast and killer
@@ -9,7 +9,7 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer
2 files changed, 18 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java
index 9040ab1c5..0232226f0 100644
index 9040ab1c54..0232226f06 100644
--- a/src/main/java/net/minecraft/server/EntityRabbit.java
+++ b/src/main/java/net/minecraft/server/EntityRabbit.java
@@ -364,6 +364,10 @@ public class EntityRabbit extends EntityAnimal {
@@ -41,10 +41,10 @@ index 9040ab1c5..0232226f0 100644
int i = this.random.nextInt(100);
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index dada173c8..3cdbbf3d2 100644
index bbae44ddb5..4aaf75fcf4 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -436,10 +436,14 @@ public class PurpurWorldConfig {
@@ -440,10 +440,14 @@ public class PurpurWorldConfig {
public boolean rabbitRidable = false;
public boolean rabbitRidableInWater = false;
public boolean rabbitRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From e53772a5ca22176f9c9b1e3e61dea560f0a17441 Mon Sep 17 00:00:00 2001
From d27bc15e80c2fa9bb8612938a9fb0746a48aa609 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 12 May 2019 01:14:46 -0500
Subject: [PATCH] Pigs give saddle back
@@ -9,7 +9,7 @@ Subject: [PATCH] Pigs give saddle back
2 files changed, 14 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java
index e6a7f8ef3..d78666dbb 100644
index e6a7f8ef37..d78666dbb2 100644
--- a/src/main/java/net/minecraft/server/EntityPig.java
+++ b/src/main/java/net/minecraft/server/EntityPig.java
@@ -135,6 +135,18 @@ public class EntityPig extends EntityAnimal {
@@ -32,10 +32,10 @@ index e6a7f8ef3..d78666dbb 100644
return true;
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 7908bb160..1c0273a04 100644
index 091f30727f..85692500b4 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -409,9 +409,11 @@ public class PurpurWorldConfig {
@@ -413,9 +413,11 @@ public class PurpurWorldConfig {
public boolean pigRidable = false;
public boolean pigRidableInWater = false;

View File

@@ -1,4 +1,4 @@
From ee82731c8f2d909d2632453c52bdef77ba506116 Mon Sep 17 00:00:00 2001
From 87ba5377e08f10cf3874e4acecbd7ead49386c53 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 18 May 2019 16:59:52 -0500
Subject: [PATCH] Phantoms do not spawn on creative players
@@ -9,7 +9,7 @@ Subject: [PATCH] Phantoms do not spawn on creative players
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
index f488c22ed..748983da2 100644
index f488c22ed6..748983da29 100644
--- a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
+++ b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
@@ -31,7 +31,7 @@ public class MobSpawnerPhantom {
@@ -22,19 +22,21 @@ index f488c22ed..748983da2 100644
if (!worldserver.worldProvider.f() || blockposition.getY() >= worldserver.getSeaLevel() && worldserver.f(blockposition)) {
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 1c0273a04..386697f48 100644
index 85692500b4..451cc18b9a 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -400,11 +400,13 @@ public class PurpurWorldConfig {
public boolean phantomRidableInWater = false;
public boolean phantomRequireShiftToMount = true;
@@ -402,6 +402,7 @@ public class PurpurWorldConfig {
public double phantomMaxY = 256D;
public float phantomFlameDamage = 1.0F;
public int phantomFlameFireTime = 8;
+ public boolean phantomIgnoreCreative = false;
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
phantomRequireShiftToMount = getBoolean("mobs.phantom.require-shift-to-mount", phantomRequireShiftToMount);
@@ -409,6 +410,7 @@ public class PurpurWorldConfig {
phantomMaxY = getDouble("mobs.phantom.ridable-max-y", phantomMaxY);
phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage);
phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime);
+ phantomIgnoreCreative = getBoolean("mobs.phantom.do-not-spawn-on-creative-players", phantomIgnoreCreative);
}

View File

@@ -1,4 +1,4 @@
From 25b87a628551b790207e685e9e1e332fbb1c8b37 Mon Sep 17 00:00:00 2001
From 8c7730ed54e2578797421ec8818d507e7f353bb8 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Fri, 29 Nov 2019 20:33:41 -0600
Subject: [PATCH] Phantoms only attack insomniacs
@@ -10,10 +10,10 @@ Subject: [PATCH] Phantoms only attack insomniacs
3 files changed, 4 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index 5ccbc341d..cb5eed878 100644
index c392085d0b..9d331f9ad6 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -276,6 +276,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -296,6 +296,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
EntityHuman entityhuman = (EntityHuman) iterator.next();
if (EntityPhantom.this.a((EntityLiving) entityhuman, PathfinderTargetCondition.a)) {
@@ -22,7 +22,7 @@ index 5ccbc341d..cb5eed878 100644
return true;
}
diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java
index a2d1ef360..e1fdee279 100644
index a2d1ef3602..e1fdee2794 100644
--- a/src/main/java/net/minecraft/server/IEntitySelector.java
+++ b/src/main/java/net/minecraft/server/IEntitySelector.java
@@ -23,6 +23,7 @@ public final class IEntitySelector {
@@ -34,19 +34,20 @@ index a2d1ef360..e1fdee279 100644
public static Predicate<Entity> a(double d0, double d1, double d2, double d3) {
double d4 = d3 * d3;
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 386697f48..a275bb6dc 100644
index 451cc18b9a..12cd819635 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -401,12 +401,14 @@ public class PurpurWorldConfig {
public boolean phantomRequireShiftToMount = true;
public double phantomMaxY = 256D;
@@ -403,6 +403,7 @@ public class PurpurWorldConfig {
public float phantomFlameDamage = 1.0F;
public int phantomFlameFireTime = 8;
public boolean phantomIgnoreCreative = false;
+ public boolean phantomOnlyAttackInsomniacs = false;
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
phantomRequireShiftToMount = getBoolean("mobs.phantom.require-shift-to-mount", phantomRequireShiftToMount);
phantomMaxY = getDouble("mobs.phantom.ridable-max-y", phantomMaxY);
@@ -411,6 +412,7 @@ public class PurpurWorldConfig {
phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage);
phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime);
phantomIgnoreCreative = getBoolean("mobs.phantom.do-not-spawn-on-creative-players", phantomIgnoreCreative);
+ phantomOnlyAttackInsomniacs = getBoolean("mobs.phantom.only-attack-insomniacs", phantomOnlyAttackInsomniacs);
}

View File

@@ -1,4 +1,4 @@
From 5e0f57222d8a2f6426c2f48bd1c297abadfaab4a Mon Sep 17 00:00:00 2001
From b6e691c64ac83821ab032b70d20d0721fc3070c1 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 9 May 2019 18:26:06 -0500
Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
@@ -7,10 +7,10 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
.../net/minecraft/server/DamageSource.java | 1 +
.../java/net/minecraft/server/Entity.java | 8 +-
.../minecraft/server/EntityEnderCrystal.java | 49 +++++
.../net/minecraft/server/EntityPhantom.java | 174 +++++++++++++++++-
.../net/minecraft/server/EntityPhantom.java | 172 +++++++++++++++++-
.../net/minecraft/server/IEntityAccess.java | 1 +
.../net/pl3x/purpur/PurpurWorldConfig.java | 6 +
6 files changed, 228 insertions(+), 11 deletions(-)
6 files changed, 226 insertions(+), 11 deletions(-)
diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java
index f7344d3aec..f6c0165f94 100644
@@ -25,7 +25,7 @@ index f7344d3aec..f6c0165f94 100644
return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic();
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 2035ea763d..dd48d13e0a 100644
index 601d133946..6b95b89e89 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1392,6 +1392,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -123,7 +123,7 @@ index a57d0089d8..02952c3af8 100644
@Override
protected void b(NBTTagCompound nbttagcompound) {
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index cb5eed8785..580c48b34e 100644
index 9d331f9ad6..77b69cd362 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -8,9 +8,10 @@ import javax.annotation.Nullable;
@@ -163,11 +163,10 @@ index cb5eed8785..580c48b34e 100644
}
@Override
@@ -158,6 +165,26 @@ public class EntityPhantom extends EntityFlying implements IMonster {
super.mobTick();
@@ -158,6 +165,24 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
+ // Purpur start
// Purpur start
+ @Override
+ protected LootTableInfo.Builder a(boolean wasRecentlyHit, DamageSource damagesource) { // dropLoot
+ boolean dropped = false;
@@ -185,12 +184,11 @@ index cb5eed8785..580c48b34e 100644
+ public boolean isCirclingCrystal() {
+ return crystalPosition != null;
+ }
+ // Purpur end
+
@Override
public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
this.d = (new BlockPosition(this)).up(5);
@@ -246,6 +273,136 @@ public class EntityPhantom extends EntityFlying implements IMonster {
public boolean onSpacebar() {
if (hasRider() && getRider().getBukkitEntity().hasPermission("allow.special.phantom")) {
@@ -266,6 +291,136 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
// Paper end
@@ -327,7 +325,7 @@ index cb5eed8785..580c48b34e 100644
class b extends PathfinderGoal {
private final PathfinderTargetCondition b;
@@ -259,6 +416,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -279,6 +434,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean a() {
if (getRider() != null) return false; // Purpur - pathfinder does not have a flag
@@ -335,7 +333,7 @@ index cb5eed8785..580c48b34e 100644
if (this.c > 0) {
--this.c;
return false;
@@ -290,6 +448,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -310,6 +466,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean b() {
if (getRider() != null) return false; // Purpur - pathfinder does not have a flag
@@ -343,7 +341,7 @@ index cb5eed8785..580c48b34e 100644
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false;
@@ -305,6 +464,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -325,6 +482,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean a() {
if (getRider() != null) return false; // Purpur - pathfinder does not have a flag
@@ -364,11 +362,11 @@ index 4157e50e4d..774ec96f0a 100644
return this.a(oclass, axisalignedbb, IEntitySelector.f);
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index a275bb6dca..78c49835db 100644
index 12cd819635..e341c492ed 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -402,6 +402,9 @@ public class PurpurWorldConfig {
public double phantomMaxY = 256D;
@@ -404,6 +404,9 @@ public class PurpurWorldConfig {
public int phantomFlameFireTime = 8;
public boolean phantomIgnoreCreative = false;
public boolean phantomOnlyAttackInsomniacs = false;
+ public double phantomAttackedByCrystalRadius = 0.0D;
@@ -377,8 +375,8 @@ index a275bb6dca..78c49835db 100644
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -409,6 +412,9 @@ public class PurpurWorldConfig {
phantomMaxY = getDouble("mobs.phantom.ridable-max-y", phantomMaxY);
@@ -413,6 +416,9 @@ public class PurpurWorldConfig {
phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime);
phantomIgnoreCreative = getBoolean("mobs.phantom.do-not-spawn-on-creative-players", phantomIgnoreCreative);
phantomOnlyAttackInsomniacs = getBoolean("mobs.phantom.only-attack-insomniacs", phantomOnlyAttackInsomniacs);
+ phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);

View File

@@ -1,4 +1,4 @@
From 2b243a31565af55f995ce85563c6be01a3b54b72 Mon Sep 17 00:00:00 2001
From 05b163485832610a992b81a1a7589887ac6eebbe Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 3 May 2019 23:58:44 -0500
Subject: [PATCH] Snowman drop and put back pumpkin
@@ -9,7 +9,7 @@ Subject: [PATCH] Snowman drop and put back pumpkin
2 files changed, 21 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java
index 941873513..efc2205f7 100644
index 941873513f..efc2205f7c 100644
--- a/src/main/java/net/minecraft/server/EntitySnowman.java
+++ b/src/main/java/net/minecraft/server/EntitySnowman.java
@@ -8,6 +8,7 @@ import org.bukkit.event.player.PlayerShearEntityEvent;
@@ -47,10 +47,10 @@ index 941873513..efc2205f7 100644
return tryRide(entityhuman, enumhand); // Purpur
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 78c49835d..db4396418 100644
index e341c492ed..0223c5de9a 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -540,11 +540,15 @@ public class PurpurWorldConfig {
@@ -544,11 +544,15 @@ public class PurpurWorldConfig {
public boolean snowGolemRidableInWater = false;
public boolean snowGolemRequireShiftToMount = true;
public boolean snowGolemLeaveTrailWhenRidden = false;

View File

@@ -1,4 +1,4 @@
From 87d0090bcb1df24dfbbd64bd1b6c9e62c4cf2702 Mon Sep 17 00:00:00 2001
From 2a6f41ff407214c97f6a4bc8370e9157cae5a374 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 9 Jul 2019 20:56:47 -0500
Subject: [PATCH] Fix pig zombies (MC-56653)
@@ -9,7 +9,7 @@ Subject: [PATCH] Fix pig zombies (MC-56653)
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index fb9ef88ea..227fff3f1 100644
index fb9ef88ea3..227fff3f1d 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -155,6 +155,7 @@ public class EntityPigZombie extends EntityZombie {
@@ -43,10 +43,10 @@ index fb9ef88ea..227fff3f1 100644
public PathfinderGoalAnger(EntityPigZombie entitypigzombie) {
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index d11dc5f9f..76a8ac3b8 100644
index 392b826286..a1548fe174 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -781,10 +781,12 @@ public class PurpurWorldConfig {
@@ -785,10 +785,12 @@ public class PurpurWorldConfig {
public boolean zombiePigmanRidable = false;
public boolean zombiePigmanRidableInWater = false;
public boolean zombiePigmanRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From c6c92b0f441e139792c7e6e5a107fcf726792fc7 Mon Sep 17 00:00:00 2001
From 8b255c6b671828a2f0d05d14d607bf79a7710d0f Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Mon, 22 Jul 2019 14:24:26 -0500
Subject: [PATCH] Implement a hard limit for pillager outpost spawns
@@ -9,7 +9,7 @@ Subject: [PATCH] Implement a hard limit for pillager outpost spawns
2 files changed, 3 insertions(+)
diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
index 70f43c515..baca8f705 100644
index 70f43c5159..baca8f7054 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
@@ -143,6 +143,7 @@ public class ChunkProviderGenerate extends ChunkGeneratorAbstract<GeneratorSetti
@@ -21,10 +21,10 @@ index 70f43c515..baca8f705 100644
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 3864fa114..bc21ff1bf 100644
index d90843bc75..a4e23c2073 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -534,10 +534,12 @@ public class PurpurWorldConfig {
@@ -538,10 +538,12 @@ public class PurpurWorldConfig {
public boolean pillagerRidable = false;
public boolean pillagerRidableInWater = false;
public boolean pillagerRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From 399075f2686fdf4167ef2961173a0f859645c789 Mon Sep 17 00:00:00 2001
From 263d652371bd50e3fa16d633e216269224018c75 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 23 Jul 2019 08:28:21 -0500
Subject: [PATCH] Implement configurable villager brain ticks
@@ -9,7 +9,7 @@ Subject: [PATCH] Implement configurable villager brain ticks
2 files changed, 10 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 3eaac031f..65cd5f53c 100644
index 3eaac031fb..65cd5f53c1 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -53,6 +53,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -40,10 +40,10 @@ index 3eaac031f..65cd5f53c 100644
this.world.getMethodProfiler().exit();
if (!this.et() && this.bB > 0) {
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index cbb5f16b0..b09c550e0 100644
index ffc388541d..77b675d3e3 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -742,10 +742,14 @@ public class PurpurWorldConfig {
@@ -746,10 +746,14 @@ public class PurpurWorldConfig {
public boolean villagerRidable = false;
public boolean villagerRidableInWater = false;
public boolean villagerRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From 1f19aa7613e60b048890bb9bea06ec73d5885925 Mon Sep 17 00:00:00 2001
From 8eec926233aafb6ec3054f81522de1facbfa06a2 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 17 Aug 2019 15:27:09 -0500
Subject: [PATCH] Add option for zombies targetting turtle eggs
@@ -9,7 +9,7 @@ Subject: [PATCH] Add option for zombies targetting turtle eggs
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index 8d1f04415..95ae6f349 100644
index 8d1f04415e..95ae6f3494 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -64,7 +64,7 @@ public class EntityZombie extends EntityMonster {
@@ -22,10 +22,10 @@ index 8d1f04415..95ae6f349 100644
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index b09c550e0..ccec59410 100644
index 77b675d3e3..8bc5b2b264 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -811,10 +811,12 @@ public class PurpurWorldConfig {
@@ -815,10 +815,12 @@ public class PurpurWorldConfig {
public boolean zombieRidable = false;
public boolean zombieRidableInWater = false;
public boolean zombieRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From a5f8e742921a2f5bed7ba4b4623eca641f47693d Mon Sep 17 00:00:00 2001
From 6eecb57177cfb0a3c23dea41bafdd58a9317fbe7 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Fri, 29 Nov 2019 22:10:12 -0600
Subject: [PATCH] Villagers follow emerald blocks
@@ -11,7 +11,7 @@ Subject: [PATCH] Villagers follow emerald blocks
4 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 65cd5f53c..b31f614e6 100644
index 65cd5f53c1..b31f614e6b 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -89,6 +89,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -23,7 +23,7 @@ index 65cd5f53c..b31f614e6 100644
// Purpur end
diff --git a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
index ddd19aa2f..44947be83 100644
index ddd19aa2f9..44947be833 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
@@ -13,7 +13,7 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
@@ -36,7 +36,7 @@ index ddd19aa2f..44947be83 100644
private CraftMerchant craftMerchant;
diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
index 4e9c5e84a..14ca5fc36 100644
index 4e9c5e84a9..14ca5fc367 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
@@ -57,6 +57,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
@@ -48,10 +48,10 @@ index 4e9c5e84a..14ca5fc36 100644
this.goalSelector.a(8, new PathfinderGoalRandomStrollLand(this, 0.35D));
this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityHuman.class, 3.0F, 1.0F));
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 74496bf22..de0142f7f 100644
index 66a30a9d4b..f293ebb956 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -780,21 +780,25 @@ public class PurpurWorldConfig {
@@ -784,21 +784,25 @@ public class PurpurWorldConfig {
public boolean villagerRequireShiftToMount = true;
public int villagerBrainTicks = 1;
public boolean villagerUseBrainTicksOnlyWhenLagging = true;

View File

@@ -1,4 +1,4 @@
From e51f995e94eef23aa8499913b05dc78f816320d0 Mon Sep 17 00:00:00 2001
From 66bf264ae452bafd07809857e258d7cae2bebcfd Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 3 Oct 2019 18:08:03 -0500
Subject: [PATCH] Allow leashing villagers
@@ -11,7 +11,7 @@ Subject: [PATCH] Allow leashing villagers
4 files changed, 19 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 66b483194..bac6cea1f 100644
index 66b4831949..bac6cea1ff 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -1062,6 +1062,7 @@ public abstract class EntityInsentient extends EntityLiving {
@@ -23,7 +23,7 @@ index 66b483194..bac6cea1f 100644
if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) {
((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(this, this.getLeashHolder()));
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index b31f614e6..315440b3f 100644
index b31f614e6b..315440b3fb 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -1006,4 +1006,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -39,7 +39,7 @@ index b31f614e6..315440b3f 100644
+ // Purpur - end
}
diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
index 14ca5fc36..427c58907 100644
index 14ca5fc367..427c589075 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
@@ -283,4 +283,11 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
@@ -55,10 +55,10 @@ index 14ca5fc36..427c58907 100644
+ // Purpur - end
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 5bf4535b6..ed41e3326 100644
index ddd6492fac..9a9ffa2a53 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -785,6 +785,7 @@ public class PurpurWorldConfig {
@@ -789,6 +789,7 @@ public class PurpurWorldConfig {
public int villagerBrainTicks = 1;
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
public boolean villagerFollowEmeraldBlock = false;
@@ -66,7 +66,7 @@ index 5bf4535b6..ed41e3326 100644
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -792,17 +793,20 @@ public class PurpurWorldConfig {
@@ -796,17 +797,20 @@ public class PurpurWorldConfig {
villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);

View File

@@ -1,4 +1,4 @@
From bf578a6dc05c52376cf97a45d76790d6cb5a0472 Mon Sep 17 00:00:00 2001
From 10576a80d1a87510951ba860153cf41d34b8f7c6 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Mon, 22 Jul 2019 17:32:17 -0500
Subject: [PATCH] Implement configurable search radius for villagers to spawn
@@ -10,7 +10,7 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn
2 files changed, 5 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 315440b3f..fe0e646ea 100644
index 315440b3fb..fe0e646ea6 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -903,6 +903,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -22,10 +22,10 @@ index 315440b3f..fe0e646ea 100644
int i = 0;
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index ed41e3326..636e10730 100644
index 9a9ffa2a53..b729c81d2e 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -786,6 +786,8 @@ public class PurpurWorldConfig {
@@ -790,6 +790,8 @@ public class PurpurWorldConfig {
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false;
@@ -34,7 +34,7 @@ index ed41e3326..636e10730 100644
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -794,6 +796,8 @@ public class PurpurWorldConfig {
@@ -798,6 +800,8 @@ public class PurpurWorldConfig {
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);

View File

@@ -1,4 +1,4 @@
From 55d771cb7ec7edac6ce7fc484d7624aacdb9cc2d Mon Sep 17 00:00:00 2001
From 09c1575cc476e76ef18220157cc8cb66b1ea6aec Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Tue, 14 Jan 2020 19:43:40 -0600
Subject: [PATCH] Add wither skeleton takes wither damage option
@@ -9,7 +9,7 @@ Subject: [PATCH] Add wither skeleton takes wither damage option
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
index 8aa0a6699..0fd740e71 100644
index 8aa0a6699f..0fd740e717 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
@@ -108,6 +108,6 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract {
@@ -21,10 +21,10 @@ index 8aa0a6699..0fd740e71 100644
}
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index f34b41aad..2acf779b0 100644
index c853f4198c..51937d8449 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -849,10 +849,12 @@ public class PurpurWorldConfig {
@@ -853,10 +853,12 @@ public class PurpurWorldConfig {
public boolean witherSkeletonRidable = false;
public boolean witherSkeletonRidableInWater = false;
public boolean witherSkeletonRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From 6a77e54da05008a1a3eaf7665656f5c408d50510 Mon Sep 17 00:00:00 2001
From 7b2e1b0ba7a37da251aded27df8010a5dc8713b9 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 26 Mar 2020 19:46:44 -0500
Subject: [PATCH] Breedable Polar Bears
@@ -9,7 +9,7 @@ Subject: [PATCH] Breedable Polar Bears
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java
index 0a3906bde..42fef3aba 100644
index 0a3906bde0..42fef3abaa 100644
--- a/src/main/java/net/minecraft/server/EntityPolarBear.java
+++ b/src/main/java/net/minecraft/server/EntityPolarBear.java
@@ -32,6 +32,28 @@ public class EntityPolarBear extends EntityAnimal {
@@ -64,10 +64,10 @@ index 0a3906bde..42fef3aba 100644
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, 1.0D));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index ccdfedb31..6ca47dfaa 100644
index e7bb3bae92..a76ca3d9d8 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -671,10 +671,15 @@ public class PurpurWorldConfig {
@@ -675,10 +675,15 @@ public class PurpurWorldConfig {
public boolean polarBearRidable = false;
public boolean polarBearRidableInWater = false;
public boolean polarBearRequireShiftToMount = true;

View File

@@ -1,4 +1,4 @@
From a15dc515cc9b8cfda7d7d6f5e03308dd35452887 Mon Sep 17 00:00:00 2001
From d458d77cad8e3b646ae184b86b891d07288ae2fb Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 26 Mar 2020 21:39:32 -0500
Subject: [PATCH] Configurable jockey options
@@ -13,7 +13,7 @@ Subject: [PATCH] Configurable jockey options
6 files changed, 112 insertions(+), 7 deletions(-)
diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java
index 63f5969b1..f32950cc9 100644
index 63f5969b10..f32950cc9b 100644
--- a/src/main/java/net/minecraft/server/EntityDrowned.java
+++ b/src/main/java/net/minecraft/server/EntityDrowned.java
@@ -34,6 +34,21 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity {
@@ -39,7 +39,7 @@ index 63f5969b1..f32950cc9 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index 227fff3f1..c78876fc4 100644
index 227fff3f1d..c78876fc42 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -32,6 +32,21 @@ public class EntityPigZombie extends EntityZombie {
@@ -65,7 +65,7 @@ index 227fff3f1..c78876fc4 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index 95ae6f349..e60e4adc1 100644
index 95ae6f3494..e60e4adc1d 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -3,6 +3,7 @@ package net.minecraft.server;
@@ -139,7 +139,7 @@ index 95ae6f349..e60e4adc1 100644
private GroupDataZombie(boolean flag) {
this.a = flag;
diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java
index db252ba4e..e8b099d6c 100644
index db252ba4e0..e8b099d6c8 100644
--- a/src/main/java/net/minecraft/server/EntityZombieHusk.java
+++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java
@@ -23,6 +23,21 @@ public class EntityZombieHusk extends EntityZombie {
@@ -165,7 +165,7 @@ index db252ba4e..e8b099d6c 100644
public static boolean b(EntityTypes<EntityZombieHusk> entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) {
diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java
index ebbfcb75a..8532385d8 100644
index ebbfcb75a4..8532385d8d 100644
--- a/src/main/java/net/minecraft/server/EntityZombieVillager.java
+++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java
@@ -40,6 +40,21 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
@@ -191,7 +191,7 @@ index ebbfcb75a..8532385d8 100644
@Override
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 6ca47dfaa..15ec90967 100644
index a76ca3d9d8..ee71312def 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -410,10 +410,16 @@ public class PurpurWorldConfig {
@@ -228,7 +228,7 @@ index 6ca47dfaa..15ec90967 100644
}
public boolean horseRidableInWater = false;
@@ -932,11 +944,17 @@ public class PurpurWorldConfig {
@@ -936,11 +948,17 @@ public class PurpurWorldConfig {
public boolean zombieRidableInWater = false;
public boolean zombieRequireShiftToMount = true;
public boolean zombieTargetTurtleEggs = true;
@@ -246,7 +246,7 @@ index 6ca47dfaa..15ec90967 100644
}
public boolean zombieHorseCanSwim = false;
@@ -952,19 +970,31 @@ public class PurpurWorldConfig {
@@ -956,19 +974,31 @@ public class PurpurWorldConfig {
public boolean zombiePigmanRidableInWater = false;
public boolean zombiePigmanRequireShiftToMount = true;
public boolean zombiePigmanDontTargetUnlessHit = false;

View File

@@ -1,210 +0,0 @@
From 135cc7eb7d220a35aa51f1c8007d482c941fa12c Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Fri, 3 Apr 2020 23:13:23 -0500
Subject: [PATCH] test
---
.../net/minecraft/server/EntityPhantom.java | 22 ++-
.../net/pl3x/purpur/PurpurWorldConfig.java | 4 +
.../net/pl3x/purpur/entity/PhantomFlames.java | 126 ++++++++++++++++++
3 files changed, 150 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index 580c48b34e..77b69cd362 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -84,9 +84,8 @@ public class EntityPhantom extends EntityFlying implements IMonster {
this.getAttributeMap().b(GenericAttributes.ATTACK_DAMAGE);
// Purpur start
if (world != null && world.purpurConfig.phantomRidable) {
- this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.01D);
this.getAttributeMap().b(GenericAttributes.FLYING_SPEED);
- this.getAttributeInstance(GenericAttributes.FLYING_SPEED).setValue(0.6000000238418579D);
+ this.getAttributeInstance(GenericAttributes.FLYING_SPEED).setValue(3.0D);
}
// Purpur end
}
@@ -183,6 +182,25 @@ public class EntityPhantom extends EntityFlying implements IMonster {
public boolean isCirclingCrystal() {
return crystalPosition != null;
}
+
+ @Override
+ public boolean onSpacebar() {
+ if (hasRider() && getRider().getBukkitEntity().hasPermission("allow.special.phantom")) {
+ shoot();
+ }
+ return false;
+ }
+
+ public boolean shoot() {
+ org.bukkit.Location loc = ((org.bukkit.entity.LivingEntity) getBukkitEntity()).getEyeLocation();
+ loc.setPitch(-loc.getPitch());
+ org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(100).add(loc.toVector());
+
+ net.pl3x.purpur.entity.PhantomFlames flames = new net.pl3x.purpur.entity.PhantomFlames(world, this);
+ flames.shoot(target.getX() - locX(), target.getY() - locY(), target.getZ() - locZ(), 1.0F, 5.0F);
+ world.addEntity(flames);
+ return true;
+ }
// Purpur end
@Override
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 6446ee7d79..6123abaed6 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -682,6 +682,8 @@ public class PurpurWorldConfig {
public double phantomAttackedByCrystalRadius = 0.0D;
public float phantomAttackedByCrystalDamage = 1.0F;
public double phantomOrbitCrystalRadius = 0.0D;
+ public float phantomFlameDamage = 1.0F;
+ public int phantomFlameFireTime = 8;
private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -692,6 +694,8 @@ public class PurpurWorldConfig {
phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);
phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius);
+ phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage);
+ phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime);
}
public boolean pigRidable = false;
diff --git a/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
new file mode 100644
index 0000000000..f9e680efd2
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
@@ -0,0 +1,126 @@
+package net.pl3x.purpur.entity;
+
+import net.minecraft.server.DamageSource;
+import net.minecraft.server.Entity;
+import net.minecraft.server.EntityLiving;
+import net.minecraft.server.EntityLlamaSpit;
+import net.minecraft.server.EntityPhantom;
+import net.minecraft.server.EntityTypes;
+import net.minecraft.server.IProjectile;
+import net.minecraft.server.Material;
+import net.minecraft.server.MathHelper;
+import net.minecraft.server.MovingObjectPosition;
+import net.minecraft.server.MovingObjectPositionEntity;
+import net.minecraft.server.NBTTagCompound;
+import net.minecraft.server.Packet;
+import net.minecraft.server.PacketPlayOutSpawnEntity;
+import net.minecraft.server.Particles;
+import net.minecraft.server.ProjectileHelper;
+import net.minecraft.server.RayTrace;
+import net.minecraft.server.Vec3D;
+import net.minecraft.server.World;
+import net.minecraft.server.WorldServer;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+
+public class PhantomFlames extends EntityLlamaSpit implements IProjectile {
+ public EntityLiving phantom;
+ public int ticksLived;
+
+ public PhantomFlames(EntityTypes<? extends EntityLlamaSpit> entitytypes, World world) {
+ super(entitytypes, world);
+ }
+
+ public PhantomFlames(World world, EntityPhantom phantom) {
+ this(EntityTypes.LLAMA_SPIT, world);
+ this.phantom = phantom;
+
+ setPosition(phantom.locX() - (double) (phantom.getWidth() + 1.0F) * 0.5D * (double) MathHelper.sin(phantom.getBodyRotation() * ((float) Math.PI / 180F)), phantom.getHeadY() - (double) 0.1F, phantom.locZ() + (double) (phantom.getWidth() + 1.0F) * 0.5D * (double) MathHelper.cos(phantom.getBodyRotation() * ((float) Math.PI / 180F)));
+ }
+
+ @Override
+ public boolean canSaveToDisk() {
+ return false;
+ }
+
+ @Override
+ public void tick() {
+ setFlag(6, isGlowing());
+ entityBaseTick();
+
+ Vec3D mot = getMot();
+
+ MovingObjectPosition hitResult = ProjectileHelper.getHitResult(this, getBoundingBox().expandTowards(mot).expand(1.0D), (entity) -> !entity.isSpectator() && entity != phantom && entity != phantom.getRider(), RayTrace.BlockCollisionOption.OUTLINE, true);
+ if (hitResult != null) {
+ onHit(hitResult);
+ }
+
+ mot = mot.scale(0.99F);
+ setMot(mot);
+ setPosition(locX() + mot.x, locY() + mot.y, locZ() + mot.z);
+
+ Vec3D m = mot.scale(2.0);
+ for (int i = 0; i < 5; i++) {
+ ((WorldServer) world).sendParticles(null, Particles.FLAME,
+ locX() + random.nextFloat() / 2 - 0.25F,
+ locY() + random.nextFloat() / 2 - 0.25F,
+ locZ() + random.nextFloat() / 2 - 0.25F,
+ 0, m.getX(), m.getY(), m.getZ(), 0.1, true);
+ }
+
+ if (!world.containsMaterial(getBoundingBox(), Material.AIR)) {
+ die();
+ }
+ if (++ticksLived > 20) {
+ die();
+ }
+ }
+
+ @Override
+ public void shoot(double x, double y, double z, float speed, float inaccuracy) {
+ setMot(new Vec3D(x, y, z).normalize().add(
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy,
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy,
+ random.nextGaussian() * (double) 0.0075F * (double) inaccuracy)
+ .scale(speed));
+ }
+
+ public void onHit(MovingObjectPosition rayTrace) {
+ CraftEventFactory.callProjectileHitEvent(this, rayTrace);
+
+ switch (rayTrace.getType()) {
+ case BLOCK:
+ die();
+ break;
+ case ENTITY:
+ if (phantom != null) {
+ Entity entity = ((MovingObjectPositionEntity) rayTrace).getEntity();
+ entity.damageEntity(DamageSource.indirectMobAttack(this, phantom).setProjectile(), world.purpurConfig.phantomFlameDamage);
+ if (world.purpurConfig.phantomFlameFireTime > 0) {
+ entity.setOnFire(world.purpurConfig.phantomFlameFireTime);
+ }
+ }
+ die();
+ }
+ }
+
+ @Override
+ public void a(MovingObjectPosition movingobjectposition) {
+ }
+
+ @Override
+ protected void initDatawatcher() {
+ }
+
+ @Override
+ protected void a(NBTTagCompound nbttagcompound) {
+ }
+
+ @Override
+ protected void b(NBTTagCompound nbttagcompound) {
+ }
+
+ @Override
+ public Packet<?> L() {
+ return new PacketPlayOutSpawnEntity(this);
+ }
+}
--
2.24.0