67 lines
2.4 KiB
Java
67 lines
2.4 KiB
Java
package com.hypixel.hytale.builtin.instances.config;
|
|
|
|
import com.hypixel.hytale.builtin.instances.InstancesPlugin;
|
|
import com.hypixel.hytale.codec.KeyedCodec;
|
|
import com.hypixel.hytale.codec.builder.BuilderCodec;
|
|
import com.hypixel.hytale.component.Component;
|
|
import com.hypixel.hytale.component.ComponentType;
|
|
import com.hypixel.hytale.component.Holder;
|
|
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
|
import javax.annotation.Nonnull;
|
|
import javax.annotation.Nullable;
|
|
|
|
public class InstanceEntityConfig implements Component<EntityStore> {
|
|
public static final String ID = "Instance";
|
|
public static final BuilderCodec<InstanceEntityConfig> CODEC = BuilderCodec.builder(InstanceEntityConfig.class, InstanceEntityConfig::new)
|
|
.appendInherited(
|
|
new KeyedCodec<>("ReturnPoint", WorldReturnPoint.CODEC), (o, i) -> o.returnPoint = i, o -> o.returnPoint, (o, p) -> o.returnPoint = p.returnPoint
|
|
)
|
|
.add()
|
|
.build();
|
|
private WorldReturnPoint returnPoint;
|
|
private transient WorldReturnPoint returnPointOverride;
|
|
|
|
@Nonnull
|
|
public static ComponentType<EntityStore, InstanceEntityConfig> getComponentType() {
|
|
return InstancesPlugin.get().getInstanceEntityConfigComponentType();
|
|
}
|
|
|
|
@Nonnull
|
|
public static InstanceEntityConfig ensureAndGet(@Nonnull Holder<EntityStore> holder) {
|
|
ComponentType<EntityStore, InstanceEntityConfig> type = getComponentType();
|
|
return holder.ensureAndGetComponent(type);
|
|
}
|
|
|
|
@Nullable
|
|
public static InstanceEntityConfig removeAndGet(@Nonnull Holder<EntityStore> holder) {
|
|
ComponentType<EntityStore, InstanceEntityConfig> type = getComponentType();
|
|
InstanceEntityConfig component = holder.getComponent(type);
|
|
holder.removeComponent(type);
|
|
return component;
|
|
}
|
|
|
|
public WorldReturnPoint getReturnPoint() {
|
|
return this.returnPoint;
|
|
}
|
|
|
|
public void setReturnPoint(WorldReturnPoint returnPoint) {
|
|
this.returnPoint = returnPoint;
|
|
}
|
|
|
|
public WorldReturnPoint getReturnPointOverride() {
|
|
return this.returnPointOverride;
|
|
}
|
|
|
|
public void setReturnPointOverride(WorldReturnPoint returnPointOverride) {
|
|
this.returnPointOverride = returnPointOverride;
|
|
}
|
|
|
|
@Nonnull
|
|
public InstanceEntityConfig clone() {
|
|
InstanceEntityConfig v = new InstanceEntityConfig();
|
|
v.returnPoint = v.returnPoint.clone();
|
|
v.returnPointOverride = v.returnPointOverride.clone();
|
|
return v;
|
|
}
|
|
}
|