Skip to content

Commit

Permalink
modulize arrow code due to change spigot arrow api
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Apr 30, 2019
1 parent 541da1a commit 5dcd900
Show file tree
Hide file tree
Showing 10 changed files with 119 additions and 27 deletions.
Expand Up @@ -34,6 +34,14 @@ public void setCarriedItem(Enderman entity, ItemStack item) {

public abstract void setBodyArrows(Entity entity, int numArrows);

public abstract double getArrowDamage(Entity arrow);

public abstract void setArrowDamage(Entity arrow, double damage);

public abstract String getArrowPickupStatus(Entity entity);

public abstract void setArrowPickupStatus(Entity entity, String status);

public abstract Entity getFishHook(PlayerFishEvent event);

public abstract void forceInteraction(Player player, Location location);
Expand Down
@@ -1,7 +1,6 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Arrow;
import org.bukkit.entity.Vehicle;

public interface FakeArrow extends CustomEntity, Arrow, Vehicle {
public interface FakeArrow extends CustomEntity, Vehicle {
}
Expand Up @@ -48,12 +48,7 @@ private EntityArrowDamage(dEntity entity) {

@Override
public String getPropertyString() {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
return String.valueOf(((Arrow) dentity.getBukkitEntity()).getDamage());
}
else {
return String.valueOf(((Arrow) dentity.getBukkitEntity()).spigot().getDamage());
}
return String.valueOf(NMSHandler.getInstance().getEntityHelper().getArrowDamage(dentity.getBukkitEntity()));
}

@Override
Expand Down Expand Up @@ -82,14 +77,8 @@ public String getAttribute(Attribute attribute) {
// NOTE: The actual damage dealt by the arrow/trident may be different depending on the projectile's flight speed.
// -->
if (attribute.startsWith("damage")) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
return new Element(((Arrow) dentity.getBukkitEntity()).getDamage())
.getAttribute(attribute.fulfill(1));
}
else {
return new Element(((Arrow) dentity.getBukkitEntity()).spigot().getDamage())
.getAttribute(attribute.fulfill(1));
}
return new Element(NMSHandler.getInstance().getEntityHelper().getArrowDamage(dentity.getBukkitEntity()))
.getAttribute(attribute.fulfill(1));
}

return null;
Expand All @@ -109,12 +98,7 @@ public void adjust(Mechanism mechanism) {
// -->

if (mechanism.matches("damage") && mechanism.requireDouble()) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
((Arrow) dentity.getBukkitEntity()).setDamage(mechanism.getValue().asDouble());
}
else {
((Arrow) dentity.getBukkitEntity()).spigot().setDamage(mechanism.getValue().asDouble());
}
NMSHandler.getInstance().getEntityHelper().setArrowDamage(dentity.getBukkitEntity(), mechanism.getValue().asDouble());
}
}
}
@@ -1,5 +1,6 @@
package net.aufdemrand.denizen.objects.properties.entity;

import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.Mechanism;
Expand Down Expand Up @@ -46,7 +47,7 @@ private EntityPickupStatus(dEntity entity) {

@Override
public String getPropertyString() {
return ((Arrow) dentity.getBukkitEntity()).getPickupStatus().toString();
return NMSHandler.getInstance().getEntityHelper().getArrowPickupStatus(dentity.getBukkitEntity());
}

@Override
Expand Down Expand Up @@ -74,7 +75,7 @@ public String getAttribute(Attribute attribute) {
// If the entity is an arrow or trident, returns the pickup status of the arrow/trident.
// -->
if (attribute.startsWith("pickup_status")) {
return new Element(((Arrow) dentity.getBukkitEntity()).getPickupStatus().toString())
return new Element(NMSHandler.getInstance().getEntityHelper().getArrowPickupStatus(dentity.getBukkitEntity()))
.getAttribute(attribute.fulfill(1));
}

Expand All @@ -95,8 +96,8 @@ public void adjust(Mechanism mechanism) {
// <e@entity.pickup_status>
// -->

if (mechanism.matches("pickup_status") && mechanism.requireEnum(false, Arrow.PickupStatus.values())) {
((Arrow) dentity.getBukkitEntity()).setPickupStatus(Arrow.PickupStatus.valueOf(mechanism.getValue().asString().toUpperCase()));
if (mechanism.matches("pickup_status")) {
NMSHandler.getInstance().getEntityHelper().setArrowPickupStatus(dentity.getBukkitEntity(), mechanism.getValue().asString().toUpperCase());
}
}
}
Expand Up @@ -35,6 +35,26 @@ public class EntityHelper_v1_10_R1 extends EntityHelper {
General Entity Methods
*/

@Override
public String getArrowPickupStatus(Entity entity) {
return null;
}

@Override
public void setArrowPickupStatus(Entity entity, String status) {
// Do nothing.
}

@Override
public double getArrowDamage(Entity arrow) {
return ((Arrow) arrow).spigot().getDamage();
}

@Override
public void setArrowDamage(Entity arrow, double damage) {
((Arrow) arrow).spigot().setDamage(damage);
}

@Override
public int getBodyArrows(Entity entity) {
// https://wiki.vg/Entity_metadata#Living
Expand Down
Expand Up @@ -35,6 +35,26 @@ public class EntityHelper_v1_11_R1 extends EntityHelper {
General Entity Methods
*/

@Override
public String getArrowPickupStatus(Entity entity) {
return ((Arrow) entity).getPickupStatus().name();
}

@Override
public void setArrowPickupStatus(Entity entity, String status) {
((Arrow) entity).setPickupStatus(Arrow.PickupStatus.valueOf(status));
}

@Override
public double getArrowDamage(Entity arrow) {
return ((Arrow) arrow).spigot().getDamage();
}

@Override
public void setArrowDamage(Entity arrow, double damage) {
((Arrow) arrow).spigot().setDamage(damage);
}

@Override
public int getBodyArrows(Entity entity) {
// https://wiki.vg/Entity_metadata#Living
Expand Down
Expand Up @@ -35,6 +35,26 @@ public class EntityHelper_v1_12_R1 extends EntityHelper {
General Entity Methods
*/

@Override
public String getArrowPickupStatus(Entity entity) {
return ((Arrow) entity).getPickupStatus().name();
}

@Override
public void setArrowPickupStatus(Entity entity, String status) {
((Arrow) entity).setPickupStatus(Arrow.PickupStatus.valueOf(status));
}

@Override
public double getArrowDamage(Entity arrow) {
return ((Arrow) arrow).spigot().getDamage();
}

@Override
public void setArrowDamage(Entity arrow, double damage) {
((Arrow) arrow).spigot().setDamage(damage);
}

@Override
public int getBodyArrows(Entity entity) {
// https://wiki.vg/Entity_metadata#Living
Expand Down
Expand Up @@ -39,6 +39,26 @@ public class EntityHelper_v1_13_R2 extends EntityHelper {
General Entity Methods
*/

@Override
public String getArrowPickupStatus(Entity entity) {
return ((Arrow) entity).getPickupStatus().name();
}

@Override
public void setArrowPickupStatus(Entity entity, String status) {
((Arrow) entity).setPickupStatus(Arrow.PickupStatus.valueOf(status));
}

@Override
public double getArrowDamage(Entity arrow) {
return ((Arrow) arrow).getDamage();
}

@Override
public void setArrowDamage(Entity arrow, double damage) {
((Arrow) arrow).setDamage(damage);
}

@Override
public void setCarriedItem(Enderman entity, ItemStack item) {
entity.setCarriedBlock(Bukkit.createBlockData(item.getType()));
Expand Down
Expand Up @@ -64,7 +64,7 @@ public void disableAsyncCatcher() {

@Override
public boolean isCorrectMappingsCode() {
return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals("8b7fe9012a93b36df04844a6c990de27");
return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals("30f0a3bd4ceb5c03fe41ac0cfea4ffe3");
}

@Override
Expand Down
Expand Up @@ -35,6 +35,26 @@ public class EntityHelper_v1_14_R1 extends EntityHelper {
General Entity Methods
*/

@Override
public String getArrowPickupStatus(Entity entity) {
return ((Arrow) entity).getPickupStatus().name();
}

@Override
public void setArrowPickupStatus(Entity entity, String status) {
((Arrow) entity).setPickupStatus(AbstractArrow.PickupStatus.valueOf(status));
}

@Override
public double getArrowDamage(Entity arrow) {
return ((Arrow) arrow).getDamage();
}

@Override
public void setArrowDamage(Entity arrow, double damage) {
((Arrow) arrow).setDamage(damage);
}

@Override
public void setCarriedItem(Enderman entity, ItemStack item) {
entity.setCarriedBlock(Bukkit.createBlockData(item.getType()));
Expand Down

0 comments on commit 5dcd900

Please sign in to comment.