Skip to content

Commit

Permalink
all-living-entity support for Absorption_Health, except for 1.12
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Dec 12, 2019
1 parent 03639ec commit a643562
Show file tree
Hide file tree
Showing 13 changed files with 70 additions and 69 deletions.
Expand Up @@ -22,6 +22,10 @@

public abstract class EntityHelper {

public abstract double getAbsorption(LivingEntity entity);

public abstract void setAbsorption(LivingEntity entity, double value);

public void setSneaking(Player player, boolean sneak) {
player.setSneaking(sneak);
}
Expand Down
Expand Up @@ -13,10 +13,6 @@ public abstract class PlayerHelper {

public abstract void setFlyKickCooldown(Player player, int ticks);

public abstract float getAbsorption(Player player);

public abstract void setAbsorption(Player player, float value);

public abstract int ticksPassedDuringCooldown(Player player);

public abstract float getMaxAttackCooldownTicks(Player player);
Expand Down
Expand Up @@ -2235,6 +2235,17 @@ else if (mtr.angle == BlockFace.EAST) {
return null;
});

// <--[tag]
// @attribute <EntityTag.absorption_health>
// @returns ElementTag(Decimal)
// @mechanism EntityTag.absorption_health
// @description
// Returns the living entity's absorption health.
// -->
registerTag("absorption_health", (attribute, object) -> {
return new ElementTag(NMSHandler.getEntityHelper().getAbsorption(object.getLivingEntity()));
});

// <--[tag]
// @attribute <EntityTag.max_oxygen>
// @returns DurationTag
Expand All @@ -2250,6 +2261,7 @@ else if (mtr.angle == BlockFace.EAST) {
// <--[tag]
// @attribute <EntityTag.oxygen>
// @returns DurationTag
// @mechanism EntityTag.remaining_air
// @group attributes
// @description
// Returns the duration of oxygen the entity has left.
Expand Down Expand Up @@ -2926,6 +2938,19 @@ public void adjust(Mechanism mechanism) {
entity.setTicksLived(mechanism.valueAsType(DurationTag.class).getTicksAsInt());
}

// <--[mechanism]
// @object EntityTag
// @name absorption_health
// @input ElementTag(Decimal)
// @description
// Sets the living entity's absorption health.
// @tags
// <EntityTag.absorption_health>
// -->
if (mechanism.matches("absorption_health") && mechanism.requireFloat()) {
NMSHandler.getEntityHelper().setAbsorption(getLivingEntity(), mechanism.getValue().asDouble());
}

// <--[mechanism]
// @object EntityTag
// @name remaining_air
Expand Down
Expand Up @@ -1106,17 +1106,6 @@ else if (CoreUtilities.toLowerCase(obj.toString()).equals("npc")) {
return new ElementTag(true);
});

// <--[tag]
// @attribute <PlayerTag.absorption_health>
// @returns ElementTag(Decimal)
// @mechanism PlayerTag.absorption_health
// @description
// Returns the player's absorption health.
// -->
registerTag("absorption_health", (attribute, object) -> {
return new ElementTag(NMSHandler.getPlayerHelper().getAbsorption(object.getPlayerEntity()));
});

// <--[tag]
// @attribute <PlayerTag.exhaustion>
// @returns ElementTag(Decimal)
Expand Down Expand Up @@ -2585,19 +2574,6 @@ public void adjust(Mechanism mechanism) {
}
}

// <--[mechanism]
// @object PlayerTag
// @name absorption_health
// @input ElementTag(Decimal)
// @description
// Sets the player's absorption health.
// @tags
// <PlayerTag.absorption_health>
// -->
if (mechanism.matches("absorption_health") && mechanism.requireFloat()) {
NMSHandler.getPlayerHelper().setAbsorption(getPlayerEntity(), mechanism.getValue().asFloat());
}

// <--[mechanism]
// @object PlayerTag
// @name fake_absorption_health
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -11,7 +11,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<craftbukkit.version>1.15-R0.1-SNAPSHOT</craftbukkit.version>
<citizens.version>2.0.25-SNAPSHOT</citizens.version>
<citizens.version>2.0.26-SNAPSHOT</citizens.version>
<dcore.version>1.60-SNAPSHOT</dcore.version>
<BUILD_NUMBER>Unknown</BUILD_NUMBER>
<BUILD_CLASS>CUSTOM</BUILD_CLASS>
Expand Down
Expand Up @@ -36,6 +36,16 @@

public class EntityHelperImpl extends EntityHelper {

@Override
public double getAbsorption(LivingEntity entity) {
return ((CraftPlayer) entity).getHandle().getDataWatcher().get(DataWatcherRegistry.c.a(11));
}

@Override
public void setAbsorption(LivingEntity entity, double value) {
((CraftPlayer) entity).getHandle().getDataWatcher().set(DataWatcherRegistry.c.a(11), (float) value);
}

@Override
public double getDamageTo(LivingEntity attacker, Entity target) {
EnumMonsterType monsterType;
Expand Down
Expand Up @@ -61,16 +61,6 @@ public void setFlyKickCooldown(Player player, int ticks) {
}
}

@Override
public float getAbsorption(Player player) {
return ((CraftPlayer) player).getHandle().getDataWatcher().get(DataWatcherRegistry.c.a(11));
}

@Override
public void setAbsorption(Player player, float value) {
((CraftPlayer) player).getHandle().getDataWatcher().set(DataWatcherRegistry.c.a(11), value);
}

@Override
public int ticksPassedDuringCooldown(Player player) {
try {
Expand Down
Expand Up @@ -36,6 +36,16 @@

public class EntityHelperImpl extends EntityHelper {

@Override
public double getAbsorption(LivingEntity entity) {
return ((CraftLivingEntity) entity).getHandle().getAbsorptionHearts();
}

@Override
public void setAbsorption(LivingEntity entity, double value) {
((CraftLivingEntity) entity).getHandle().setAbsorptionHearts((float) value);
}

@Override
public double getDamageTo(LivingEntity attacker, Entity target) {
EnumMonsterType monsterType;
Expand Down
Expand Up @@ -61,16 +61,6 @@ public void setFlyKickCooldown(Player player, int ticks) {
}
}

@Override
public float getAbsorption(Player player) {
return ((CraftPlayer) player).getHandle().getAbsorptionHearts();
}

@Override
public void setAbsorption(Player player, float value) {
((CraftPlayer) player).getHandle().setAbsorptionHearts(value);
}

@Override
public int ticksPassedDuringCooldown(Player player) {
try {
Expand Down
Expand Up @@ -36,6 +36,16 @@

public class EntityHelperImpl extends EntityHelper {

@Override
public double getAbsorption(LivingEntity entity) {
return entity.getAbsorptionAmount();
}

@Override
public void setAbsorption(LivingEntity entity, double value) {
entity.setAbsorptionAmount(value);
}

public static final Field RECIPE_BOOK_DISCOVERED_SET = ReflectionHelper.getFields(RecipeBook.class).get("a");

public static final MethodHandle ENTITY_HOVER_TEXT_GETTER = ReflectionHelper.getMethodHandle(net.minecraft.server.v1_14_R1.Entity.class, "bK");
Expand Down
Expand Up @@ -61,16 +61,6 @@ public void setFlyKickCooldown(Player player, int ticks) {
}
}

@Override
public float getAbsorption(Player player) {
return ((CraftPlayer) player).getHandle().getAbsorptionHearts();
}

@Override
public void setAbsorption(Player player, float value) {
((CraftPlayer) player).getHandle().setAbsorptionHearts(value);
}

@Override
public int ticksPassedDuringCooldown(Player player) {
try {
Expand Down
Expand Up @@ -42,6 +42,16 @@ public class EntityHelperImpl extends EntityHelper {

public static final MethodHandle ENTITY_SETPOSE = ReflectionHelper.getMethodHandle(net.minecraft.server.v1_15_R1.Entity.class, "setPose", EntityPose.class);

@Override
public double getAbsorption(LivingEntity entity) {
return entity.getAbsorptionAmount();
}

@Override
public void setAbsorption(LivingEntity entity, double value) {
entity.setAbsorptionAmount(value);
}

@Override
public void setSneaking(Player player, boolean sneak) {
player.setSneaking(sneak);
Expand Down
Expand Up @@ -59,16 +59,6 @@ public void setFlyKickCooldown(Player player, int ticks) {
}
}

@Override
public float getAbsorption(Player player) {
return ((CraftPlayer) player).getHandle().getAbsorptionHearts();
}

@Override
public void setAbsorption(Player player, float value) {
((CraftPlayer) player).getHandle().setAbsorptionHearts(value);
}

@Override
public int ticksPassedDuringCooldown(Player player) {
try {
Expand Down

0 comments on commit a643562

Please sign in to comment.