#686: Expand Strider and Steerable entity API

By: Parker Hawke <hawkeboyz2@hotmail.com>
This commit is contained in:
CraftBukkit/Spigot
2020-06-30 09:54:28 +10:00
parent a78201fc5e
commit 8b8fc993bd
5 changed files with 216 additions and 0 deletions

View File

@@ -1,11 +1,14 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import net.minecraft.server.EntityPig;
import org.bukkit.Material;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Pig;
public class CraftPig extends CraftAnimals implements Pig {
public CraftPig(CraftServer server, EntityPig entity) {
super(server, entity);
}
@@ -20,6 +23,40 @@ public class CraftPig extends CraftAnimals implements Pig {
getHandle().saddleStorage.setSaddle(saddled);
}
@Override
public int getBoostTicks() {
return getHandle().saddleStorage.a ? getHandle().saddleStorage.c : 0;
}
@Override
public void setBoostTicks(int ticks) {
Preconditions.checkArgument(ticks >= 0, "ticks must be >= 0");
getHandle().saddleStorage.setBoostTicks(ticks);
}
@Override
public int getCurrentBoostTicks() {
return getHandle().saddleStorage.a ? getHandle().saddleStorage.b : 0;
}
@Override
public void setCurrentBoostTicks(int ticks) {
if (!getHandle().saddleStorage.a) {
return;
}
int max = getHandle().saddleStorage.c;
Preconditions.checkArgument(ticks >= 0 && ticks <= max, "boost ticks must not exceed 0 or %d (inclusive)", max);
this.getHandle().saddleStorage.b = ticks;
}
@Override
public Material getSteerMaterial() {
return Material.CARROT_ON_A_STICK;
}
@Override
public EntityPig getHandle() {
return (EntityPig) entity;

View File

@@ -1,6 +1,8 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import net.minecraft.server.EntityStrider;
import org.bukkit.Material;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Strider;
@@ -11,6 +13,60 @@ public class CraftStrider extends CraftAnimals implements Strider {
super(server, entity);
}
@Override
public boolean isShivering() {
return getHandle().eL(); // PAIL rename isShivering
}
@Override
public void setShivering(boolean shivering) {
this.getHandle().t(shivering); // PAIL rename setShivering
}
@Override
public boolean hasSaddle() {
return getHandle().hasSaddle();
}
@Override
public void setSaddle(boolean saddled) {
getHandle().bA.setSaddle(saddled);
}
@Override
public int getBoostTicks() {
return getHandle().bA.a ? getHandle().bA.c : 0;
}
@Override
public void setBoostTicks(int ticks) {
Preconditions.checkArgument(ticks >= 0, "ticks must be >= 0");
getHandle().bA.setBoostTicks(ticks);
}
@Override
public int getCurrentBoostTicks() {
return getHandle().bA.a ? getHandle().bA.b : 0;
}
@Override
public void setCurrentBoostTicks(int ticks) {
if (!getHandle().bA.a) {
return;
}
int max = getHandle().bA.c;
Preconditions.checkArgument(ticks >= 0 && ticks <= max, "boost ticks must not exceed 0 or %d (inclusive)", max);
this.getHandle().bA.b = ticks;
}
@Override
public Material getSteerMaterial() {
return Material.WARPED_FUNGUS_ON_A_STICK;
}
@Override
public EntityStrider getHandle() {
return (EntityStrider) entity;

View File

@@ -39,6 +39,7 @@ import net.minecraft.server.EntityPlayer;
import net.minecraft.server.EntityPotion;
import net.minecraft.server.EntityRaider;
import net.minecraft.server.EntitySlime;
import net.minecraft.server.EntityStrider;
import net.minecraft.server.EntityTypes;
import net.minecraft.server.EntityVillager;
import net.minecraft.server.EntityWaterAnimal;
@@ -113,6 +114,7 @@ import org.bukkit.entity.PigZombie;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Raider;
import org.bukkit.entity.Strider;
import org.bukkit.entity.ThrownExpBottle;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.entity.Vehicle;
@@ -180,6 +182,7 @@ import org.bukkit.event.entity.PlayerLeashEntityEvent;
import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.entity.StriderTemperatureChangeEvent;
import org.bukkit.event.entity.VillagerCareerChangeEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
@@ -1576,4 +1579,9 @@ public class CraftEventFactory {
Bukkit.getPluginManager().callEvent(event);
return event;
}
public static void callStriderTemperatureChangeEvent(EntityStrider strider, boolean shivering) {
StriderTemperatureChangeEvent event = new StriderTemperatureChangeEvent((Strider) strider.getBukkitEntity(), shivering);
Bukkit.getPluginManager().callEvent(event);
}
}