Initial RS-MobStand commit

This commit is contained in:
BigPappa committed 2026-06-07 12:11:50 -05:00
commit 73f9d3a155
27 files changed
+5203

No files matched your search

@@ -0,0 +1,369 @@
package com.rsscripting.mobstand.gui;
import com.rsscripting.mobstand.RSMobStandPlugin;
import com.rsscripting.mobstand.managers.StandManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
import java.util.Collections;
import java.util.List;
public class StandMenu {
public static final String MENU_TITLE =
ChatColor.BLUE + "RS MobStand";
public static void open(
RSMobStandPlugin plugin,
Player player,
ArmorStand armorStand
) {
Inventory inventory =
Bukkit.createInventory(
new RSMenuHolder(
"MAIN"
),
18,
MENU_TITLE
);
StandManager standManager =
plugin.getStandManager();
double radius =
standManager.getRadius(armorStand);
int maxRadius =
plugin.getConfig()
.getInt(
"max-player-scan-radius"
);
radius =
Math.min(
radius,
maxRadius
);
standManager.setRadius(
armorStand,
radius
);
boolean gravity =
standManager.hasGravity(armorStand);
boolean paused =
standManager.isPaused(armorStand);
ItemStack filler =
new ItemStack(Material.WHITE_STAINED_GLASS_PANE);
ItemMeta fillerMeta =
filler.getItemMeta();
if (fillerMeta != null) {
fillerMeta.setDisplayName(" ");
filler.setItemMeta(fillerMeta);
}
for (int i = 0; i < inventory.getSize(); i++) {
inventory.setItem(i, filler);
}
// Convert back item
ItemStack revertItem =
new ItemStack(Material.COMPOSTER);
ItemMeta revertMeta =
revertItem.getItemMeta();
if (revertMeta != null) {
revertMeta.setDisplayName(
ChatColor.RED
+ "Convert Back to Armor Stand"
);
revertMeta.setLore(
Collections.singletonList(
ChatColor.GRAY
+ "Remove MobStand functionality."
)
);
revertItem.setItemMeta(revertMeta);
}
inventory.setItem(2, revertItem);
/*
|--------------------------------------------------------------------------
| ADMIN MENU
|--------------------------------------------------------------------------
*/
if (player.isOp()) {
ItemStack adminItem =
new ItemStack(
Material.COMMAND_BLOCK
);
ItemMeta adminMeta =
adminItem.getItemMeta();
if (adminMeta != null) {
adminMeta.setDisplayName(
ChatColor.GOLD
+ "Admin"
);
adminMeta.setLore(
java.util.Collections.singletonList(
"§7Administrative options."
)
);
adminItem.setItemMeta(
adminMeta
);
}
inventory.setItem(
4,
adminItem
);
}
// Pause item
ItemStack pauseItem =
new ItemStack(
paused
? Material.RED_DYE
: Material.GREEN_DYE
);
ItemMeta pauseMeta =
pauseItem.getItemMeta();
if (pauseMeta != null) {
pauseMeta.setDisplayName(
paused
? ChatColor.GREEN + "Enable Processing"
: ChatColor.RED + "Disable Processing"
);
pauseMeta.setLore(List.of(
paused
? ChatColor.GRAY
+ "Click to resume processing."
: ChatColor.GRAY
+ "Click to pause processing."
));
pauseMeta.addItemFlags(
ItemFlag.HIDE_ATTRIBUTES
);
pauseItem.setItemMeta(pauseMeta);
}
inventory.setItem(6, pauseItem);
// Adult filters item
ItemStack adultFilters =
new ItemStack(Material.BEEF);
ItemMeta adultMeta =
adultFilters.getItemMeta();
if (adultMeta != null) {
adultMeta.setDisplayName(
ChatColor.YELLOW
+ "Adult Filters"
);
adultMeta.setLore(List.of(
ChatColor.YELLOW
+ "Configure adult mob filters."
));
adultFilters.setItemMeta(adultMeta);
}
inventory.setItem(15, adultFilters);
// Baby filters item
ItemStack babyFilters =
new ItemStack(Material.BEE_SPAWN_EGG);
ItemMeta babyMeta =
babyFilters.getItemMeta();
if (babyMeta != null) {
babyMeta.setDisplayName(
ChatColor.YELLOW
+ "Baby Filters"
);
babyMeta.setLore(List.of(
ChatColor.YELLOW
+ "Configure baby mob filters."
));
babyFilters.setItemMeta(babyMeta);
}
inventory.setItem(17, babyFilters);
// Leave Alive item
int leaveAlive =
standManager.getLeaveAlive(
armorStand
);
ItemStack leaveAliveItem =
new ItemStack(
Material.TOTEM_OF_UNDYING
);
ItemMeta leaveAliveMeta =
leaveAliveItem.getItemMeta();
if (leaveAliveMeta != null) {
leaveAliveMeta.setDisplayName(
ChatColor.YELLOW
+ "Leave Alive:"
);
leaveAliveMeta.setLore(List.of(
ChatColor.GRAY
+ "Current: "
+ ChatColor.WHITE
+ leaveAlive,
"",
ChatColor.YELLOW
+ "Click to adjust."
));
leaveAliveItem.setItemMeta(leaveAliveMeta);
}
inventory.setItem(13, leaveAliveItem);
// Radius item
ItemStack radiusItem =
new ItemStack(
Material.COMPASS
);
ItemMeta radiusMeta =
radiusItem.getItemMeta();
if (radiusMeta != null) {
radiusMeta.setDisplayName(
ChatColor.YELLOW
+ "Scan Radius"
);
radiusMeta.setLore(List.of(
ChatColor.GRAY
+ "Current: "
+ ChatColor.WHITE
+ (int) radius,
"",
ChatColor.YELLOW
+ "Click to adjust radius."
));
radiusItem.setItemMeta(radiusMeta);
}
inventory.setItem(9, radiusItem);
ItemStack gravityItem =
new ItemStack(Material.FEATHER);
ItemMeta gravityMeta =
gravityItem.getItemMeta();
if (gravityMeta != null) {
gravityMeta.setDisplayName(
(gravity
? ChatColor.GREEN
: ChatColor.RED)
+ "Gravity"
);
gravityMeta.setLore(List.of(
ChatColor.GRAY + "Current: "
+ (gravity
? ChatColor.GREEN + "Enabled"
: ChatColor.RED + "Disabled"),
"",
ChatColor.YELLOW + "Left Click: Toggle"
));
// Add enchant glow if gravity enabled
if (gravity) {
gravityMeta.addEnchant(
Enchantment.UNBREAKING,
1,
true
);
gravityMeta.addItemFlags(
ItemFlag.HIDE_ENCHANTS
);
}
gravityItem.setItemMeta(gravityMeta);
}
inventory.setItem(11, gravityItem);
player.openInventory(inventory);
}
}