AchyMake

Homes Component for Hytale

Feb 10th, 2026
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | Source Code | 0 0
  1. public class Homes implements Component<EntityStore> {
  2.     private Map<String, String> worldMap;
  3.     private Map<String, Double> doubleMap;
  4.     private Map<String, Float> floatMap;
  5.     public static final BuilderCodec<Homes> CODEC =
  6.             BuilderCodec.builder(Homes.class, Homes::new)
  7.                     .append(new KeyedCodec<>("WorldMap", new MapCodec<>(Codec.STRING, HashMap::new, false)),
  8.                             (homes, stringStringMap) -> homes.worldMap = stringStringMap,
  9.                             homes -> homes.worldMap)
  10.                     .add()
  11.                     .append(new KeyedCodec<>("DoubleMap", new MapCodec<>(Codec.DOUBLE, HashMap::new, false)),
  12.                             (homes, stringDoubleMap) -> homes.doubleMap = stringDoubleMap,
  13.                             homes -> homes.doubleMap)
  14.                     .add()
  15.                     .append(new KeyedCodec<>("FloatMap", new MapCodec<>(Codec.FLOAT, HashMap::new, false)),
  16.                             (homes, stringFloatMap) -> homes.floatMap = stringFloatMap,
  17.                             homes -> homes.floatMap)
  18.                     .add()
  19.                     .build();
  20.     public Homes() {
  21.         worldMap = new HashMap<>();
  22.         doubleMap = new HashMap<>();
  23.         floatMap = new HashMap<>();
  24.     }
  25.     public Homes(Homes clone) {
  26.         worldMap = clone.worldMap;
  27.         doubleMap = clone.doubleMap;
  28.         floatMap = clone.floatMap;
  29.     }
  30.     public boolean exists(String homeName) {
  31.         return worldMap.containsKey(homeName);
  32.     }
  33.     public Teleport getHome(String homeName) {
  34.         var world = Universe.get().getWorld(worldMap.get(homeName));
  35.         var x = doubleMap.get(homeName + "-x");
  36.         var y = doubleMap.get(homeName + "-y");
  37.         var z = doubleMap.get(homeName + "-z");
  38.         return Teleport.createForPlayer(world, new Transform(x, y, z));
  39.     }
  40.     public void setHome(String homeName, World world, Transform transform) {
  41.         var pos = transform.getPosition();
  42.         var rot = transform.getRotation();
  43.         worldMap.put(homeName, world.getName());
  44.         doubleMap.put(homeName + "-x", pos.x);
  45.         doubleMap.put(homeName + "-y", pos.y);
  46.         doubleMap.put(homeName + "-z", pos.z);
  47.         floatMap.put(homeName + "-x", rot.x);
  48.         floatMap.put(homeName + "-y", rot.y);
  49.         floatMap.put(homeName + "-z", rot.z);
  50.     }
  51.     @NullableDecl
  52.     @Override
  53.     public Component<EntityStore> clone() {
  54.         return new Homes(this);
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment