BlockMetadataService.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.gmail.nossr50.metadata;
  2. import com.gmail.nossr50.mcMMO;
  3. import org.bukkit.block.Furnace;
  4. import org.bukkit.persistence.PersistentDataContainer;
  5. import org.bukkit.persistence.PersistentDataHolder;
  6. import org.bukkit.persistence.PersistentDataType;
  7. import org.jetbrains.annotations.NotNull;
  8. import org.jetbrains.annotations.Nullable;
  9. import java.util.UUID;
  10. import static com.gmail.nossr50.metadata.MetadataService.NSK_FURNACE_UUID_LEAST_SIG;
  11. import static com.gmail.nossr50.metadata.MetadataService.NSK_FURNACE_UUID_MOST_SIG;
  12. public class BlockMetadataService {
  13. private final @NotNull mcMMO pluginRef;
  14. public BlockMetadataService(@NotNull mcMMO pluginRef) {
  15. this.pluginRef = pluginRef;
  16. }
  17. public @Nullable UUID getFurnaceOwner(@NotNull Furnace furnace) {
  18. //Get container from entity
  19. PersistentDataContainer dataContainer = ((PersistentDataHolder) furnace).getPersistentDataContainer();
  20. //Too lazy to make a custom data type for this stuff
  21. Long mostSigBits = dataContainer.get(NSK_FURNACE_UUID_MOST_SIG, PersistentDataType.LONG);
  22. Long leastSigBits = dataContainer.get(NSK_FURNACE_UUID_LEAST_SIG, PersistentDataType.LONG);
  23. if (mostSigBits != null && leastSigBits != null) {
  24. return new UUID(mostSigBits, leastSigBits);
  25. } else {
  26. return null;
  27. }
  28. }
  29. public void setFurnaceOwner(@NotNull Furnace furnace, @NotNull UUID uuid) {
  30. PersistentDataContainer dataContainer = ((PersistentDataHolder) furnace).getPersistentDataContainer();
  31. dataContainer.set(NSK_FURNACE_UUID_MOST_SIG, PersistentDataType.LONG, uuid.getMostSignificantBits());
  32. dataContainer.set(NSK_FURNACE_UUID_LEAST_SIG, PersistentDataType.LONG, uuid.getLeastSignificantBits());
  33. furnace.update();
  34. }
  35. }