Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Homes implements Component<EntityStore> {
- private Map<String, String> worldMap;
- private Map<String, Double> doubleMap;
- private Map<String, Float> floatMap;
- public static final BuilderCodec<Homes> CODEC =
- BuilderCodec.builder(Homes.class, Homes::new)
- .append(new KeyedCodec<>("WorldMap", new MapCodec<>(Codec.STRING, HashMap::new, false)),
- (homes, stringStringMap) -> homes.worldMap = stringStringMap,
- homes -> homes.worldMap)
- .add()
- .append(new KeyedCodec<>("DoubleMap", new MapCodec<>(Codec.DOUBLE, HashMap::new, false)),
- (homes, stringDoubleMap) -> homes.doubleMap = stringDoubleMap,
- homes -> homes.doubleMap)
- .add()
- .append(new KeyedCodec<>("FloatMap", new MapCodec<>(Codec.FLOAT, HashMap::new, false)),
- (homes, stringFloatMap) -> homes.floatMap = stringFloatMap,
- homes -> homes.floatMap)
- .add()
- .build();
- public Homes() {
- worldMap = new HashMap<>();
- doubleMap = new HashMap<>();
- floatMap = new HashMap<>();
- }
- public Homes(Homes clone) {
- worldMap = clone.worldMap;
- doubleMap = clone.doubleMap;
- floatMap = clone.floatMap;
- }
- public boolean exists(String homeName) {
- return worldMap.containsKey(homeName);
- }
- public Teleport getHome(String homeName) {
- var world = Universe.get().getWorld(worldMap.get(homeName));
- var x = doubleMap.get(homeName + "-x");
- var y = doubleMap.get(homeName + "-y");
- var z = doubleMap.get(homeName + "-z");
- return Teleport.createForPlayer(world, new Transform(x, y, z));
- }
- public void setHome(String homeName, World world, Transform transform) {
- var pos = transform.getPosition();
- var rot = transform.getRotation();
- worldMap.put(homeName, world.getName());
- doubleMap.put(homeName + "-x", pos.x);
- doubleMap.put(homeName + "-y", pos.y);
- doubleMap.put(homeName + "-z", pos.z);
- floatMap.put(homeName + "-x", rot.x);
- floatMap.put(homeName + "-y", rot.y);
- floatMap.put(homeName + "-z", rot.z);
- }
- @NullableDecl
- @Override
- public Component<EntityStore> clone() {
- return new Homes(this);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment