mirror of
https://github.com/SunNetservers/MiniGames.git
synced 2025-07-15 04:24:45 +02:00
Parkour implementation safety save 2
This is just a safety save in case the code gets too broken to fix.
This commit is contained in:
@ -0,0 +1,49 @@
|
||||
package net.knarcraft.minigames.container;
|
||||
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
|
||||
/**
|
||||
* A container that is serializable
|
||||
*
|
||||
* @param <K> <p>The type of the contained object</p>
|
||||
*/
|
||||
public abstract class SerializableContainer<K> implements ConfigurationSerializable {
|
||||
|
||||
private final K value;
|
||||
|
||||
/**
|
||||
* Instantiates a new serializable container
|
||||
*
|
||||
* @param value <p>The value to contain</p>
|
||||
*/
|
||||
public SerializableContainer(K value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the raw, non-serializable object
|
||||
*
|
||||
* @return <p>The raw stored value</p>
|
||||
*/
|
||||
public K getRawValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a serializable container containing the given value
|
||||
*
|
||||
* @param value <p>The value to make serializable</p>
|
||||
* @return <p>The serializable value</p>
|
||||
*/
|
||||
public abstract SerializableContainer<K> getSerializable(K value);
|
||||
|
||||
@Override
|
||||
public boolean equals(Object object) {
|
||||
if (object instanceof SerializableContainer<?>) {
|
||||
return this.getRawValue().equals(((SerializableContainer<?>) object).getRawValue());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package net.knarcraft.minigames.container;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A material container able to be serialized
|
||||
*/
|
||||
public class SerializableMaterial extends SerializableContainer<Material> {
|
||||
|
||||
/**
|
||||
* Instantiates a new serializable material
|
||||
*
|
||||
* @param material <p>The material to contain</p>
|
||||
*/
|
||||
public SerializableMaterial(Material material) {
|
||||
super(material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SerializableContainer<Material> getSerializable(Material value) {
|
||||
return new SerializableMaterial(value);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Map<String, Object> serialize() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("name", getRawValue().name());
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializes a serialized material
|
||||
*
|
||||
* @param data <p>The serialized data</p>
|
||||
* @return <p>The deserialized material</p>
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public static SerializableMaterial deserialize(Map<String, Object> data) {
|
||||
Material material = Material.matchMaterial((String) data.get("name"));
|
||||
if (material == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new SerializableMaterial(material);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package net.knarcraft.minigames.container;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* A UUID container able to be serialized
|
||||
*/
|
||||
public class SerializableUUID extends SerializableContainer<UUID> {
|
||||
|
||||
/**
|
||||
* Instantiates a new serializable uuid
|
||||
*
|
||||
* @param value <p>The uuid to contain</p>
|
||||
*/
|
||||
public SerializableUUID(UUID value) {
|
||||
super(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SerializableContainer<UUID> getSerializable(UUID value) {
|
||||
return new SerializableUUID(value);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Map<String, Object> serialize() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("id", getRawValue().toString());
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializes a serialized UUID
|
||||
*
|
||||
* @param data <p>The serialized data</p>
|
||||
* @return <p>The deserialized UUID</p>
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public static SerializableUUID deserialize(Map<String, Object> data) {
|
||||
String id = (String) data.getOrDefault("id", null);
|
||||
if (id != null) {
|
||||
return new SerializableUUID(UUID.fromString(id));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user