mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 17:37:42 +01:00
Fix compilation issues (#1530)
This commit is contained in:
@@ -1,101 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: MelnCat <melncatuwu@gmail.com>
|
||||
Date: Sat, 1 Oct 2022 11:33:15 -0700
|
||||
Subject: [PATCH] Add an option to fix MC-3304 (projectile looting)
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
index 342eaa0e3b053e9b39dc58fa92cd18cac446a844..06f7bc4d8d6679d6625a8d392777722fc97739ba 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
@@ -77,6 +77,7 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@Nullable
|
||||
private List<Entity> piercedAndKilledEntities;
|
||||
public ItemStack pickupItemStack;
|
||||
+ public int lootingLevel; // Purpur
|
||||
|
||||
// Spigot Start
|
||||
@Override
|
||||
@@ -655,6 +656,12 @@ public abstract class AbstractArrow extends Projectile {
|
||||
this.knockback = punch;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ public void setLootingLevel(int looting) {
|
||||
+ this.lootingLevel = looting;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
public int getKnockback() {
|
||||
return this.knockback;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
index d27e83c08c45b8514207f26e48ceb1a91ded94be..8f01772a7b06b2acf96a3f922cb9b481f634680b 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
@@ -131,6 +131,14 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
entityarrow.setPierceLevel((byte) k);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.LOOTING, weaponStack);
|
||||
+
|
||||
+ if (lootingLevel > 0) {
|
||||
+ entityarrow.setLootingLevel(lootingLevel);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
return entityarrow;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
index 85dc79b9b969fa0cbf6964cb26bac139fa55710a..905a020dd7b365d51d5addadbbeb9555d03c5238 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
@@ -81,6 +81,14 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, stack);
|
||||
+
|
||||
+ if (lootingLevel > 0) {
|
||||
+ entitythrowntrident.setLootingLevel(lootingLevel);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
// CraftBukkit start
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity());
|
||||
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java
|
||||
index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696bdd73bf8 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java
|
||||
@@ -57,6 +57,13 @@ public class LootingEnchantFunction extends LootItemConditionalFunction {
|
||||
|
||||
if (entity instanceof LivingEntity) {
|
||||
int i = EnchantmentHelper.getMobLooting((LivingEntity) entity);
|
||||
+ // Purpur start
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.fixProjectileLootingTransfer &&
|
||||
+ context.getParamOrNull(LootContextParams.DIRECT_KILLER_ENTITY)
|
||||
+ instanceof net.minecraft.world.entity.projectile.AbstractArrow arrow) {
|
||||
+ i = arrow.lootingLevel;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - use lootingModifier if set by plugin
|
||||
if (context.hasParam(LootContextParams.LOOTING_MOD)) {
|
||||
i = context.getParamOrNull(LootContextParams.LOOTING_MOD);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 62612451c23bb146e82f4082ca8677e5dc57a08f..3b3d5bd9e645f440e033abd3c234a017972efa59 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -497,4 +497,9 @@ public class PurpurConfig {
|
||||
String setPattern = getString("settings.username-valid-characters", defaultPattern);
|
||||
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
|
||||
}
|
||||
+
|
||||
+ public static boolean fixProjectileLootingTransfer = false;
|
||||
+ private static void fixProjectileLootingTransfer() {
|
||||
+ fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer);
|
||||
+ }
|
||||
}
|
||||
Reference in New Issue
Block a user