1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-21 12:15:50 +00:00
Slimefun4/src/me/mrCookieSlime/Slimefun/holograms/Projector.java

68 lines
3.1 KiB
Java
Raw Normal View History

2016-04-14 16:24:03 +00:00
package me.mrCookieSlime.Slimefun.holograms;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
2017-06-14 10:35:25 +00:00
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
2016-04-14 16:24:03 +00:00
public class Projector {
public static ArmorStand getArmorStand(Block projector) {
String nametag = BlockStorage.getLocationInfo(projector.getLocation(), "text");
2018-06-06 09:41:56 +00:00
double offset = Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset"));
2016-04-14 16:24:03 +00:00
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5);
2019-03-31 18:32:40 +00:00
for (Entity n : l.getChunk().getEntities()) {
2019-08-29 20:04:31 +00:00
if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
2016-04-14 16:24:03 +00:00
}
ArmorStand hologram = ArmorStandFactory.createHidden(l);
hologram.setCustomName(nametag);
return hologram;
}
public static void openEditor(Player p, final Block projector) {
ChestMenu menu = new ChestMenu("Hologram Settings");
2018-09-04 09:33:57 +00:00
menu.addItem(0, new CustomItem(new ItemStack(Material.NAME_TAG), "&7Text &e(Click to edit)", "", "&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(projector.getLocation(), "text"))));
2019-03-31 18:32:40 +00:00
menu.addMenuClickHandler(0, (pl, slot, item, action) -> {
pl.closeInventory();
Messages.local.sendTranslation(pl, "machines.HOLOGRAM_PROJECTOR.enter-text", true);
MenuHelper.awaitChatInput(pl, (player, message) -> {
ArmorStand hologram = getArmorStand(projector);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', message));
BlockStorage.addBlockInfo(projector, "text", hologram.getCustomName());
2019-03-31 18:32:40 +00:00
openEditor(player, projector);
2016-04-14 16:24:03 +00:00
return false;
2019-03-31 18:32:40 +00:00
});
return false;
2016-04-14 16:24:03 +00:00
});
2018-09-04 09:33:57 +00:00
menu.addItem(1, new CustomItem(new ItemStack(Material.CLOCK), "&7Offset: &e" + DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + 1.0D), "", "&rLeft Click: &7+0.1", "&rRight Click: &7-0.1"));
2019-03-31 18:32:40 +00:00
menu.addMenuClickHandler(1, (pl, slot, item, action) -> {
double offset = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + (action.isRightClicked() ? -0.1F : 0.1F));
ArmorStand hologram = getArmorStand(projector);
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5);
hologram.teleport(l);
BlockStorage.addBlockInfo(projector, "offset", String.valueOf(offset));
openEditor(pl, projector);
return false;
2016-04-14 16:24:03 +00:00
});
menu.open(p);
}
}