Fully implemented and bug-free version of Filter and Vacuum Cubes
This commit is contained in:
parent
71c1d51d76
commit
68cf1f8500
Binary file not shown.
@ -3838,6 +3838,7 @@ public class GenericFunctions {
|
||||
public static boolean giveItem(Player p, ItemStack... items) {
|
||||
HashMap<Integer,ItemStack> remaining = p.getInventory().addItem(items);
|
||||
if (remaining.isEmpty()) {
|
||||
SoundUtils.playLocalSound(p, Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
return true;
|
||||
} else {
|
||||
for (Integer i : remaining.keySet()) {
|
||||
|
||||
@ -1,5 +1,34 @@
|
||||
package sig.plugin.TwosideKeeper.HelperStructures;
|
||||
|
||||
import sig.plugin.TwosideKeeper.TwosideKeeper;
|
||||
|
||||
public enum CubeType {
|
||||
NORMAL,LARGE,ENDER,VACUUM
|
||||
NORMAL(0,9),LARGE(1,27),ENDER(2,27),VACUUM(3,54),FILTER(4,27);
|
||||
|
||||
int id=0;
|
||||
int size=9;
|
||||
|
||||
private CubeType(int id, int size) {
|
||||
this.id=id;
|
||||
this.size=size;
|
||||
}
|
||||
|
||||
public int getID() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return this.size;
|
||||
}
|
||||
|
||||
public static CubeType getCubeTypeFromID(int id) {
|
||||
for (CubeType ct : CubeType.values()) {
|
||||
if (ct.getID()==id) {
|
||||
return ct;
|
||||
}
|
||||
}
|
||||
TwosideKeeper.log("INVALID CUBE ID SPECIFIED: "+id+". THIS SHOULD NOT BE HAPPENING!", 0);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -50,6 +50,7 @@ public class CustomItem {
|
||||
TwosideKeeper.ENDER_ITEM_CUBE_RECIPE = EnderItemCubeRecipe();
|
||||
TwosideKeeper.DUPLICATE_ENDER_ITEM_CUBE_RECIPE = DuplicateEnderItemCubeRecipe();
|
||||
TwosideKeeper.VACUUM_CUBE_RECIPE = VacuumCubeRecipe();
|
||||
TwosideKeeper.FILTER_CUBE_RECIPE = FilterCubeRecipe();
|
||||
TwosideKeeper.ARROW_QUIVER_RECIPE = ArrowQuiverRecipe();
|
||||
TwosideKeeper.HARDENED_IRON_HELMET_RECIPE = HardenedRecipe(Material.IRON_HELMET,Material.IRON_BLOCK,"aaa","axa","xxx");
|
||||
TwosideKeeper.HARDENED_IRON_CHESTPLATE_RECIPE = HardenedRecipe(Material.IRON_CHESTPLATE,Material.IRON_BLOCK,"axa","aaa","aaa");
|
||||
@ -142,6 +143,30 @@ public class CustomItem {
|
||||
ItemCube.addIngredient(Material.REDSTONE_BLOCK);
|
||||
return ItemCube;
|
||||
}
|
||||
|
||||
private static ShapelessRecipe FilterCubeRecipe() {
|
||||
ItemStack item_FilterCube = FilterCube();
|
||||
|
||||
ShapelessRecipe FilterCube = new ShapelessRecipe(item_FilterCube);
|
||||
FilterCube.addIngredient(Material.CHEST);
|
||||
FilterCube.addIngredient(Material.HOPPER);
|
||||
FilterCube.addIngredient(4,Material.DIAMOND_BLOCK);
|
||||
FilterCube.addIngredient(3,Material.IRON_BLOCK);
|
||||
return FilterCube;
|
||||
}
|
||||
|
||||
private static ItemStack FilterCube() {
|
||||
ItemStack item_FilterCube = new ItemStack(Material.HOPPER_MINECART);
|
||||
List<String> item_FilterCube_lore = new ArrayList<String>();
|
||||
item_FilterCube_lore.add("A storage container that holds up");
|
||||
item_FilterCube_lore.add("to 27 items. Shift-Right click to");
|
||||
item_FilterCube_lore.add("open up a filtered item list.");
|
||||
ItemMeta item_FilterCube_meta=item_FilterCube.getItemMeta();
|
||||
item_FilterCube_meta.setLore(item_FilterCube_lore);
|
||||
item_FilterCube_meta.setDisplayName(ChatColor.GREEN+""+ChatColor.BOLD+"Filter Cube");
|
||||
item_FilterCube.setItemMeta(item_FilterCube_meta);
|
||||
return item_FilterCube.clone();
|
||||
}
|
||||
|
||||
private static ShapelessRecipe WorldShopRecipe() {
|
||||
ItemStack item_worldShop = WorldShop();
|
||||
@ -563,4 +588,11 @@ public class CustomItem {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isFilterCube(ItemStack item) {
|
||||
if (ItemUtils.isValidLoreItem(item) && ItemUtils.LoreContains(item, "open up a filtered item list.")) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package sig.plugin.TwosideKeeper.HelperStructures.Utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ArrayUtils {
|
||||
|
||||
@ -55,4 +55,33 @@ public class InventoryUtils {
|
||||
}
|
||||
return remaining;
|
||||
}
|
||||
public static boolean isCarryingFilterCube(Player p) {
|
||||
for (ItemStack items : p.getInventory().getContents()) {
|
||||
if (items!=null && CustomItem.isFilterCube(items)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static ItemStack[] insertItemsInFilterCube(Player p,ItemStack...items) {
|
||||
ItemStack[] remaining = items;
|
||||
for (ItemStack itemStacks : p.getInventory().getContents()) {
|
||||
if (itemStacks!=null && CustomItem.isFilterCube(itemStacks)) {
|
||||
//Insert as many items as possible in here.
|
||||
int id = Integer.parseInt(ItemUtils.GetLoreLineContainingString(itemStacks, ChatColor.DARK_PURPLE+"ID#").split("#")[1]);
|
||||
List<ItemStack> itemCubeContents = TwosideKeeper.itemCube_loadConfig(id);
|
||||
Inventory virtualinventory = Bukkit.createInventory(p, 27);
|
||||
for (int i=0;i<virtualinventory.getSize();i++) {
|
||||
if (itemCubeContents.get(i)!=null) {
|
||||
virtualinventory.setItem(i, itemCubeContents.get(i));
|
||||
}
|
||||
}
|
||||
//THIS IS WHERE YOU DO THE FILTERING.
|
||||
HashMap<Integer,ItemStack> remainingitems = ItemCubeUtils.AttemptingToAddItemToFilterCube(id,virtualinventory,remaining);
|
||||
|
||||
remaining = remainingitems.values().toArray(new ItemStack[0]);
|
||||
}
|
||||
}
|
||||
return remaining;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,73 @@
|
||||
package sig.plugin.TwosideKeeper.HelperStructures.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Hopper;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import sig.plugin.TwosideKeeper.TwosideKeeper;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.ItemCube;
|
||||
|
||||
public class ItemCubeUtils {
|
||||
public static int getItemCubeID(ItemStack item) {
|
||||
return Integer.parseInt(ItemUtils.GetLoreLineContainingString(item, ChatColor.DARK_PURPLE+"ID#").split("#")[1]);
|
||||
}
|
||||
public static Location getFilterCubeLoc(int id) {
|
||||
int posx = id % 960;
|
||||
int posy = 64;
|
||||
int posz = id / 960;
|
||||
return new Location(Bukkit.getWorld("FilterCube"),posx,posy,posz);
|
||||
}
|
||||
public static Block getFilterCubeBlock(int id) {
|
||||
Block b = Bukkit.getWorld("FilterCube").getBlockAt(getFilterCubeLoc(id));
|
||||
return b;
|
||||
}
|
||||
public static Hopper getFilterCubeHopper(int id) {
|
||||
Hopper h = (Hopper)Bukkit.getWorld("FilterCube").getBlockAt(getFilterCubeLoc(id)).getState();
|
||||
return h;
|
||||
}
|
||||
public static void createNewFilterCube(int id) {
|
||||
Block b = getFilterCubeBlock(id);
|
||||
b.getWorld().getBlockAt(getFilterCubeLoc(id)).setType(Material.HOPPER);
|
||||
}
|
||||
public static HashMap<Integer, ItemStack> AttemptingToAddItemToFilterCube(int id, Inventory cube_inv, ItemStack[] remaining) {
|
||||
Hopper h = getFilterCubeHopper(id);
|
||||
Inventory inv = h.getInventory();
|
||||
HashMap<Integer,ItemStack> reject_items = new HashMap<Integer,ItemStack>();
|
||||
for (ItemStack it : remaining) {
|
||||
if (it!=null) {
|
||||
if (inv.containsAtLeast(it, 1)) {
|
||||
HashMap<Integer,ItemStack> extras = cube_inv.addItem(it);
|
||||
if (extras.size()==0) {
|
||||
List<ItemStack> itemslist = new ArrayList<ItemStack>();
|
||||
for (int i=0;i<cube_inv.getSize();i++) {
|
||||
itemslist.add(cube_inv.getItem(i));
|
||||
}
|
||||
ItemCube.addToViewersOfItemCube(id,remaining,null);
|
||||
TwosideKeeper.itemCube_saveConfig(id, itemslist);
|
||||
} else {
|
||||
for (ItemStack i : extras.values()) {
|
||||
reject_items.put(reject_items.size(), i);
|
||||
List<ItemStack> itemslist = new ArrayList<ItemStack>();
|
||||
for (int j=0;j<cube_inv.getSize();j++) {
|
||||
itemslist.add(cube_inv.getItem(j));
|
||||
}
|
||||
TwosideKeeper.itemCube_saveConfig(id, itemslist);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
reject_items.put(reject_items.size(), it);
|
||||
}
|
||||
}
|
||||
}
|
||||
return reject_items;
|
||||
}
|
||||
}
|
||||
@ -24,11 +24,13 @@ import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.block.DoubleChest;
|
||||
import org.bukkit.block.Hopper;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -136,6 +138,7 @@ import org.bukkit.event.world.ChunkUnloadEvent;
|
||||
import org.bukkit.event.world.WorldSaveEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
@ -188,8 +191,10 @@ import sig.plugin.TwosideKeeper.HelperStructures.Common.RecipeCategory;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Common.RecipeLinker;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Effects.EarthWaveTask;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Effects.LavaPlume;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.ArrayUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.BlockUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.InventoryUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.ItemCubeUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.ItemUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.SoundUtils;
|
||||
import sig.plugin.TwosideKeeper.HelperStructures.Utils.TimeUtils;
|
||||
@ -654,6 +659,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
runServerHeartbeat.runVacuumCubeSuckup(p);
|
||||
runServerHeartbeat.runFilterCubeCollection(p);
|
||||
}
|
||||
}
|
||||
|
||||
@ -705,7 +711,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
Recipes.Initialize_CustomArrow_Recipes();
|
||||
Recipes.Initialize_NotchApple_Recipe();
|
||||
|
||||
//Bukkit.createWorld(new WorldCreator("ItemCube"));
|
||||
Bukkit.createWorld(new WorldCreator("FilterCube"));
|
||||
|
||||
filesave=getDataFolder(); //Store the location of where our data folder is.
|
||||
log("Data folder at "+filesave+".",3);
|
||||
@ -3223,7 +3229,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
if (ev.getCurrentItem().hasItemMeta()) {
|
||||
ItemMeta item_meta = ev.getCurrentItem().getItemMeta();
|
||||
if (item_meta.getDisplayName()!=null &&
|
||||
(item_meta.getDisplayName().contains("Item Cube") || item_meta.getDisplayName().contains("Vacuum Cube"))) {
|
||||
(item_meta.getDisplayName().contains("Item Cube") || item_meta.getDisplayName().contains("Vacuum Cube")
|
||||
|| item_meta.getDisplayName().contains("Filter Cube"))) {
|
||||
if (ev.isShiftClick()) {
|
||||
ev.setCancelled(true);
|
||||
} else {
|
||||
@ -3234,14 +3241,16 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
item_lore.add(ChatColor.DARK_PURPLE+"ID#"+ITEMCUBEID);
|
||||
item_meta.setLore(item_lore);
|
||||
ev.getCurrentItem().setItemMeta(item_meta);
|
||||
if (ev.getCurrentItem().getItemMeta().getDisplayName().contains("Ender Item Cube")) {
|
||||
ev.getCurrentItem().setAmount(2);
|
||||
}
|
||||
CubeType cubetype;
|
||||
if (ev.getCurrentItem().getItemMeta().getDisplayName().contains("Filter Cube")) {
|
||||
cubetype=CubeType.FILTER;
|
||||
ItemCubeUtils.createNewFilterCube(ITEMCUBEID);
|
||||
} else
|
||||
if (ev.getCurrentItem().getItemMeta().getDisplayName().contains("Vacuum Cube")) {
|
||||
cubetype=CubeType.VACUUM;
|
||||
} else
|
||||
if (ev.getCurrentItem().getItemMeta().getDisplayName().contains("Ender Item Cube")) {
|
||||
ev.getCurrentItem().setAmount(2);
|
||||
cubetype=CubeType.ENDER;
|
||||
} else if (ev.getCurrentItem().getItemMeta().getDisplayName().contains("Large Item Cube")) {
|
||||
cubetype=CubeType.LARGE;
|
||||
@ -3541,12 +3550,16 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(this,new DropDeathItems(p,list,deathloc),1);
|
||||
|
||||
}
|
||||
|
||||
PlayerStructure pd = (PlayerStructure) playerdata.get(p.getUniqueId());
|
||||
pd.isViewingInventory=false;
|
||||
log("Closed Inventory.",5);
|
||||
if (ev.getInventory().getHolder() instanceof Hopper &&
|
||||
((Hopper)(ev.getInventory().getHolder())).getWorld().getName().equalsIgnoreCase("FilterCube")) {
|
||||
SoundUtils.playLocalSound(p, Sound.BLOCK_CHEST_LOCKED, 0.6f, 0.4f);
|
||||
}
|
||||
else
|
||||
//Check if this is an Item Cube inventory.
|
||||
if (pd.isViewingItemCube && ev.getInventory().getTitle().contains("Item Cube")) {
|
||||
//p.sendMessage("This is an Item Cube inventory.");
|
||||
@ -3684,16 +3697,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
} else {
|
||||
AnvilItem item = new AnvilItem(ev.getInventory().getItem(0),ev.getResult());
|
||||
ev.setResult(item.renameItemProperly());
|
||||
/*if (ev.getResult()!=null &&
|
||||
ev.getInventory().getItem(0)!=null &&
|
||||
ev.getInventory().getItem(0).getItemMeta().hasDisplayName()) {
|
||||
String oldname = ev.getInventory().getItem(0).getItemMeta().getDisplayName();
|
||||
String strippedname = ChatColor.stripColor(oldname);
|
||||
String colorcodes = oldname.replace(strippedname, "");
|
||||
ItemMeta m = ev.getResult().getItemMeta();
|
||||
m.setDisplayName(strippedname.replace(colorcodes, ""));
|
||||
ev.getResult().setItemMeta(m);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -3715,6 +3718,20 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
},1);
|
||||
}
|
||||
|
||||
//Check for a shift-right click for Filter Cubes.
|
||||
if (ev.getClick()==ClickType.SHIFT_RIGHT) {
|
||||
ItemStack item = ev.getCurrentItem();
|
||||
if (CustomItem.isFilterCube(item)) {
|
||||
int cubeid = ItemCubeUtils.getItemCubeID(item);
|
||||
Hopper targethopper = ItemCubeUtils.getFilterCubeHopper(cubeid);
|
||||
targethopper.getChunk().load();
|
||||
ev.getWhoClicked().openInventory(targethopper.getInventory());
|
||||
SoundUtils.playLocalSound((Player)ev.getWhoClicked(), Sound.BLOCK_CHEST_LOCKED, 1.0f, 1.0f);
|
||||
ev.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ((ev.getClick()==ClickType.SHIFT_LEFT || ev.getClick()==ClickType.SHIFT_RIGHT) &&
|
||||
ev.getWhoClicked().getInventory().getExtraContents()[0]==null && GenericFunctions.AllowedToBeEquippedToOffHand((Player)ev.getWhoClicked(),ev.getCurrentItem(),ev.getRawSlot()) &&
|
||||
((ev.getInventory().getType()!=InventoryType.WORKBENCH && ev.getRawSlot()>=0) ||
|
||||
@ -5706,6 +5723,18 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (GenericFunctions.isValidArrow(ev.getItem().getItemStack())) {
|
||||
ev.setCancelled(true);
|
||||
ev.getItem().remove();
|
||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
AddToPlayerInventory(ev.getItem().getItemStack(), p);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* MUST BE HANDLED AFTER EVERYTHING ELSE.
|
||||
*/
|
||||
|
||||
if (ev.getItem().getItemStack().getType().isBlock() && InventoryUtils.isCarryingVacuumCube(p)) {
|
||||
//Try to insert it into the Vacuum cube.
|
||||
ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ev.getItem().getItemStack());
|
||||
@ -5714,16 +5743,28 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
ev.getItem().remove();
|
||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
return;
|
||||
} else {
|
||||
ev.getItem().setItemStack(remaining[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (GenericFunctions.isValidArrow(ev.getItem().getItemStack())) {
|
||||
ev.setCancelled(true);
|
||||
ev.getItem().remove();
|
||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
AddToPlayerInventory(ev.getItem().getItemStack(), p);
|
||||
return;
|
||||
if (InventoryUtils.isCarryingFilterCube(p)) {
|
||||
//Try to insert it into the Filter cube.
|
||||
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, ev.getItem().getItemStack());
|
||||
if (remaining.length==0) {
|
||||
ev.setCancelled(true);
|
||||
ev.getItem().remove();
|
||||
SoundUtils.playGlobalSound(ev.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
return;
|
||||
} else {
|
||||
ev.getItem().setItemStack(remaining[0]);
|
||||
}
|
||||
}
|
||||
|
||||
ev.setCancelled(true);
|
||||
ev.getItem().remove();
|
||||
GenericFunctions.giveItem(p, ev.getItem().getItemStack());
|
||||
return;
|
||||
}
|
||||
|
||||
private boolean AutoConsumeItem(Player p, ItemStack item) {
|
||||
@ -6827,42 +6868,35 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
File config;
|
||||
config = new File(TwosideKeeper.filesave,"itemcubes/ItemCube"+id+".data");
|
||||
FileConfiguration workable = YamlConfiguration.loadConfiguration(config);
|
||||
|
||||
for (int i=0;i<54;i++) {
|
||||
CubeType type = CubeType.getCubeTypeFromID(workable.getInt("cubetype"));
|
||||
for (int i=0;i<type.getSize();i++) {
|
||||
ItemCube_items.add(workable.getItemStack("item"+i, new ItemStack(Material.AIR)));
|
||||
}
|
||||
return ItemCube_items;
|
||||
}
|
||||
|
||||
public static List<ItemStack> itemCube_loadFilterConfig(int id){
|
||||
List<ItemStack> ItemCube_items = new ArrayList<ItemStack>();
|
||||
File config;
|
||||
config = new File(TwosideKeeper.filesave,"itemcubes/ItemCube"+id+".data");
|
||||
FileConfiguration workable = YamlConfiguration.loadConfiguration(config);
|
||||
|
||||
for (int i=0;i<5;i++) {
|
||||
ItemCube_items.add(workable.getItemStack("filter"+i, new ItemStack(Material.AIR)));
|
||||
}
|
||||
return ItemCube_items;
|
||||
}
|
||||
|
||||
public static CubeType itemCube_getCubeType(int id){
|
||||
File config;
|
||||
config = new File(TwosideKeeper.filesave,"itemcubes/ItemCube"+id+".data");
|
||||
FileConfiguration workable = YamlConfiguration.loadConfiguration(config);
|
||||
|
||||
switch (workable.getInt("cubetype")) {
|
||||
case 0:{return CubeType.NORMAL;}
|
||||
case 1:{return CubeType.LARGE;}
|
||||
case 2:{return CubeType.ENDER;}
|
||||
case 3:{return CubeType.VACUUM;}
|
||||
default:{return CubeType.NORMAL;}
|
||||
}
|
||||
return CubeType.getCubeTypeFromID(workable.getInt("cubetype"));
|
||||
}
|
||||
|
||||
//Item Cube Saving.
|
||||
public static void itemCube_saveConfig(int id, List<ItemStack> items){
|
||||
File config;
|
||||
config = new File(TwosideKeeper.filesave,"itemcubes/ItemCube"+id+".data");
|
||||
FileConfiguration workable = YamlConfiguration.loadConfiguration(config);
|
||||
|
||||
for (int i=0;i<items.size();i++) {
|
||||
workable.set("item"+i, items.get(i));
|
||||
}
|
||||
//workable.set("cubetype", cubetype);
|
||||
try {
|
||||
workable.save(config);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
itemCube_saveConfig(id,items,null);
|
||||
}
|
||||
|
||||
public static void itemCube_saveConfig(int id, List<ItemStack> items, CubeType cubetype){
|
||||
@ -6873,11 +6907,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
||||
for (int i=0;i<items.size();i++) {
|
||||
workable.set("item"+i, items.get(i));
|
||||
}
|
||||
switch (cubetype) { //We have to convert it to a number because it's using the old version. We can't take advantage of the enum at this point.
|
||||
case NORMAL:{workable.set("cubetype", 0);}break;
|
||||
case LARGE:{workable.set("cubetype", 1);}break;
|
||||
case ENDER:{workable.set("cubetype", 2);}break;
|
||||
case VACUUM:{workable.set("cubetype", 3);}break;
|
||||
if (cubetype!=null) {
|
||||
workable.set("cubetype", cubetype.getID());
|
||||
}
|
||||
try {
|
||||
workable.save(config);
|
||||
|
||||
@ -350,6 +350,24 @@ final class runServerHeartbeat implements Runnable {
|
||||
TwosideKeeper.TwosideSpleefGames.TickEvent();
|
||||
}
|
||||
|
||||
|
||||
public static void runFilterCubeCollection(Player p) {
|
||||
if (InventoryUtils.isCarryingFilterCube(p)) {
|
||||
List<Entity> ents = p.getNearbyEntities(0.25, 0.25, 0.25);
|
||||
for (Entity ent : ents) {
|
||||
if (ent instanceof Item && GenericFunctions.itemCanBeSuckedUp((Item)ent)) {
|
||||
Item it = (Item)ent;
|
||||
ItemStack[] remaining = InventoryUtils.insertItemsInFilterCube(p, it.getItemStack());
|
||||
if (remaining.length==0) {
|
||||
it.remove();
|
||||
SoundUtils.playGlobalSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void runVacuumCubeSuckup(Player p) {
|
||||
if (InventoryUtils.isCarryingVacuumCube(p)) {
|
||||
//Suck up nearby item entities.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user