Files
Purpur/patches/server/0007-Snowman-set-pumpkin-on-off-by-player-interaction.patch
William Blake Galbreath 02e31ae620 Implement metrics
2019-07-11 21:43:54 -05:00

74 lines
3.7 KiB
Diff

From f35349a7b5b61f0bf0f18310d6272b9877ddf1d8 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 set pumpkin on/off by player interaction
---
.../net/minecraft/server/EntitySnowman.java | 19 ++++++++++++++++++-
.../java/net/pl3x/purpur/PurpurConfig.java | 7 +++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java
index fe1381cc1..1fed1d6e7 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;
public class EntitySnowman extends EntityGolem implements IRangedEntity {
+ private static final RecipeItemStack PUMPKIN = RecipeItemStack.a(Blocks.PUMPKIN.getItem(), Blocks.CARVED_PUMPKIN.getItem(), Blocks.JACK_O_LANTERN.getItem()); // Purpur
private static final DataWatcherObject<Byte> b = DataWatcher.a(EntitySnowman.class, DataWatcherRegistry.a);
public EntitySnowman(EntityTypes<? extends EntitySnowman> entitytypes, World world) {
@@ -112,7 +113,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
protected boolean a(EntityHuman entityhuman, EnumHand enumhand) {
ItemStack itemstack = entityhuman.b(enumhand);
- if (itemstack.getItem() == Items.SHEARS && this.hasPumpkin() && !this.world.isClientSide) {
+ if (this.hasPumpkin()) { if (itemstack.getItem() == Items.SHEARS) { // Purpur
// CraftBukkit start
PlayerShearEntityEvent event = new PlayerShearEntityEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), this.getBukkitEntity());
this.world.getServer().getPluginManager().callEvent(event);
@@ -126,6 +127,22 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
itemstack.damage(1, entityhuman, (entityhuman1) -> {
entityhuman1.d(enumhand);
});
+
+ // Purpur start
+ if (net.pl3x.purpur.PurpurConfig.snowmanDropsPumpkin) {
+ EntityItem pumpkin = new EntityItem(world, locX, locY, locZ, new ItemStack(Blocks.PUMPKIN.getItem()));
+ pumpkin.pickupDelay = 10;
+ world.addEntity(pumpkin);
+ }
+ return true;
+ }} else {
+ if (net.pl3x.purpur.PurpurConfig.snowmanPumpkinPutBack && PUMPKIN.test(itemstack)) {
+ setHasPumpkin(true);
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
+ }
+ return true;
+ }
}
return super.a(entityhuman, enumhand);
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index d433eca03..7faa0c6ac 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -135,4 +135,11 @@ public class PurpurConfig {
private static void cowsSettings() {
feedMushroomsToCows = getInt("settings.mobs.cow.feed-mushrooms-for-mooshroom", feedMushroomsToCows);
}
+
+ public static boolean snowmanDropsPumpkin = true;
+ public static boolean snowmanPumpkinPutBack = true;
+ private static void snowmansSettings() {
+ snowmanDropsPumpkin = getBoolean("settings.mobs.snow_golem.drops-pumpkin-when-sheared", snowmanDropsPumpkin);
+ snowmanPumpkinPutBack = getBoolean("settings.mobs.snow_golem.pumpkin-can-be-added-back", snowmanPumpkinPutBack);
+ }
}
--
2.20.1