Implemented all requested Item Cube API methods.

This commit is contained in:
sigonasr2 2016-12-29 21:50:30 -06:00
parent 94037dbea6
commit 341a330d6b
7 changed files with 121 additions and 5 deletions

Binary file not shown.

View File

@ -158,6 +158,14 @@ public class EliteMonster {
if (!m.getLocation().getWorld().equals(myspawn.getWorld())) { if (!m.getLocation().getWorld().equals(myspawn.getWorld())) {
myspawn = m.getLocation(); //Then this is my new spawn... myspawn = m.getLocation(); //Then this is my new spawn...
} }
for (Player p : targetlist) {
if (p.isDead()) {
targetlist.remove(p);
}
}
if (targetlist.size()==0) {
participantlist.clear();
}
} }
protected void dontDrown() { protected void dontDrown() {
@ -274,7 +282,7 @@ public class EliteMonster {
//Triggers when this mob hits something. //Triggers when this mob hits something.
public void hitEvent(LivingEntity ent) { public void hitEvent(LivingEntity ent) {
if (!targetlist.contains(ent) && (ent instanceof Player)) { if (!targetlist.contains(ent) && (ent instanceof Player) && !ent.isDead()) {
targetlist.add((Player)ent); targetlist.add((Player)ent);
if (targetlist.size()>4) { if (targetlist.size()>4) {
double hpgain = m.getMaxHealth()*(0.25*(targetlist.size()-4)); double hpgain = m.getMaxHealth()*(0.25*(targetlist.size()-4));

View File

@ -52,4 +52,22 @@ public class ItemCube {
inv.addItem(cursor); inv.addItem(cursor);
} }
} }
public static void removeFromViewersofItemCube(int idnumb, ItemStack cursor, Player check) {
Inventory inv = getViewingItemCubeInventory(idnumb, check);
if (inv!=null) {
inv.removeItem(cursor);
}
}
public static void removeFromViewersofItemCube(int idnumb, ItemStack[] cursor, Player check) {
Inventory inv = getViewingItemCubeInventory(idnumb, check);
if (inv!=null) {
inv.removeItem(cursor);
}
}
public static void clearFromViewersofItemCube(int id, Player check) {
Inventory inv = getViewingItemCubeInventory(id, check);
if (inv!=null) {
inv.clear();
}
}
} }

View File

@ -170,7 +170,7 @@ public class ItemCubeUtils {
} }
} }
public static Collection<ItemStack> addItems(int id, ItemStack...items) { public static List<ItemStack> addItems(int id, ItemStack...items) {
List<ItemStack> currentcontents = getItemCubeContents(id); List<ItemStack> currentcontents = getItemCubeContents(id);
List<ItemStack> leftovers = new ArrayList<ItemStack>(); List<ItemStack> leftovers = new ArrayList<ItemStack>();
//Attempt to add them to an inventory. //Attempt to add them to an inventory.
@ -198,4 +198,59 @@ public class ItemCubeUtils {
saveConfig(id,InventoryUtils.ConvertInventoryToList(inv,slots),size); saveConfig(id,InventoryUtils.ConvertInventoryToList(inv,slots),size);
return leftovers; return leftovers;
} }
public static List<ItemStack> removeItems(int id, ItemStack...items) {
List<ItemStack> currentcontents = getItemCubeContents(id);
List<ItemStack> leftovers = new ArrayList<ItemStack>();
//Attempt to add them to an inventory.
CubeType size = getCubeType(id);
int slots = size.getSize();
Inventory inv = Bukkit.createInventory(null, slots);
for (int i=0;i<slots;i++) {
inv.setItem(i, currentcontents.get(i));
}
for (ItemStack item : items) {
if (item!=null) {
ItemStack tempitem = item.clone();
HashMap<Integer,ItemStack> remaining = inv.removeItem(tempitem.clone());
if (remaining.size()>0) {
leftovers.add(remaining.get(0).clone());
}
ItemCube.removeFromViewersofItemCube(id,tempitem.clone(),null);
}
}
saveConfig(id,InventoryUtils.ConvertInventoryToList(inv,slots),size);
return leftovers;
}
public static ItemStack removeItemFromSlot(int id, int slot) {
List<ItemStack> currentcontents = getItemCubeContents(id);
//Attempt to add them to an inventory.
CubeType size = getCubeType(id);
int slots = size.getSize();
Inventory inv = Bukkit.createInventory(null, slots);
for (int i=0;i<slots;i++) {
inv.setItem(i, currentcontents.get(i));
}
ItemStack slotitem = inv.getItem(slot).clone();
inv.setItem(slot, new ItemStack(Material.AIR));
ItemCube.removeFromViewersofItemCube(id,slotitem.clone(),null);
saveConfig(id,InventoryUtils.ConvertInventoryToList(inv,slots),size);
if (slotitem==null) {
return new ItemStack(Material.AIR);
} else {
return slotitem.clone();
}
}
public static void clearItems(int id) {
CubeType size = getCubeType(id);
int slots = size.getSize();
Inventory inv = Bukkit.createInventory(null, slots);
for (int i=0;i<slots;i++) {
inv.setItem(i, new ItemStack(Material.AIR));
}
ItemCube.clearFromViewersofItemCube(id,null);
saveConfig(id,InventoryUtils.ConvertInventoryToList(inv,slots),size);
}
} }

View File

@ -1349,6 +1349,21 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
} }
}break; }break;
case "REMOVECUBE":{
Collection<ItemStack> remaining = ItemCubeUtils.removeItems(Integer.parseInt(args[1]), p.getEquipment().getItemInMainHand());
if (remaining.size()>0) {
for (ItemStack item : remaining) {
p.sendMessage("Could not remove "+GenericFunctions.UserFriendlyMaterialName(item)+" "+((item.getAmount()>1)?"x"+item.getAmount():""));
}
}
}break;
case "CLEARCUBE":{
ItemCubeUtils.clearItems(Integer.parseInt(args[1]));
}break;
case "REMOVESLOTCUBE":{
ItemStack remaining = ItemCubeUtils.removeItemFromSlot(Integer.parseInt(args[1]), Integer.parseInt(args[2]));
p.sendMessage("Removed "+GenericFunctions.UserFriendlyMaterialName(remaining));
}break;
} }
} }
//LivingEntity m = MonsterController.convertMonster((Monster)p.getWorld().spawnEntity(p.getLocation(),EntityType.ZOMBIE), MonsterDifficulty.ELITE); //LivingEntity m = MonsterController.convertMonster((Monster)p.getWorld().spawnEntity(p.getLocation(),EntityType.ZOMBIE), MonsterDifficulty.ELITE);
@ -5697,7 +5712,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true) @EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
public void entityTargetEvent(EntityTargetLivingEntityEvent ev) { public void entityTargetEvent(EntityTargetLivingEntityEvent ev) {
if ((ev.getEntity() instanceof Monster)) { if ((ev.getEntity() instanceof Monster)) {
log("In here",5); log("In here 1",5);
Monster m = (Monster)ev.getEntity(); Monster m = (Monster)ev.getEntity();
if (m.hasPotionEffect(PotionEffectType.GLOWING)) { if (m.hasPotionEffect(PotionEffectType.GLOWING)) {
ev.setCancelled(true); ev.setCancelled(true);
@ -5705,7 +5720,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
LivingEntityStructure ms = LivingEntityStructure.getLivingEntityStructure(m); LivingEntityStructure ms = LivingEntityStructure.getLivingEntityStructure(m);
if (ms.getElite()) { if (ms.getElite()) {
log("In here",5); log("In here 2",5);
EliteMonster em = null; EliteMonster em = null;
for (int i=0;i<elitemonsters.size();i++) { for (int i=0;i<elitemonsters.size();i++) {
if (elitemonsters.get(i).m.equals(ev.getEntity())) { if (elitemonsters.get(i).m.equals(ev.getEntity())) {
@ -5715,7 +5730,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} }
if (em!=null && em.targetlist.size()==0) { if (em!=null && em.targetlist.size()==0) {
if (em.targetlist.size()==0 && em.participantlist.size()==0) { if (em.targetlist.size()==0 && em.participantlist.size()==0) {
TwosideKeeper.log("Cancel", 5);
ev.setCancelled(true); ev.setCancelled(true);
ev.setTarget(null);
return; return;
} }
if ((ev.getTarget() instanceof Player) && !em.targetlist.contains((Player)ev.getTarget())) { if ((ev.getTarget() instanceof Player) && !em.targetlist.contains((Player)ev.getTarget())) {
@ -5748,6 +5765,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
EliteMonster em = GenericFunctions.getProperEliteMonster(m); EliteMonster em = GenericFunctions.getProperEliteMonster(m);
ms.SetElite(true); ms.SetElite(true);
elitemonsters.add(em); elitemonsters.add(em);
ev.setCancelled(true);
ev.setTarget(null);
} }
} }
} }

View File

@ -192,7 +192,13 @@ public final class TwosideKeeperAPI {
public static CubeType getCubeType(int id) { public static CubeType getCubeType(int id) {
return ItemCubeUtils.getCubeType(id); return ItemCubeUtils.getCubeType(id);
} }
public static Collection<ItemStack> getItemCubeContents(int id) { public static ItemStack removeItemFromSlot(int id,int slot) {
return ItemCubeUtils.removeItemFromSlot(id,slot);
}
public static void clearItems(int id) {
ItemCubeUtils.clearItems(id);
}
public static List<ItemStack> getItemCubeContents(int id) {
return ItemCubeUtils.getItemCubeContents(id); return ItemCubeUtils.getItemCubeContents(id);
} }
/** /**
@ -204,6 +210,9 @@ public final class TwosideKeeperAPI {
public static Collection<ItemStack> insertItemsIntoItemCube(int id, ItemStack...items) { public static Collection<ItemStack> insertItemsIntoItemCube(int id, ItemStack...items) {
return ItemCubeUtils.addItems(id, items); return ItemCubeUtils.addItems(id, items);
} }
public static List<ItemStack> removeItems(int id,ItemStack...items) {
return ItemCubeUtils.removeItems(id, items);
}
//Hardened Item Commands. //Hardened Item Commands.
public static boolean isHardenedItem(ItemStack i) { public static boolean isHardenedItem(ItemStack i) {

View File

@ -468,6 +468,9 @@ final class runServerHeartbeat implements Runnable {
it.remove(); it.remove();
return; return;
} }
} else {
it.remove();
return;
} }
} }
count++; count++;
@ -521,6 +524,7 @@ final class runServerHeartbeat implements Runnable {
//Collect this item. //Collect this item.
if (((Item)ent).getItemStack().getType().isBlock()) { if (((Item)ent).getItemStack().getType().isBlock()) {
events.PlayerManualPickupItemEvent ev = new events.PlayerManualPickupItemEvent(p, ((Item) ent).getItemStack()); events.PlayerManualPickupItemEvent ev = new events.PlayerManualPickupItemEvent(p, ((Item) ent).getItemStack());
Bukkit.getPluginManager().callEvent(ev);
if (!ev.isCancelled()) { if (!ev.isCancelled()) {
ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ((Item) ent).getItemStack()); ItemStack[] remaining = InventoryUtils.insertItemsInVacuumCube(p, ((Item) ent).getItemStack());
if (remaining.length==0) { if (remaining.length==0) {
@ -528,6 +532,9 @@ final class runServerHeartbeat implements Runnable {
ent.remove(); ent.remove();
return; return;
} }
} else {
ent.remove();
return;
} }
} }
} else { } else {