mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Add enderman and creeper griefing controls
This commit is contained in:
committed by
granny
parent
97698faa02
commit
0ceb264a14
@@ -1,75 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Sun, 26 Apr 2020 16:28:38 -0500
|
|
||||||
Subject: [PATCH] Add enderman and creeper griefing controls
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
|
|
||||||
index d67136ccf5e23accb656f2532e2ced93669f2a8d..4711f5e5d9f1738d739be68f586f744eba8621c9 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/Creeper.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/Creeper.java
|
|
||||||
@@ -365,7 +365,7 @@ public class Creeper extends Monster {
|
|
||||||
if (!event.isCancelled()) {
|
|
||||||
// CraftBukkit end
|
|
||||||
this.dead = true;
|
|
||||||
- worldserver.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this)
|
|
||||||
+ worldserver.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), worldserver.getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur - Add enderman and creeper griefing controls
|
|
||||||
this.spawnLingeringCloud();
|
|
||||||
this.triggerOnDeathMobEffects(worldserver, Entity.RemovalReason.KILLED);
|
|
||||||
this.discard(EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
|
|
||||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
index 9f7261bd22803f0b094e2bfd4a0eb66ad727211e..13eaf1e8b12c3b4cba6b202f2d31e99a8a9bae92 100644
|
|
||||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
|
||||||
@@ -514,6 +514,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canUse() {
|
|
||||||
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
|
||||||
return this.enderman.getCarriedBlock() == null ? false : (!getServerLevel((Entity) this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -559,6 +560,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canUse() {
|
|
||||||
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
|
||||||
return this.enderman.getCarriedBlock() != null ? false : (!getServerLevel((Entity) this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index bdf391eda89bc061353c0fd72ab5a9c5fe85e55e..b33ab2fc455c212284ef50cfecc778000741ead5 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -500,6 +500,7 @@ public class PurpurWorldConfig {
|
|
||||||
public double creeperMaxHealth = 20.0D;
|
|
||||||
public double creeperScale = 1.0D;
|
|
||||||
public double creeperChargedChance = 0.0D;
|
|
||||||
+ public boolean creeperAllowGriefing = true;
|
|
||||||
private void creeperSettings() {
|
|
||||||
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
|
||||||
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
|
||||||
@@ -512,6 +513,7 @@ public class PurpurWorldConfig {
|
|
||||||
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
|
|
||||||
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
|
|
||||||
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
|
||||||
+ creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean dolphinRidable = false;
|
|
||||||
@@ -625,6 +627,7 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean endermanControllable = true;
|
|
||||||
public double endermanMaxHealth = 40.0D;
|
|
||||||
public double endermanScale = 1.0D;
|
|
||||||
+ public boolean endermanAllowGriefing = true;
|
|
||||||
private void endermanSettings() {
|
|
||||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
|
||||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
|
||||||
@@ -636,6 +639,7 @@ public class PurpurWorldConfig {
|
|
||||||
}
|
|
||||||
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
|
||||||
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
|
|
||||||
+ endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean endermiteRidable = false;
|
|
||||||
@@ -17,3 +17,12 @@
|
|||||||
@Override
|
@Override
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSource) {
|
protected SoundEvent getHurtSound(DamageSource damageSource) {
|
||||||
return SoundEvents.CREEPER_HURT;
|
return SoundEvents.CREEPER_HURT;
|
||||||
|
@@ -250,7 +_,7 @@
|
||||||
|
if (!event.isCancelled()) {
|
||||||
|
// CraftBukkit end
|
||||||
|
this.dead = true;
|
||||||
|
- serverLevel.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this)
|
||||||
|
+ serverLevel.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), serverLevel.getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur - Add enderman and creeper griefing controls
|
||||||
|
this.spawnLingeringCloud();
|
||||||
|
this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED);
|
||||||
|
this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||||
|
@@ -484,6 +_,7 @@
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canUse() {
|
||||||
|
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
||||||
|
return this.enderman.getCarriedBlock() != null
|
||||||
|
&& getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)
|
||||||
|
&& this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0;
|
||||||
|
@@ -633,6 +_,7 @@
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canUse() {
|
||||||
|
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
||||||
|
return this.enderman.getCarriedBlock() == null
|
||||||
|
&& getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)
|
||||||
|
&& this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0;
|
||||||
@@ -488,6 +488,7 @@ public class PurpurWorldConfig {
|
|||||||
public double creeperMaxHealth = 20.0D;
|
public double creeperMaxHealth = 20.0D;
|
||||||
public double creeperScale = 1.0D;
|
public double creeperScale = 1.0D;
|
||||||
public double creeperChargedChance = 0.0D;
|
public double creeperChargedChance = 0.0D;
|
||||||
|
public boolean creeperAllowGriefing = true;
|
||||||
private void creeperSettings() {
|
private void creeperSettings() {
|
||||||
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
||||||
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
||||||
@@ -500,6 +501,7 @@ public class PurpurWorldConfig {
|
|||||||
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
|
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
|
||||||
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
|
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
|
||||||
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
||||||
|
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean dolphinRidable = false;
|
public boolean dolphinRidable = false;
|
||||||
@@ -613,6 +615,7 @@ public class PurpurWorldConfig {
|
|||||||
public boolean endermanControllable = true;
|
public boolean endermanControllable = true;
|
||||||
public double endermanMaxHealth = 40.0D;
|
public double endermanMaxHealth = 40.0D;
|
||||||
public double endermanScale = 1.0D;
|
public double endermanScale = 1.0D;
|
||||||
|
public boolean endermanAllowGriefing = true;
|
||||||
private void endermanSettings() {
|
private void endermanSettings() {
|
||||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||||
@@ -624,6 +627,7 @@ public class PurpurWorldConfig {
|
|||||||
}
|
}
|
||||||
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
||||||
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
|
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
|
||||||
|
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean endermiteRidable = false;
|
public boolean endermiteRidable = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user