2018-09-16 00:45:44 +02:00
|
|
|
package com.minelittlepony.unicopia.player;
|
|
|
|
|
2019-03-12 21:10:48 +01:00
|
|
|
/**
|
|
|
|
* Interface for things that can be owned.
|
|
|
|
*
|
|
|
|
* @param <E> The type of object that owns us.
|
|
|
|
*/
|
2018-09-16 00:45:44 +02:00
|
|
|
public interface IOwned<E> {
|
|
|
|
|
2019-03-12 21:10:48 +01:00
|
|
|
/**
|
|
|
|
* Updates the owner of this object.
|
|
|
|
*/
|
2019-02-09 15:34:17 +01:00
|
|
|
void setOwner(E owner);
|
2018-09-16 00:45:44 +02:00
|
|
|
|
2019-03-12 21:10:48 +01:00
|
|
|
/**
|
|
|
|
* Gets the owner that holds this object.
|
|
|
|
*/
|
2018-09-16 00:45:44 +02:00
|
|
|
E getOwner();
|
|
|
|
|
2019-02-09 15:34:17 +01:00
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
static <T> IOwned<T> cast(Object o) {
|
|
|
|
return (IOwned<T>)o;
|
|
|
|
}
|
2018-09-16 00:45:44 +02:00
|
|
|
}
|