mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Projectile offset config
This commit is contained in:
@@ -1,125 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: YouHaveTrouble <garrenpolska@gmail.com>
|
|
||||||
Date: Thu, 25 Mar 2021 01:56:38 +0100
|
|
||||||
Subject: [PATCH] Projectile offset config
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java
|
|
||||||
index 1d4d0799a86b9940b5e3b614c5a188ade5133f7e..58fa528e4b2589d362eb976afd6221cd94f2623c 100644
|
|
||||||
--- a/net/minecraft/world/item/BowItem.java
|
|
||||||
+++ b/net/minecraft/world/item/BowItem.java
|
|
||||||
@@ -43,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem {
|
|
||||||
} else {
|
|
||||||
List<ItemStack> list = draw(stack, itemStack, player);
|
|
||||||
if (world instanceof ServerLevel serverLevel && !list.isEmpty()) {
|
|
||||||
- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null);
|
|
||||||
+ this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, f * 3.0F, (float) world.purpurConfig.bowProjectileOffset, f == 1.0F, null); // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
world.playSound(
|
|
||||||
diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java
|
|
||||||
index be1902a307a54434644b242b429ad47c271d2a0c..cac4de9877b91bd805a5a8f4b84d27449fc5001f 100644
|
|
||||||
--- a/net/minecraft/world/item/CrossbowItem.java
|
|
||||||
+++ b/net/minecraft/world/item/CrossbowItem.java
|
|
||||||
@@ -70,7 +70,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
|
|
||||||
ItemStack itemStack = user.getItemInHand(hand);
|
|
||||||
ChargedProjectiles chargedProjectiles = itemStack.get(DataComponents.CHARGED_PROJECTILES);
|
|
||||||
if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
|
|
||||||
- this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), 1.0F, null);
|
|
||||||
+ this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), (float) world.purpurConfig.crossbowProjectileOffset, null); // Purpur
|
|
||||||
return InteractionResult.CONSUME;
|
|
||||||
} else if (!user.getProjectile(itemStack).isEmpty()) {
|
|
||||||
this.startSoundPlayed = false;
|
|
||||||
diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java
|
|
||||||
index 6d559fef484036194e4d899b82aaa7b5d518311e..9fb04b4e5b61ea497238e042fefa9a06f7489618 100644
|
|
||||||
--- a/net/minecraft/world/item/EggItem.java
|
|
||||||
+++ b/net/minecraft/world/item/EggItem.java
|
|
||||||
@@ -29,7 +29,7 @@ public class EggItem extends Item implements ProjectileItem {
|
|
||||||
if (world instanceof ServerLevel worldserver) {
|
|
||||||
// CraftBukkit start
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
- final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
|
||||||
+ final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, (float) worldserver.purpurConfig.eggProjectileOffset); // Purpur
|
|
||||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity());
|
|
||||||
if (event.callEvent() && thrownEgg.attemptSpawn()) {
|
|
||||||
if (event.shouldConsume()) {
|
|
||||||
diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
index 83bd9b1eff5b7f581c3f0af6f0f15bdf4b9de201..392f2600e4fb1ff937c3ec5635156b358eb36888 100644
|
|
||||||
--- a/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
+++ b/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
@@ -26,7 +26,7 @@ public class EnderpearlItem extends Item {
|
|
||||||
if (world instanceof ServerLevel worldserver) {
|
|
||||||
// CraftBukkit start
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
- final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
|
||||||
+ final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, (float) worldserver.purpurConfig.enderPearlProjectileOffset); // Purpur
|
|
||||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity());
|
|
||||||
if (event.callEvent() && thrownEnderpearl.attemptSpawn()) {
|
|
||||||
if (event.shouldConsume()) {
|
|
||||||
diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java
|
|
||||||
index d3bba4665ae14cc279c0f937831f909f8831b12b..27499f01ef0bc89c4c3f60eb696ca07cc5984809 100644
|
|
||||||
--- a/net/minecraft/world/item/SnowballItem.java
|
|
||||||
+++ b/net/minecraft/world/item/SnowballItem.java
|
|
||||||
@@ -29,7 +29,7 @@ public class SnowballItem extends Item implements ProjectileItem {
|
|
||||||
// world.playSound((EntityHuman) null, entityhuman.getX(), entityhuman.getY(), entityhuman.getZ(), SoundEffects.SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
|
|
||||||
if (world instanceof ServerLevel worldserver) {
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
- final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
|
||||||
+ final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, (float) worldserver.purpurConfig.snowballProjectileOffset); // Purpur
|
|
||||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) snowball.projectile().getBukkitEntity());
|
|
||||||
if (event.callEvent() && snowball.attemptSpawn()) {
|
|
||||||
user.awardStat(Stats.ITEM_USED.get(this));
|
|
||||||
diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java
|
|
||||||
index e422881d1ab0f1a5bb2cb741d23089a2e35de2d4..bbd65d35d91d4f3ffabeb355b82f22ddde0f868b 100644
|
|
||||||
--- a/net/minecraft/world/item/ThrowablePotionItem.java
|
|
||||||
+++ b/net/minecraft/world/item/ThrowablePotionItem.java
|
|
||||||
@@ -23,7 +23,7 @@ public class ThrowablePotionItem extends PotionItem implements ProjectileItem {
|
|
||||||
ItemStack itemStack = user.getItemInHand(hand);
|
|
||||||
if (world instanceof ServerLevel serverLevel) {
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
- final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F);
|
|
||||||
+ final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.throwablePotionProjectileOffset); // Purpur
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.projectile().getBukkitEntity());
|
|
||||||
if (event.callEvent() && thrownPotion.attemptSpawn()) {
|
|
||||||
diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java
|
|
||||||
index aff4f33be216f62d6c6e139dcd7fd82efdbd267c..810082126567eb02bec395065b95b3c3902d4973 100644
|
|
||||||
--- a/net/minecraft/world/item/TridentItem.java
|
|
||||||
+++ b/net/minecraft/world/item/TridentItem.java
|
|
||||||
@@ -89,7 +89,7 @@ public class TridentItem extends Item implements ProjectileItem {
|
|
||||||
// itemstack.hurtWithoutBreaking(1, entityhuman); // CraftBukkit - moved down
|
|
||||||
if (f == 0.0F) {
|
|
||||||
// Paper start - PlayerLaunchProjectileEvent
|
|
||||||
- Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed(ThrownTrident::new, worldserver, stack, entityhuman, 0.0F, 2.5F, 1.0F);
|
|
||||||
+ Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed(ThrownTrident::new, worldserver, stack, entityhuman, 0.0F, 2.5F, (float) worldserver.purpurConfig.tridentProjectileOffset); // Purpur
|
|
||||||
// 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) tridentDelayed.projectile().getBukkitEntity());
|
|
||||||
if (!event.callEvent() || !tridentDelayed.attemptSpawn()) {
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index 1b1c6e20acef4e2dda93cbc89ae1d527d76e81ce..c6d39361fe5f02de3119e2d2bfc603e096c03160 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -416,6 +416,23 @@ public class PurpurWorldConfig {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public double bowProjectileOffset = 1.0D;
|
|
||||||
+ public double crossbowProjectileOffset = 1.0D;
|
|
||||||
+ public double eggProjectileOffset = 1.0D;
|
|
||||||
+ public double enderPearlProjectileOffset = 1.0D;
|
|
||||||
+ public double throwablePotionProjectileOffset = 1.0D;
|
|
||||||
+ public double tridentProjectileOffset = 1.0D;
|
|
||||||
+ public double snowballProjectileOffset = 1.0D;
|
|
||||||
+ private void projectileOffsetSettings() {
|
|
||||||
+ bowProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.bow", bowProjectileOffset);
|
|
||||||
+ crossbowProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.crossbow", crossbowProjectileOffset);
|
|
||||||
+ eggProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.egg", eggProjectileOffset);
|
|
||||||
+ enderPearlProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.ender-pearl", enderPearlProjectileOffset);
|
|
||||||
+ throwablePotionProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.throwable-potion", throwablePotionProjectileOffset);
|
|
||||||
+ tridentProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.trident", tridentProjectileOffset);
|
|
||||||
+ snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
public int snowballDamage = -1;
|
|
||||||
private void snowballSettings() {
|
|
||||||
snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage);
|
|
||||||
@@ -12,6 +12,15 @@
|
|||||||
if (projectile.isEmpty()) {
|
if (projectile.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -38,7 +_,7 @@
|
||||||
|
} else {
|
||||||
|
List<ItemStack> list = draw(stack, projectile, player);
|
||||||
|
if (level instanceof ServerLevel serverLevel && !list.isEmpty()) {
|
||||||
|
- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, 1.0F, powerForTime == 1.0F, null);
|
||||||
|
+ this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null); // Purpur - Projectile offset config
|
||||||
|
}
|
||||||
|
|
||||||
|
level.playSound(
|
||||||
@@ -89,7 +_,7 @@
|
@@ -89,7 +_,7 @@
|
||||||
public InteractionResult use(Level level, Player player, InteractionHand hand) {
|
public InteractionResult use(Level level, Player player, InteractionHand hand) {
|
||||||
ItemStack itemInHand = player.getItemInHand(hand);
|
ItemStack itemInHand = player.getItemInHand(hand);
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/item/CrossbowItem.java
|
||||||
|
+++ b/net/minecraft/world/item/CrossbowItem.java
|
||||||
|
@@ -70,7 +_,7 @@
|
||||||
|
ItemStack itemInHand = player.getItemInHand(hand);
|
||||||
|
ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES);
|
||||||
|
if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
|
||||||
|
- this.performShooting(level, player, hand, itemInHand, getShootingPower(chargedProjectiles), 1.0F, null);
|
||||||
|
+ this.performShooting(level, player, hand, itemInHand, getShootingPower(chargedProjectiles), (float) level.purpurConfig.crossbowProjectileOffset, null); // Purpur - Projectile offset config
|
||||||
|
return InteractionResult.CONSUME;
|
||||||
|
} else if (!player.getProjectile(itemInHand).isEmpty()) {
|
||||||
|
this.startSoundPlayed = false;
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/item/EggItem.java
|
||||||
|
+++ b/net/minecraft/world/item/EggItem.java
|
||||||
|
@@ -26,7 +_,7 @@
|
||||||
|
if (level instanceof ServerLevel serverLevel) {
|
||||||
|
// CraftBukkit start
|
||||||
|
// Paper start - PlayerLaunchProjectileEvent
|
||||||
|
- final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, serverLevel, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
||||||
|
+ final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, serverLevel, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.eggProjectileOffset); // Purpur - Projectile offset config
|
||||||
|
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity());
|
||||||
|
if (event.callEvent() && thrownEgg.attemptSpawn()) {
|
||||||
|
if (event.shouldConsume()) {
|
||||||
@@ -1,5 +1,14 @@
|
|||||||
--- a/net/minecraft/world/item/EnderpearlItem.java
|
--- a/net/minecraft/world/item/EnderpearlItem.java
|
||||||
+++ b/net/minecraft/world/item/EnderpearlItem.java
|
+++ b/net/minecraft/world/item/EnderpearlItem.java
|
||||||
|
@@ -24,7 +_,7 @@
|
||||||
|
if (level instanceof ServerLevel serverLevel) {
|
||||||
|
// CraftBukkit start
|
||||||
|
// Paper start - PlayerLaunchProjectileEvent
|
||||||
|
- final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, serverLevel, itemInHand, player, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
||||||
|
+ final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, serverLevel, itemInHand, player, 0.0F, EnderpearlItem.PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.enderPearlProjectileOffset); // Purpur - Projectile offset config
|
||||||
|
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity());
|
||||||
|
if (event.callEvent() && thrownEnderpearl.attemptSpawn()) {
|
||||||
|
if (event.shouldConsume()) {
|
||||||
@@ -44,6 +_,7 @@
|
@@ -44,6 +_,7 @@
|
||||||
0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F)
|
0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/item/SnowballItem.java
|
||||||
|
+++ b/net/minecraft/world/item/SnowballItem.java
|
||||||
|
@@ -26,7 +_,7 @@
|
||||||
|
// CraftBukkit start - moved down
|
||||||
|
if (level instanceof ServerLevel serverLevel) {
|
||||||
|
// Paper start - PlayerLaunchProjectileEvent
|
||||||
|
- final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, serverLevel, itemInHand, player, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, 1.0F);
|
||||||
|
+ final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, serverLevel, itemInHand, player, 0.0F, SnowballItem.PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.snowballProjectileOffset); // Purpur - Projectile offset config
|
||||||
|
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) snowball.projectile().getBukkitEntity());
|
||||||
|
if (event.callEvent() && snowball.attemptSpawn()) {
|
||||||
|
player.awardStat(Stats.ITEM_USED.get(this));
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/item/ThrowablePotionItem.java
|
||||||
|
+++ b/net/minecraft/world/item/ThrowablePotionItem.java
|
||||||
|
@@ -23,7 +_,7 @@
|
||||||
|
ItemStack itemInHand = player.getItemInHand(hand);
|
||||||
|
if (level instanceof ServerLevel serverLevel) {
|
||||||
|
// Paper start - PlayerLaunchProjectileEvent
|
||||||
|
- final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F);
|
||||||
|
+ final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.throwablePotionProjectileOffset); // Purpur - Projectile offset config
|
||||||
|
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownPotion.projectile().getBukkitEntity());
|
||||||
|
if (event.callEvent() && thrownPotion.attemptSpawn()) {
|
||||||
|
if (event.shouldConsume()) {
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/item/TridentItem.java
|
||||||
|
+++ b/net/minecraft/world/item/TridentItem.java
|
||||||
|
@@ -90,7 +_,7 @@
|
||||||
|
// stack.hurtWithoutBreaking(1, player); // CraftBukkit - moved down
|
||||||
|
if (tridentSpinAttackStrength == 0.0F) {
|
||||||
|
Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent
|
||||||
|
- ThrownTrident::new, serverLevel, stack, player, 0.0F, 2.5F, 1.0F
|
||||||
|
+ ThrownTrident::new, serverLevel, stack, player, 0.0F, 2.5F, (float) serverLevel.purpurConfig.tridentProjectileOffset // Purpur - Projectile offset config
|
||||||
|
);
|
||||||
|
// Paper start - PlayerLaunchProjectileEvent
|
||||||
|
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity());
|
||||||
@@ -408,6 +408,23 @@ public class PurpurWorldConfig {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double bowProjectileOffset = 1.0D;
|
||||||
|
public double crossbowProjectileOffset = 1.0D;
|
||||||
|
public double eggProjectileOffset = 1.0D;
|
||||||
|
public double enderPearlProjectileOffset = 1.0D;
|
||||||
|
public double throwablePotionProjectileOffset = 1.0D;
|
||||||
|
public double tridentProjectileOffset = 1.0D;
|
||||||
|
public double snowballProjectileOffset = 1.0D;
|
||||||
|
private void projectileOffsetSettings() {
|
||||||
|
bowProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.bow", bowProjectileOffset);
|
||||||
|
crossbowProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.crossbow", crossbowProjectileOffset);
|
||||||
|
eggProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.egg", eggProjectileOffset);
|
||||||
|
enderPearlProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.ender-pearl", enderPearlProjectileOffset);
|
||||||
|
throwablePotionProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.throwable-potion", throwablePotionProjectileOffset);
|
||||||
|
tridentProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.trident", tridentProjectileOffset);
|
||||||
|
snowballProjectileOffset = getDouble("gameplay-mechanics.projectile-offset.snowball", snowballProjectileOffset);
|
||||||
|
}
|
||||||
|
|
||||||
public int snowballDamage = -1;
|
public int snowballDamage = -1;
|
||||||
private void snowballSettings() {
|
private void snowballSettings() {
|
||||||
snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage);
|
snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage);
|
||||||
|
|||||||
Reference in New Issue
Block a user