Converted Modules to gradle
This commit is contained in:
12
src/main/java/com/redstoner/modules/cycle/Cycle.cmd
Normal file
12
src/main/java/com/redstoner/modules/cycle/Cycle.cmd
Normal file
@@ -0,0 +1,12 @@
|
||||
command cycle {
|
||||
on {
|
||||
help Turns on cycle;
|
||||
type player;
|
||||
run cycle_on;
|
||||
}
|
||||
off {
|
||||
help Turns off cycle;
|
||||
type player;
|
||||
run cycle_off;
|
||||
}
|
||||
}
|
||||
142
src/main/java/com/redstoner/modules/cycle/Cycle.java
Normal file
142
src/main/java/com/redstoner/modules/cycle/Cycle.java
Normal file
@@ -0,0 +1,142 @@
|
||||
package com.redstoner.modules.cycle;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.json.simple.JSONArray;
|
||||
|
||||
import com.nemez.cmdmgr.Command;
|
||||
import com.redstoner.annotations.AutoRegisterListener;
|
||||
import com.redstoner.annotations.Commands;
|
||||
import com.redstoner.annotations.Version;
|
||||
import com.redstoner.misc.CommandHolderType;
|
||||
import com.redstoner.misc.JsonManager;
|
||||
import com.redstoner.misc.Main;
|
||||
import com.redstoner.modules.Module;
|
||||
|
||||
@Commands(CommandHolderType.File)
|
||||
@AutoRegisterListener
|
||||
@Version(major = 4, minor = 1, revision = 0, compatible = 4)
|
||||
public class Cycle implements Module, Listener
|
||||
{
|
||||
private File cycleFile = new File(Main.plugin.getDataFolder(), "cycle.json");
|
||||
private JSONArray no_cyclers;
|
||||
|
||||
@Override
|
||||
public boolean onEnable()
|
||||
{
|
||||
no_cyclers = JsonManager.getArray(cycleFile);
|
||||
if (no_cyclers == null)
|
||||
no_cyclers = new JSONArray();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable()
|
||||
{
|
||||
saveCyclers();
|
||||
}
|
||||
|
||||
private void saveCyclers()
|
||||
{
|
||||
JsonManager.save(no_cyclers, cycleFile);
|
||||
}
|
||||
|
||||
@Command(hook = "cycle_on")
|
||||
public boolean cycleOn(CommandSender sender)
|
||||
{
|
||||
UUID uid = ((Player) sender).getUniqueId();
|
||||
if (no_cyclers.remove(uid.toString()))
|
||||
{
|
||||
getLogger().message(sender, "Cycle enabled!");
|
||||
saveCyclers();
|
||||
}
|
||||
else
|
||||
getLogger().message(sender, "Cycle was already enabled!");
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Command(hook = "cycle_off")
|
||||
public boolean cycleOff(CommandSender sender)
|
||||
{
|
||||
UUID uid = ((Player) sender).getUniqueId();
|
||||
if (!no_cyclers.contains(uid.toString()))
|
||||
{
|
||||
getLogger().message(sender, "Cycle disabled!");
|
||||
no_cyclers.add(uid.toString());
|
||||
saveCyclers();
|
||||
}
|
||||
else
|
||||
getLogger().message(sender, "Cycle was already disabled!");
|
||||
return true;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryCycle(PlayerItemHeldEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
UUID uid = player.getUniqueId();
|
||||
if (!player.getGameMode().equals(GameMode.CREATIVE) || player.isSneaking()
|
||||
|| no_cyclers.contains(uid.toString()))
|
||||
return;
|
||||
int prev_slot = event.getPreviousSlot();
|
||||
int new_slot = event.getNewSlot();
|
||||
if (prev_slot == 0 && new_slot == 8)
|
||||
shift(player, false);
|
||||
else if (prev_slot == 8 && new_slot == 0)
|
||||
shift(player, true);
|
||||
}
|
||||
|
||||
private void shift(Player player, boolean down)
|
||||
{
|
||||
Inventory inv = player.getInventory();
|
||||
ItemStack[] items = inv.getStorageContents();
|
||||
int shift = down ? -9 : 9;
|
||||
shift = (shift + items.length) % items.length;
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
items = join(subset(items, shift, items.length), subset(items, 0, shift));
|
||||
ItemStack[] hotbar = subset(items, 0, 9);
|
||||
boolean found = false;
|
||||
for (ItemStack item : hotbar)
|
||||
if (item != null)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (found)
|
||||
break;
|
||||
}
|
||||
inv.setStorageContents(items);
|
||||
}
|
||||
|
||||
private ItemStack[] subset(ItemStack[] items, int start, int end)
|
||||
{
|
||||
ItemStack[] result = new ItemStack[end - start];
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
result[i - start] = items[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private ItemStack[] join(ItemStack[] items1, ItemStack[] items2)
|
||||
{
|
||||
ItemStack[] result = new ItemStack[items1.length + items2.length];
|
||||
for (int i = 0; i < items1.length; i++)
|
||||
result[i] = items1[i];
|
||||
int offset = items1.length;
|
||||
for (int i = 0; i < items2.length; i++)
|
||||
result[i + offset] = items2[i];
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user