Removed some gross code.

Replaced hopper check system.
Added back end chest support.
This commit is contained in:
Brianna O'Keefe 2018-10-12 23:39:16 -04:00
parent 9eae0afce5
commit 5f7f640513

View File

@ -8,6 +8,7 @@ import com.songoda.epichoppers.utils.Debugger;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Beacon; import org.bukkit.block.Beacon;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Hopper; import org.bukkit.block.Hopper;
@ -19,6 +20,7 @@ import org.bukkit.inventory.ItemStack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* Created by songoda on 3/14/2017. * Created by songoda on 3/14/2017.
@ -95,24 +97,24 @@ public class HopHandler {
materials.addAll(module.getBlockedItems(hopper)); materials.addAll(module.getBlockedItems(hopper));
} }
if (hopper.getSyncedBlock() == null) continue; if (hopper.getSyncedBlock() == null) continue;
Location dest = hopper.getSyncedBlock().getLocation(); Location dest = hopper.getSyncedBlock().getLocation();
if (dest == null) { if (dest == null) {
hopper.setSyncedBlock(null); hopper.setSyncedBlock(null);
continue; continue;
} }
int destx = location.getBlockX() >> 4; int destx = location.getBlockX() >> 4;
int destz = location.getBlockZ() >> 4; int destz = location.getBlockZ() >> 4;
if (!dest.getWorld().isChunkLoaded(destx, destz)) { if (!dest.getWorld().isChunkLoaded(destx, destz)) {
continue; continue;
} }
Block b2 = dest.getBlock(); Block b2 = dest.getBlock();
if (!(b2.getState() instanceof InventoryHolder)) { if (!(b2.getState() instanceof InventoryHolder || b2.getType() == Material.ENDER_CHEST)) {
hopper.setSyncedBlock(null); hopper.setSyncedBlock(null);
continue; continue;
} }
InventoryHolder inventoryHolder = (InventoryHolder) b2.getState(); //InventoryHolder inventoryHolder = (InventoryHolder) b2.getState();
//TODO add some restrictions here if needed //TODO add some restrictions here if needed
BoostData boostData = instance.getBoostManager().getBoost(hopper.getPlacedBy()); BoostData boostData = instance.getBoostManager().getBoost(hopper.getPlacedBy());
@ -123,32 +125,30 @@ public class HopHandler {
List<Material> blackList = hopper.getFilter().getBlackList(); List<Material> blackList = hopper.getFilter().getBlackList();
int num = 0; for (int i = 0; i < 5; i ++) {
while (num != 5) {
ItemStack it = null; ItemStack it = null;
if (is[num] != null) { if (is[i] != null) {
it = is[num].clone(); it = is[i].clone();
it.setAmount(1); it.setAmount(1);
} }
if (is[num] != null if (is[i] != null
&& materials.contains(is[num].getType())) { && materials.contains(is[i].getType())) {
num++; i++;
continue; continue;
} }
if (is[num] != null if (is[i] != null
&& !whiteList.isEmpty() && !whiteList.isEmpty()
&& !whiteList.contains(it.getType())) { && !whiteList.contains(it.getType())) {
doBlacklist(hopperBlock, hopper, is[num].clone(), is, amt, num); doBlacklist(hopperBlock, hopper, is[i].clone(), is, amt, i);
} else if (is[num] != null && !blackList.contains(it.getType())) { } else if (is[i] != null && !blackList.contains(it.getType())) {
int numm = addItem(hopperBlock, hopper, b2, is[num], is, amt, num); int im = addItem(hopperBlock, hopper, b2, is[i], is, amt, i);
if (numm != 10) if (im != 10)
num = numm; i = im;
} else if (is[num] != null && blackList.contains(it.getType())) { } else if (is[i] != null && blackList.contains(it.getType())) {
doBlacklist(hopperBlock, hopper, is[num].clone(), is, amt, num); doBlacklist(hopperBlock, hopper, is[i].clone(), is, amt, i);
} }
num++;
} }
} }
} catch (Exception e) { } catch (Exception e) {
@ -209,26 +209,19 @@ public class HopHandler {
} }
newItem.setAmount(amt); newItem.setAmount(amt);
InventoryHolder ih = null;
if (!b2.getType().equals(Material.ENDER_CHEST)) {
ih = (InventoryHolder) b2.getState();
}
if (b2.getType().equals(Material.ENDER_CHEST)) {/* if (b2.getType().equals(Material.ENDER_CHEST)) {
try { OfflinePlayer op = Bukkit.getOfflinePlayer(hopper.getPlacedBy());
OfflinePlayer op = Bukkit.getOfflinePlayer(UUID.fromString(instance.getDataFile().getConfig().getString("data.enderTracker." + Arconix.pl().getApi().serialize().serializeLocation(b2)))); if (op.isOnline() && canMove(op.getPlayer().getEnderChest(), newItem, amt)) {
if (op.isOnline() && canHop(op.getPlayer().getEnderChest(), newItem, amt)) {
if (!ovoid.contains(it.getType())) { if (!ovoid.contains(it.getType())) {
op.getPlayer().getEnderChest().addItem(newItem); op.getPlayer().getEnderChest().addItem(newItem);
} }
isS[place] = is; isS[place] = is;
hopperBlock.getInventory().setContents(isS); hopperBlock.getInventory().setContents(isS);
} }
} catch (Exception ignore) {
} */
} else { } else {
if (!canHop(ih.getInventory(), newItem, amt) || b2.getType() == Material.BREWING_STAND) { InventoryHolder ih = (InventoryHolder) b2.getState();
if (!canMove(ih.getInventory(), newItem, amt) || b2.getType() == Material.BREWING_STAND) {
return 4; return 4;
} }
if (b2.getType() == Material.FURNACE) { if (b2.getType() == Material.FURNACE) {
@ -269,26 +262,15 @@ public class HopHandler {
return 0; return 0;
} }
private boolean canHop(Inventory i, ItemStack item, int hop) { private boolean canMove(Inventory inventory, ItemStack item, int hop) {
try { try {
if (i.firstEmpty() != -1) { if (inventory.firstEmpty() != -1) return true;
return true;
} for (ItemStack stack : inventory.getContents()) {
boolean can = false; if (stack.isSimilar(item) && (stack.getAmount() + item.getAmount() + hop) < stack.getMaxStackSize()) {
for (ItemStack it : i.getContents()) { return true;
if (it == null) {
can = true;
break;
} else {
if (it.isSimilar(item)) {
if ((it.getAmount() + hop) <= it.getMaxStackSize()) {
can = true;
break;
}
}
} }
} }
return can;
} catch (Exception e) { } catch (Exception e) {
Debugger.runReport(e); Debugger.runReport(e);
} }