Breaks existing API usage for setEntity to return a disguise object

This commit is contained in:
libraryaddict 2014-07-11 16:36:47 +12:00
parent a34f8e1e7e
commit d37acf8f84
4 changed files with 50 additions and 18 deletions

View File

@ -24,7 +24,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
@ -39,7 +38,7 @@ public abstract class Disguise {
private static JavaPlugin plugin;
private boolean disguiseInUse;
private DisguiseType disguiseType;
private Entity entity;
protected Entity entity;
private boolean hearSelfDisguise = DisguiseConfig.isSelfDisguisesSoundsReplaced();
private boolean hideArmorFromSelf = DisguiseConfig.isHidingArmorFromSelf();
private boolean hideHeldItemFromSelf = DisguiseConfig.isHidingHeldItemFromSelf();
@ -413,7 +412,7 @@ public abstract class Disguise {
}
/**
* Removes the disguise and undisguises the entity if its using this disguise. This doesn't fire a UndisguiseEvent
* Removes the disguise and undisguises the entity if its using this disguise.
*/
public void removeDisguise() {
if (disguiseInUse) {
@ -474,19 +473,7 @@ public abstract class Disguise {
/**
* Set the entity of the disguise. Only used for internal things.
*/
public void setEntity(Entity entity) {
if (this.getEntity() != null) {
if (getEntity() == entity)
return;
throw new RuntimeException("This disguise is already in use! Try .clone()");
}
if (this.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) {
throw new RuntimeException(
"Cannot disguise a living entity with a misc disguise. Renable MiscDisguisesForLiving in the config to do this");
}
this.entity = entity;
setupWatcher();
}
public abstract Disguise setEntity(Entity entity);
public void setHearSelfDisguise(boolean hearSelfDisguise) {
this.hearSelfDisguise = hearSelfDisguise;
@ -539,7 +526,7 @@ public abstract class Disguise {
* Sets up the FlagWatcher with the entityclass, it creates all the data it needs to prevent conflicts when sending the
* datawatcher.
*/
private void setupWatcher() {
protected void setupWatcher() {
HashMap<Integer, Object> disguiseValues = DisguiseValues.getMetaValues(getType());
HashMap<Integer, Object> entityValues = DisguiseValues.getMetaValues(DisguiseType.getType(getEntity().getType()));
// Start from 2 as they ALL share 0 and 1

View File

@ -1,13 +1,17 @@
package me.libraryaddict.disguise.disguisetypes;
import java.security.InvalidParameterException;
import me.libraryaddict.disguise.DisguiseConfig;
import me.libraryaddict.disguise.disguisetypes.watchers.DroppedItemWatcher;
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
import me.libraryaddict.disguise.disguisetypes.watchers.PaintingWatcher;
import me.libraryaddict.disguise.disguisetypes.watchers.SplashPotionWatcher;
import org.bukkit.Art;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
public class MiscDisguise extends TargetedDisguise {
@ -146,4 +150,20 @@ public class MiscDisguise extends TargetedDisguise {
return true;
}
@Override
public MiscDisguise setEntity(Entity entity) {
if (this.getEntity() != null) {
if (getEntity() == entity)
return this;
throw new RuntimeException("This disguise is already in use! Try .clone()");
}
if (!DisguiseConfig.isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) {
throw new RuntimeException(
"Cannot disguise a living entity with a misc disguise. Renable MiscDisguisesForLiving in the config to do this");
}
this.entity = entity;
setupWatcher();
return this;
}
}

View File

@ -5,6 +5,7 @@ import java.security.InvalidParameterException;
import me.libraryaddict.disguise.disguisetypes.watchers.AgeableWatcher;
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
public class MobDisguise extends TargetedDisguise {
@ -80,4 +81,16 @@ public class MobDisguise extends TargetedDisguise {
public boolean isMobDisguise() {
return true;
}
@Override
public MobDisguise setEntity(Entity entity) {
if (this.getEntity() != null) {
if (getEntity() == entity)
return this;
throw new RuntimeException("This disguise is already in use! Try .clone()");
}
this.entity = entity;
setupWatcher();
return this;
}
}

View File

@ -3,7 +3,7 @@ package me.libraryaddict.disguise.disguisetypes;
import java.util.UUID;
import org.apache.commons.lang.Validate;
import org.bukkit.entity.Entity;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
@ -82,6 +82,18 @@ public class PlayerDisguise extends TargetedDisguise {
return true;
}
@Override
public PlayerDisguise setEntity(Entity entity) {
if (this.getEntity() != null) {
if (getEntity() == entity)
return this;
throw new RuntimeException("This disguise is already in use! Try .clone()");
}
this.entity = entity;
setupWatcher();
return this;
}
@Deprecated
public void setSkin(String skinToUse) {
this.skinToUse = skinToUse;