Clean up BlockPlaceMods
This commit is contained in:
@@ -1,15 +1,7 @@
|
|||||||
package com.redstoner.modules.blockplacemods;
|
package com.redstoner.modules.blockplacemods;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
|
|
||||||
import com.nemez.cmdmgr.Command;
|
import com.nemez.cmdmgr.Command;
|
||||||
|
import com.redstoner.annotations.AutoRegisterListener;
|
||||||
import com.redstoner.annotations.Version;
|
import com.redstoner.annotations.Version;
|
||||||
import com.redstoner.misc.Main;
|
import com.redstoner.misc.Main;
|
||||||
import com.redstoner.misc.Utils;
|
import com.redstoner.misc.Utils;
|
||||||
@@ -18,9 +10,17 @@ import com.redstoner.modules.blockplacemods.mods.Mod;
|
|||||||
import com.redstoner.modules.blockplacemods.mods.ModAbstract;
|
import com.redstoner.modules.blockplacemods.mods.ModAbstract;
|
||||||
import com.redstoner.modules.blockplacemods.util.CommandException;
|
import com.redstoner.modules.blockplacemods.util.CommandException;
|
||||||
import com.redstoner.modules.blockplacemods.util.CommandMap;
|
import com.redstoner.modules.blockplacemods.util.CommandMap;
|
||||||
import com.redstoner.modules.blockplacemods.util.ThrowingSupplier;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
@Version(major = 3, minor = 1, revision = 0, compatible = 3)
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@AutoRegisterListener
|
||||||
|
@Version(major = 3, minor = 2, revision = 0, compatible = 3)
|
||||||
public final class BlockPlaceMods implements Module, Listener
|
public final class BlockPlaceMods implements Module, Listener
|
||||||
{
|
{
|
||||||
public static String PREFIX = ChatColor.GRAY + "[" + ChatColor.DARK_GREEN + "BPM" + ChatColor.GRAY + "]"
|
public static String PREFIX = ChatColor.GRAY + "[" + ChatColor.DARK_GREEN + "BPM" + ChatColor.GRAY + "]"
|
||||||
@@ -29,10 +29,10 @@ public final class BlockPlaceMods implements Module, Listener
|
|||||||
@Override
|
@Override
|
||||||
public boolean onEnable()
|
public boolean onEnable()
|
||||||
{
|
{
|
||||||
ModAbstract.constructAll();
|
ModAbstract.registerAll();
|
||||||
for (Mod mod : new ArrayList<>(ModAbstract.getMods().values()))
|
for (Mod mod : new ArrayList<>(ModAbstract.getMods().values()))
|
||||||
{
|
{
|
||||||
mod.register();
|
mod.registerListeners();
|
||||||
}
|
}
|
||||||
// CommandManager.registerCommand(getCommandString(), this, Main.plugin);
|
// CommandManager.registerCommand(getCommandString(), this, Main.plugin);
|
||||||
// Sorry but this stuff isn't working for me. Not gonna spend more time on it.
|
// Sorry but this stuff isn't working for me. Not gonna spend more time on it.
|
||||||
@@ -66,7 +66,7 @@ public final class BlockPlaceMods implements Module, Listener
|
|||||||
{
|
{
|
||||||
for (Mod mod : ModAbstract.getMods().values())
|
for (Mod mod : ModAbstract.getMods().values())
|
||||||
{
|
{
|
||||||
mod.unregister();
|
mod.unregisterListeners();
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -91,6 +91,7 @@ public final class BlockPlaceMods implements Module, Listener
|
|||||||
* "}\n" +
|
* "}\n" +
|
||||||
* "}\n";
|
* "}\n";
|
||||||
* } */
|
* } */
|
||||||
|
|
||||||
@Command(hook = "mod_empty")
|
@Command(hook = "mod_empty")
|
||||||
public void onModEmptyCommand(CommandSender sender)
|
public void onModEmptyCommand(CommandSender sender)
|
||||||
{
|
{
|
||||||
@@ -103,36 +104,36 @@ public final class BlockPlaceMods implements Module, Listener
|
|||||||
String[] args = new ArrayList<>(Arrays.asList(input.split(" "))).stream()
|
String[] args = new ArrayList<>(Arrays.asList(input.split(" "))).stream()
|
||||||
.filter(x -> x != null && !x.trim().isEmpty()).toArray(String[]::new);
|
.filter(x -> x != null && !x.trim().isEmpty()).toArray(String[]::new);
|
||||||
String prefix = PREFIX;
|
String prefix = PREFIX;
|
||||||
ThrowingSupplier<String> supplier;
|
String message;
|
||||||
if (args.length > 0)
|
|
||||||
{
|
try {
|
||||||
Mod target = ModAbstract.getMod(args[0].toLowerCase());
|
|
||||||
if (target != null)
|
if (args.length > 0) {
|
||||||
{
|
Mod target = ModAbstract.getMod(args[0].toLowerCase());
|
||||||
prefix += "&7[&2" + target.getName() + "&7]&a";
|
if (target != null) {
|
||||||
if (!(sender instanceof Player))
|
prefix += "&7[&2" + target.getName() + "&7]&a";
|
||||||
{
|
if (!(sender instanceof Player)) {
|
||||||
supplier = () -> "&cYou must be a player to use any block place mod";
|
message = "&cYou must be a player to use any block place mod";
|
||||||
}
|
} else {
|
||||||
else
|
message = target.runCommand((Player) sender, Arrays.copyOfRange(args, 1, args.length));
|
||||||
{
|
}
|
||||||
supplier = () -> target.runCommand((Player) sender, Arrays.copyOfRange(args, 1, args.length));
|
} else if (args[0].equalsIgnoreCase("help")) {
|
||||||
|
message = commandHelp(sender, args);
|
||||||
|
} else {
|
||||||
|
message = "&cThat argument could not be recognized";
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
message = commandHelp(sender, args);
|
||||||
}
|
}
|
||||||
else if (args[0].equalsIgnoreCase("help"))
|
|
||||||
{
|
} catch (CommandException ex) {
|
||||||
supplier = () -> commandHelp(sender, args);
|
message = " &c" + ex.getMessage();
|
||||||
}
|
} catch (Throwable t) {
|
||||||
else
|
message = " &cAn unexpected error occurred while executing this command.";
|
||||||
{
|
t.printStackTrace();
|
||||||
supplier = () -> "&cThat argument could not be recognized";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
Utils.sendMessage(sender, prefix, message, '&');
|
||||||
supplier = () -> commandHelp(sender, args);
|
|
||||||
}
|
|
||||||
handleCommand(sender, prefix, supplier);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String commandHelp(CommandSender sender, String[] args)
|
private String commandHelp(CommandSender sender, String[] args)
|
||||||
@@ -148,22 +149,4 @@ public final class BlockPlaceMods implements Module, Listener
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handleCommand(CommandSender sender, String prefix, ThrowingSupplier<String> supplier)
|
|
||||||
{
|
|
||||||
String message;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
message = " &a" + supplier.get();
|
|
||||||
}
|
|
||||||
catch (CommandException e)
|
|
||||||
{
|
|
||||||
message = " &c" + e.getMessage();
|
|
||||||
}
|
|
||||||
catch (Throwable t)
|
|
||||||
{
|
|
||||||
message = " &cAn unexpected error occurred while executing this command.";
|
|
||||||
t.printStackTrace();
|
|
||||||
}
|
|
||||||
Utils.sendMessage(sender, prefix, message, '&');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
package com.redstoner.modules.blockplacemods.mods;
|
||||||
|
|
||||||
|
import com.redstoner.modules.blockplacemods.util.CommandException;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
public interface Mod
|
||||||
|
|
||||||
import com.redstoner.modules.blockplacemods.util.CommandException;
|
|
||||||
|
|
||||||
public interface Mod<T>
|
|
||||||
{
|
{
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
@@ -18,7 +17,7 @@ public interface Mod<T>
|
|||||||
|
|
||||||
String runCommand(Player sender, String[] args) throws CommandException;
|
String runCommand(Player sender, String[] args) throws CommandException;
|
||||||
|
|
||||||
void register();
|
void registerListeners();
|
||||||
|
|
||||||
void unregister();
|
void unregisterListeners();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,21 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
package com.redstoner.modules.blockplacemods.mods;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.HandlerList;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
|
|
||||||
import com.redstoner.misc.Main;
|
import com.redstoner.misc.Main;
|
||||||
import com.redstoner.misc.Utils;
|
import com.redstoner.misc.Utils;
|
||||||
import com.redstoner.modules.datamanager.DataManager;
|
import com.redstoner.modules.datamanager.DataManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
|
||||||
public abstract class ModAbstract<T> implements Mod<T>, Listener
|
import java.util.*;
|
||||||
|
|
||||||
|
public abstract class ModAbstract implements Mod, Listener
|
||||||
{
|
{
|
||||||
private static final Map<String, Mod> mods = new HashMap<>();
|
private static final Map<String, Mod> mods = new HashMap<>();
|
||||||
|
private final String name;
|
||||||
|
private final Set<String> aliases;
|
||||||
|
|
||||||
public static Map<String, Mod> getMods()
|
public static Map<String, Mod> getMods()
|
||||||
{
|
{
|
||||||
@@ -29,45 +27,34 @@ public abstract class ModAbstract<T> implements Mod<T>, Listener
|
|||||||
return mods.get(name);
|
return mods.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void constructAll()
|
public static void registerMod(Mod mod) {
|
||||||
{
|
mods.put(mod.getName(), mod);
|
||||||
new ModBooleanCauldron();
|
for (String alias : mod.getAliases()) {
|
||||||
new ModBooleanPiston();
|
mods.putIfAbsent(alias, mod);
|
||||||
new ModBooleanStep();
|
|
||||||
new ModBooleanTorch();
|
|
||||||
new ModInventoryDropper();
|
|
||||||
new ModInventoryFurnace();
|
|
||||||
new ModInventoryHopper();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Set<String> aliases;
|
|
||||||
|
|
||||||
public ModAbstract()
|
|
||||||
{
|
|
||||||
preConstruction();
|
|
||||||
Utils.info("Loaded mod " + getName());
|
|
||||||
aliases = new HashSet<>();
|
|
||||||
aliases.add(getName());
|
|
||||||
mods.put(getName().toLowerCase(), this);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void preConstruction()
|
|
||||||
{}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void register()
|
|
||||||
{
|
|
||||||
for (String alias : aliases)
|
|
||||||
{
|
|
||||||
mods.putIfAbsent(alias.toLowerCase(), this);
|
|
||||||
}
|
}
|
||||||
Bukkit.getPluginManager().registerEvents(this, Main.plugin);
|
}
|
||||||
|
|
||||||
|
public static void registerAll()
|
||||||
|
{
|
||||||
|
registerMod(new ModToggledCauldron());
|
||||||
|
registerMod(new ModToggledPiston());
|
||||||
|
registerMod(new ModToggledStep());
|
||||||
|
registerMod(new ModToggledTorch());
|
||||||
|
registerMod(new ModInventory("dropper", InventoryType.DROPPER));
|
||||||
|
registerMod(new ModInventory("furnace", InventoryType.FURNACE));
|
||||||
|
registerMod(new ModInventory("hopper", InventoryType.HOPPER));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModAbstract(String name)
|
||||||
|
{
|
||||||
|
this.name = Objects.requireNonNull(name);
|
||||||
|
this.aliases = new HashSet<>(2);
|
||||||
|
Utils.info("Loaded mod " + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unregister()
|
public String getName() {
|
||||||
{
|
return name;
|
||||||
HandlerList.unregisterAll(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,6 +63,18 @@ public abstract class ModAbstract<T> implements Mod<T>, Listener
|
|||||||
return aliases;
|
return aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerListeners()
|
||||||
|
{
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, Main.plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void unregisterListeners()
|
||||||
|
{
|
||||||
|
HandlerList.unregisterAll(this);
|
||||||
|
}
|
||||||
|
|
||||||
protected void reset(Player player)
|
protected void reset(Player player)
|
||||||
{
|
{
|
||||||
DataManager.removeData(player.getUniqueId().toString(), "BlockPlaceMods", getName());
|
DataManager.removeData(player.getUniqueId().toString(), "BlockPlaceMods", getName());
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
package com.redstoner.modules.blockplacemods.mods;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import com.redstoner.modules.blockplacemods.util.CommandException;
|
||||||
|
import com.redstoner.modules.blockplacemods.util.ItemProperties;
|
||||||
|
import com.redstoner.modules.datamanager.DataManager;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -15,22 +16,17 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import com.redstoner.modules.blockplacemods.util.CommandException;
|
import java.util.Arrays;
|
||||||
import com.redstoner.modules.blockplacemods.util.ItemProperties;
|
|
||||||
import com.redstoner.modules.datamanager.DataManager;
|
|
||||||
|
|
||||||
public abstract class ModInventoryAbstract extends ModAbstract<ItemStack[]>
|
public class ModInventory extends ModAbstract
|
||||||
{
|
{
|
||||||
protected InventoryType inventoryType;
|
protected InventoryType inventoryType;
|
||||||
|
|
||||||
@Override
|
public ModInventory(String name, InventoryType inventoryType) {
|
||||||
protected void preConstruction()
|
super(name);
|
||||||
{
|
this.inventoryType = inventoryType;
|
||||||
inventoryType = getInventoryType();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract InventoryType getInventoryType();
|
|
||||||
|
|
||||||
private static int highestUsedIndex(ItemStack[] items)
|
private static int highestUsedIndex(ItemStack[] items)
|
||||||
{
|
{
|
||||||
for (int i = items.length - 1; i >= 0; i--)
|
for (int i = items.length - 1; i >= 0; i--)
|
||||||
@@ -80,16 +76,12 @@ public abstract class ModInventoryAbstract extends ModAbstract<ItemStack[]>
|
|||||||
item = null;
|
item = null;
|
||||||
if (present(sender))
|
if (present(sender))
|
||||||
{
|
{
|
||||||
ItemStack[] data = get(sender);
|
set(sender, slot, null);
|
||||||
data[slot] = null;
|
|
||||||
set(sender, data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ItemStack[] data = get(sender);
|
set(sender, slot, item);// don't need to clone because the reference isn't kept
|
||||||
data[slot] = item.clone();
|
|
||||||
set(sender, data);
|
|
||||||
}
|
}
|
||||||
String itemName = item == null ? "nothing"
|
String itemName = item == null ? "nothing"
|
||||||
: item.getAmount() + " " + item.getType().toString().toLowerCase().replace("_", "");
|
: item.getAmount() + " " + item.getType().toString().toLowerCase().replace("_", "");
|
||||||
@@ -137,19 +129,33 @@ public abstract class ModInventoryAbstract extends ModAbstract<ItemStack[]>
|
|||||||
{
|
{
|
||||||
Object obj = DataManager.getData(player.getUniqueId().toString(), "BlockPlaceMods", getName());
|
Object obj = DataManager.getData(player.getUniqueId().toString(), "BlockPlaceMods", getName());
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
return new ItemStack[inventoryType.getDefaultSize()];
|
return getDefault();
|
||||||
JSONArray array = (JSONArray) obj;
|
JSONArray array = (JSONArray) obj;
|
||||||
ArrayList<ItemStack> items = new ArrayList<ItemStack>();
|
|
||||||
for (Object obj2 : array.toArray())
|
ItemStack[] items = new ItemStack[Math.min(inventoryType.getDefaultSize(), array.size())];
|
||||||
{
|
for (int i = 0, n = items.length; i < n; i++) {
|
||||||
items.add((new ItemProperties()).loadFrom((JSONObject) obj2).toItemStack());
|
Object obj2 = array.get(i);
|
||||||
|
if (obj2 instanceof JSONObject) { // if null, items[i] remains null
|
||||||
|
items[i] = new ItemProperties().loadFrom((JSONObject) obj2).toItemStack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ItemStack[] itemArray = new ItemStack[array.size()];
|
|
||||||
for (int i = 0; i < itemArray.length; i++)
|
return items;
|
||||||
{
|
}
|
||||||
itemArray[i] = items.get(i);
|
|
||||||
|
protected void set(Player player, int index, ItemStack item) {
|
||||||
|
ItemStack[] data = get(player);
|
||||||
|
if (item == null) {
|
||||||
|
if (index < data.length) {
|
||||||
|
data[index] = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (index >= data.length) {
|
||||||
|
data = Arrays.copyOf(data, index + 1);
|
||||||
|
}
|
||||||
|
data[index] = item;
|
||||||
}
|
}
|
||||||
return itemArray;
|
set(player, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void set(Player player, ItemStack[] data)
|
protected void set(Player player, ItemStack[] data)
|
||||||
@@ -159,9 +165,9 @@ public abstract class ModInventoryAbstract extends ModAbstract<ItemStack[]>
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
JSONArray array = new JSONArray();
|
JSONArray array = new JSONArray();
|
||||||
for (ItemStack stack : data)
|
for (int i = 0, n = highestUsedIndex(data); i < n; i++) {
|
||||||
{
|
ItemStack item = data[i];
|
||||||
array.add((new ItemProperties(stack)).toJSONObject());
|
array.add(item == null ? null : new ItemProperties(item).toJSONObject());
|
||||||
}
|
}
|
||||||
DataManager.setData(player.getUniqueId().toString(), "BlockPlaceMods", getName(), array);
|
DataManager.setData(player.getUniqueId().toString(), "BlockPlaceMods", getName(), array);
|
||||||
}
|
}
|
||||||
@@ -171,4 +177,10 @@ public abstract class ModInventoryAbstract extends ModAbstract<ItemStack[]>
|
|||||||
{
|
{
|
||||||
return get(player) != null;
|
return get(player) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack[] getDefault() {
|
||||||
|
return new ItemStack[0];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
|
||||||
|
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
|
||||||
|
|
||||||
public class ModInventoryDropper extends ModInventoryAbstract
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return "Dropper";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected InventoryType getInventoryType()
|
|
||||||
{
|
|
||||||
return InventoryType.DROPPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
|
||||||
|
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
|
||||||
|
|
||||||
public class ModInventoryFurnace extends ModInventoryAbstract
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return "Furnace";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected InventoryType getInventoryType()
|
|
||||||
{
|
|
||||||
return InventoryType.FURNACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
|
||||||
|
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
|
||||||
|
|
||||||
public class ModInventoryHopper extends ModInventoryAbstract
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String getName()
|
|
||||||
{
|
|
||||||
return "Hopper";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected InventoryType getInventoryType()
|
|
||||||
{
|
|
||||||
return InventoryType.HOPPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,16 +5,18 @@ import org.bukkit.entity.Player;
|
|||||||
import com.redstoner.modules.blockplacemods.util.CommandException;
|
import com.redstoner.modules.blockplacemods.util.CommandException;
|
||||||
import com.redstoner.modules.datamanager.DataManager;
|
import com.redstoner.modules.datamanager.DataManager;
|
||||||
|
|
||||||
public abstract class ModBooleanAbstract extends ModAbstract<Boolean>
|
public abstract class ModToggledAbstract extends ModAbstract
|
||||||
{
|
{
|
||||||
protected boolean enabledByDefault;
|
protected boolean enabledByDefault;
|
||||||
|
|
||||||
protected abstract boolean enabledByDefault();
|
public ModToggledAbstract(String name, boolean enabledByDefault) {
|
||||||
|
super(name);
|
||||||
|
this.enabledByDefault = enabledByDefault;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void preConstruction()
|
public Boolean getDefault() {
|
||||||
{
|
return enabledByDefault;
|
||||||
enabledByDefault = enabledByDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean hasEnabled(Player player)
|
protected boolean hasEnabled(Player player)
|
||||||
@@ -27,7 +29,7 @@ public abstract class ModBooleanAbstract extends ModAbstract<Boolean>
|
|||||||
{
|
{
|
||||||
if (enabled == hasEnabled(sender))
|
if (enabled == hasEnabled(sender))
|
||||||
return false;
|
return false;
|
||||||
if (enabled == (boolean) getDefault())
|
if (enabled == enabledByDefault)
|
||||||
reset(sender);
|
reset(sender);
|
||||||
else
|
else
|
||||||
DataManager.setData(sender.getUniqueId().toString(), "BlockPlaceMods", getName(), enabled);
|
DataManager.setData(sender.getUniqueId().toString(), "BlockPlaceMods", getName(), enabled);
|
||||||
@@ -8,12 +8,11 @@ import org.bukkit.event.block.Action;
|
|||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
|
||||||
public class ModBooleanCauldron extends ModBooleanAbstract
|
public class ModToggledCauldron extends ModToggledAbstract
|
||||||
{
|
{
|
||||||
@Override
|
|
||||||
public String getName()
|
public ModToggledCauldron() {
|
||||||
{
|
super("cauldron", false);
|
||||||
return "Cauldron";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -22,12 +21,6 @@ public class ModBooleanCauldron extends ModBooleanAbstract
|
|||||||
return "fills cauldrons upon placement and cycles upon right click";
|
return "fills cauldrons upon placement and cycles upon right click";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean enabledByDefault()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerInteract(PlayerInteractEvent event)
|
public void onPlayerInteract(PlayerInteractEvent event)
|
||||||
{
|
{
|
||||||
@@ -49,9 +42,4 @@ public class ModBooleanCauldron extends ModBooleanAbstract
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -9,12 +9,11 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
|
||||||
public class ModBooleanPiston extends ModBooleanAbstract
|
public class ModToggledPiston extends ModToggledAbstract
|
||||||
{
|
{
|
||||||
@Override
|
|
||||||
public String getName()
|
public ModToggledPiston() {
|
||||||
{
|
super("piston", false);
|
||||||
return "Piston";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -23,12 +22,6 @@ public class ModBooleanPiston extends ModBooleanAbstract
|
|||||||
return "makes pistons face the block you placed it against";
|
return "makes pistons face the block you placed it against";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean enabledByDefault()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
@@ -67,9 +60,4 @@ public class ModBooleanPiston extends ModBooleanAbstract
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -5,16 +5,12 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
|
||||||
public class ModBooleanStep extends ModBooleanAbstract
|
public class ModToggledStep extends ModToggledAbstract
|
||||||
{
|
{
|
||||||
{
|
|
||||||
getAliases().add("Slab");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public ModToggledStep() {
|
||||||
public String getName()
|
super("step", true);
|
||||||
{
|
getAliases().add("Slab");
|
||||||
return "Step";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -23,12 +19,6 @@ public class ModBooleanStep extends ModBooleanAbstract
|
|||||||
return "turns steps upside-down upon placement";
|
return "turns steps upside-down upon placement";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean enabledByDefault()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
@@ -47,9 +37,4 @@ public class ModBooleanStep extends ModBooleanAbstract
|
|||||||
return block == Material.STEP || block == Material.STONE_SLAB2;
|
return block == Material.STEP || block == Material.STONE_SLAB2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
package com.redstoner.modules.blockplacemods.mods;
|
package com.redstoner.modules.blockplacemods.mods;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import com.redstoner.misc.Main;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -14,20 +11,17 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
|
||||||
import com.redstoner.misc.Main;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class ModBooleanTorch extends ModBooleanAbstract
|
public class ModToggledTorch extends ModToggledAbstract
|
||||||
{
|
{
|
||||||
{
|
|
||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, this::updateTorches, 2, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Set<Block> torchesPlaced = new HashSet<>();
|
private final Set<Block> torchesPlaced = new HashSet<>();
|
||||||
|
|
||||||
@Override
|
public ModToggledTorch() {
|
||||||
public String getName()
|
super("torch", true);
|
||||||
{
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.plugin, this::updateTorches, 2, 2);
|
||||||
return "Torch";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,12 +30,6 @@ public class ModBooleanTorch extends ModBooleanAbstract
|
|||||||
return "removes redstone torches placed against a redstone block";
|
return "removes redstone torches placed against a redstone block";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean enabledByDefault()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onBlockPlace(BlockPlaceEvent event)
|
public void onBlockPlace(BlockPlaceEvent event)
|
||||||
{
|
{
|
||||||
@@ -98,9 +86,4 @@ public class ModBooleanTorch extends ModBooleanAbstract
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDefault()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user