BlockMapMarkerData class

Пакет: com.hypixel.hytale.server.core.universe.world.meta.state

Файл: com/hypixel/hytale/server/core/universe/world/meta/state/BlockMapMarkersResource.java

Поля (5)

МодификаторыТипИмя
public static final BuilderCodec<BlockMapMarkersResource.BlockMapMarkerData> CODEC
private boolean discoverable
private String icon
private String markerId
private String name

Методы (5)

МодификаторыВозвратСигнатура
public String getIconpublic String getIcon()
public String getMarkerIdpublic String getMarkerId()
public String getNamepublic String getName()
public boolean isDiscoverablepublic boolean isDiscoverable()
abstract this this(var1, var2, var3, false)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.meta.state;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.block.BlockUtil;
class="kw">import com.hypixel.hytale.math.codec.Int3ObjectMapCodec;
class="kw">import com.hypixel.hytale.math.data.Int3ObjectOpenHashMap;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public class BlockMapMarkersResource class="kw">implements Resource<ChunkStore> {
   class="kw">private class="kw">static class="kw">final int VERSION = 1;
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">public class="kw">static class="kw">final BuilderCodec<BlockMapMarkersResource> CODEC = BuilderCodec.<BlockMapMarkersResource>builder(
         BlockMapMarkersResource.class, BlockMapMarkersResource::new
      )
      .versioned()
      .codecVersion(1)
      .<Map>append(new KeyedCodec<>("Markers", new MapCodec<>(BlockMapMarkersResource.BlockMapMarkerData.CODEC, HashMap::new), true), (var0, var1) -> {
         if (var1 != null) {
            for (Entry var3 : var1.entrySet()) {
               putLegacyMarker(var0.markers, var3.getKey(), var3.getValue());
            }
         }
      }, var0 -> null)
      .setVersionRange(0, 0)
      .add()
      .<Int3ObjectOpenHashMap<BlockMapMarkersResource.BlockMapMarkerData>>append(
         new KeyedCodec<>("Markers", new Int3ObjectMapCodec<>(BlockMapMarkersResource.BlockMapMarkerData.CODEC), true), (var0, var1) -> {
            if (var1 != null) {
               var0.markers = var1;
            }
         }, var0 -> var0.markers
      )
      .setVersionRange(1, 1)
      .add()
      .build();
   class="kw">private Int3ObjectOpenHashMap<BlockMapMarkersResource.BlockMapMarkerData> markers = new Int3ObjectOpenHashMap<>();

   class="kw">public BlockMapMarkersResource() {
   }

   class="kw">public BlockMapMarkersResource(Int3ObjectOpenHashMap<BlockMapMarkersResource.BlockMapMarkerData> var1) {
      this.markers = var1;
   }

   class="kw">public class="kw">static ResourceType<ChunkStore, BlockMapMarkersResource> getResourceType() {
      class="kw">return BlockModule.get().getBlockMapMarkersResourceType();
   }

   @Nonnull
   class="kw">public class="kw">static BlockMapMarkersResource of(@Nonnull World var0) {
      class="kw">return var0.getChunkStore().getStore().getResource(getResourceType());
   }

   @Nonnull
   class="kw">public Int3ObjectOpenHashMap<BlockMapMarkersResource.BlockMapMarkerData> getMarkers() {
      class="kw">return this.markers;
   }

   @Nullable
   class="kw">public BlockMapMarkersResource.BlockMapMarkerData getMarker(int var1, int var2, int var3) {
      class="kw">return this.markers.get(var1, var2, var3);
   }

   @Nullable
   class="kw">public BlockMapMarkersResource.BlockMapMarkerData getMarker(@Nonnull Vector3ic var1) {
      class="kw">return this.getMarker(var1.x(), var1.y(), var1.z());
   }

   @Nonnull
   class="kw">public BlockMapMarkersResource.BlockMapMarkerData addMarker(@Nonnull Vector3i var1, @Nonnull String var2, @Nonnull String var3) {
      class="kw">return this.addMarker(var1, var2, var3, false);
   }

   @Nonnull
   class="kw">public BlockMapMarkersResource.BlockMapMarkerData addMarker(@Nonnull Vector3i var1, @Nonnull String var2, @Nonnull String var3, boolean var4) {
      BlockMapMarkersResource.BlockMapMarkerData var5 = new BlockMapMarkersResource.BlockMapMarkerData(var2, var3, this.resolveMarkerId(var1), var4);
      this.markers.put(var1.x, var1.y, var1.z, var5);
      class="kw">return var5;
   }

   @Nullable
   class="kw">public BlockMapMarkersResource.BlockMapMarkerData removeMarker(@Nonnull Vector3i var1) {
      class="kw">return this.markers.remove(var1.x, var1.y, var1.z);
   }

   @Override
   class="kw">public Resource<ChunkStore> clone() {
      class="kw">return new BlockMapMarkersResource(new Int3ObjectOpenHashMap<>(this.markers));
   }

   @Nonnull
   class="kw">private String resolveMarkerId(@Nonnull Vector3i var1) {
      BlockMapMarkersResource.BlockMapMarkerData var2 = this.markers.get(var1.x, var1.y, var1.z);
      String var3 = var2 == null ? null : var2.getMarkerId();
      class="kw">return var3 != null ? var3 : UUID.randomUUID().toString();
   }

   class="kw">private class="kw">static void putLegacyMarker(
      @Nonnull Int3ObjectOpenHashMap<BlockMapMarkersResource.BlockMapMarkerData> var0,
      @Nonnull String var1,
      @Nonnull BlockMapMarkersResource.BlockMapMarkerData var2
   ) {
      long var3;
      try {
         var3 = Long.parseLong(var1);
      } catch (NumberFormatException var6) {
         LOGGER.at(Level.WARNING).log("Skipping block map marker with malformed legacy position key: %s", var1);
         class="kw">return;
      }

      var0.put(BlockUtil.unpackX(var3), BlockUtil.unpackY(var3), BlockUtil.unpackZ(var3), var2);
   }

   class="kw">public class="kw">static class BlockMapMarkerData {
      class="kw">public class="kw">static class="kw">final BuilderCodec<BlockMapMarkersResource.BlockMapMarkerData> CODEC = BuilderCodec.builder(
            BlockMapMarkersResource.BlockMapMarkerData.class, BlockMapMarkersResource.BlockMapMarkerData::new
         )
         .append(new KeyedCodec<>("Name", Codec.STRING), (var0, var1) -> var0.name = var1, var0 -> var0.name)
         .add()
         .append(new KeyedCodec<>("Icon", Codec.STRING), (var0, var1) -> var0.icon = var1, var0 -> var0.icon)
         .add()
         .append(new KeyedCodec<>("MarkerId", Codec.STRING), (var0, var1) -> var0.markerId = var1, var0 -> var0.markerId)
         .add()
         .append(
            new KeyedCodec<>("Discoverable", Codec.BOOLEAN),
            (var0, var1) -> var0.discoverable = var1 != null && var1,
            var0 -> var0.discoverable ? Boolean.TRUE : null
         )
         .add()
         .build();
      class="kw">private String name;
      class="kw">private String icon;
      class="kw">private String markerId;
      class="kw">private boolean discoverable;

      class="kw">public BlockMapMarkerData() {
      }

      class="kw">public BlockMapMarkerData(String var1, String var2, String var3) {
         this(var1, var2, var3, false);
      }

      class="kw">public BlockMapMarkerData(String var1, String var2, String var3, boolean var4) {
         this.name = var1;
         this.icon = var2;
         this.markerId = var3;
         this.discoverable = var4;
      }

      class="kw">public String getName() {
         class="kw">return this.name;
      }

      class="kw">public String getIcon() {
         class="kw">return this.icon;
      }

      class="kw">public String getMarkerId() {
         class="kw">return this.markerId;
      }

      class="kw">public boolean isDiscoverable() {
         class="kw">return this.discoverable;
      }
   }
}