Handle Hoppers for Distillers and MCBarrels

Removed most mentions of Persistent
This commit is contained in:
Sn0wStorm
2019-11-14 15:46:15 +01:00
parent 3332354846
commit f483f03560
13 changed files with 65 additions and 162 deletions
+4
View File
@@ -67,6 +67,10 @@ public class BDistiller {
distiller.start();
}
public static boolean isTrackingDistiller(Block block) {
return trackedDistillers.containsKey(block);
}
// Returns a Brew or null for every Slot in the BrewerInventory
public static Brew[] getDistillContents(BrewerInventory inv) {
ItemStack item;
-22
View File
@@ -463,27 +463,6 @@ public class Brew implements Cloneable {
return currentRecipe;
}
// Not needed anymore
// TODO remove
@Deprecated
public boolean isPersistent() {
return persistent;
}
// Make a potion persistent to not delete it when drinking it
// Not needed anymore
@Deprecated
public void makePersistent() {
persistent = true;
}
// Remove the Persistence Flag from a brew, so it will be normally deleted when drinking it
// Not needed anymore
@Deprecated
public void removePersistence() {
persistent = false;
}
public boolean isStatic() {
return immutable;
}
@@ -866,7 +845,6 @@ public class Brew implements Cloneable {
recipe = in.readUTF();
}
unlabeled = (bools & 16) != 0;
//persistent = (bools & 32) != 0;
immutable = (bools & 32) != 0;
ingredients = BIngredients.load(in, dataVersion);
setRecipeFromString(recipe);
+8 -14
View File
@@ -80,8 +80,7 @@ public class MCBarrel {
// This is the last viewer
for (ItemStack item : inv.getContents()) {
if (item != null) {
Brew brew = Brew.get(item);
if (brew != null) { // TODO replace this and others with isBrew
if (Brew.isBrew(item)) {
// We found a brew, so set time on this Barrel
if (inv.getHolder() instanceof org.bukkit.block.Barrel) {
Barrel barrel = (Barrel) inv.getHolder();
@@ -101,8 +100,7 @@ public class MCBarrel {
brews = 0;
for (ItemStack item : inv.getContents()) {
if (item != null) {
Brew brew = Brew.get(item);
if (brew != null) {
if (Brew.isBrew(item)) {
brews++;
}
}
@@ -113,6 +111,7 @@ public class MCBarrel {
return inv;
}
public static void onUpdate() {
mcBarrelTime++;
}
@@ -133,11 +132,9 @@ public class MCBarrel {
case SWAP_WITH_CURSOR:
// Placing Brew in MC Barrel
if (event.getCursor() != null && event.getClickedInventory() != null && event.getClickedInventory().getType() == InventoryType.BARREL && event.getCursor().getType() == Material.POTION) {
Brew b = Brew.get(event.getCursor());
if (b != null) {
if (Brew.isBrew(event.getCursor())) {
if (event.getAction() == InventoryAction.SWAP_WITH_CURSOR && event.getCurrentItem() != null && event.getCurrentItem().getType() == Material.POTION) {
Brew bb = Brew.get(event.getCurrentItem());
if (bb != null) {
if (Brew.isBrew(event.getCurrentItem())) {
// The item we are swapping with is also a brew, dont change the count and allow
break;
}
@@ -150,8 +147,7 @@ public class MCBarrel {
if (event.getCurrentItem() != null && event.getCurrentItem().getType() == Material.POTION && event.getClickedInventory() != null) {
if (event.getClickedInventory().getType() == InventoryType.BARREL) {
// Moving Brew out of MC Barrel
Brew b = Brew.get(event.getCurrentItem());
if (b != null) {
if (Brew.isBrew(event.getCurrentItem())) {
if (brews == -1) {
countBrews();
}
@@ -160,8 +156,7 @@ public class MCBarrel {
break;
} else if (event.getClickedInventory().getType() == InventoryType.PLAYER) {
// Moving Brew into MC Barrel
Brew b = Brew.get(event.getCurrentItem());
if (b != null) {
if (Brew.isBrew(event.getCurrentItem())) {
adding = true;
}
}
@@ -175,8 +170,7 @@ public class MCBarrel {
case COLLECT_TO_CURSOR:
// Pickup Brew from MC Barrel
if (event.getCurrentItem() != null && event.getClickedInventory() != null && event.getClickedInventory().getType() == InventoryType.BARREL && event.getCurrentItem().getType() == Material.POTION) {
Brew b = Brew.get(event.getCurrentItem());
if (b != null) {
if (Brew.isBrew(event.getCurrentItem())) {
if (brews == -1) {
countBrews();
}
@@ -92,11 +92,7 @@ public class LanguageReader {
defaults.add(new Tuple<>("CMD_Info_NotDrunk", "&v1 is not drunk"));
defaults.add(new Tuple<>("CMD_Info_Drunk", "&v1 is &6&v2% &fdrunk, with a quality of &6&v3"));
defaults.add(new Tuple<>("CMD_UnLabel", "&aLabel removed!"));
defaults.add(new Tuple<>("CMD_Persistent", "&aPotion is now Persistent and Static and may now be copied like any other item. You can remove the persistence with the same command."));
defaults.add(new Tuple<>("CMD_PersistRemove", "&cPersistent Brews cannot be removed from the Database. It would render any copies of them useless!"));
defaults.add(new Tuple<>("CMD_UnPersist", "&aPersistence and static Removed. &eEvery Potential copy NOT made with '/brew copy' could become useless now!"));
defaults.add(new Tuple<>("CMD_Copy_Error", "&6&v1 &cPotions did not fit into your inventory"));
defaults.add(new Tuple<>("CMD_CopyNotPersistent", "&eThese copies of this Brew will not be persistent or static!"));
defaults.add(new Tuple<>("CMD_Static", "&aPotion is now static and will not change in barrels or brewing stands."));
defaults.add(new Tuple<>("CMD_NonStatic", "&ePotion is not static anymore and will normally age in barrels."));
@@ -108,7 +104,6 @@ public class LanguageReader {
defaults.add(new Tuple<>("Error_NoBrewName", "&cNo Recipe with Name: '&v1&c' found!"));
defaults.add(new Tuple<>("Error_Recipeload", "&cNot all recipes could be restored: More information in the server log!"));
defaults.add(new Tuple<>("Error_ConfigUpdate", "Unknown Brewery config version: v&v1, config was not updated!"));
defaults.add(new Tuple<>("Error_PersistStatic", "&cPersistent potions are always static!"));
/* Permissions */
defaults.add(new Tuple<>("Error_NoPermissions", "&cYou don't have permissions to do this!"));
@@ -135,7 +130,6 @@ public class LanguageReader {
defaults.add(new Tuple<>("Help_WakeupRemove", "&6/brew wakeup remove <id> &9Removes the wakeup point with <id>"));
defaults.add(new Tuple<>("Help_Reload", "&6/brew reload &9Reload config"));
defaults.add(new Tuple<>("Help_Configname", "&6/brew ItemName &9Display name of item in hand for the config"));
defaults.add(new Tuple<>("Help_Persist", "&6/brew persist &9Make Brew persistent -> copyable by any plugin and technique"));
defaults.add(new Tuple<>("Help_Static", "&6/brew static &9Make Brew static -> No further ageing or distilling"));
defaults.add(new Tuple<>("Help_Create", "&6/brew create <Recipe> [Quality] [Player] &9Create a Brew with optional quality (1-10)"));
@@ -101,14 +101,6 @@ public class CommandListener implements CommandExecutor {
p.msg(sender, p.languageReader.get("Error_NoPermissions"));
}
} else if (cmd.equalsIgnoreCase("persist") || cmd.equalsIgnoreCase("persistent")) {
if (sender.hasPermission("brewery.cmd.persist")) {
cmdPersist(sender);
} else {
p.msg(sender, p.languageReader.get("Error_NoPermissions"));
}
} else if (cmd.equalsIgnoreCase("static")) {
if (sender.hasPermission("brewery.cmd.static")) {
@@ -186,18 +178,19 @@ public class CommandListener implements CommandExecutor {
cmds.add (p.languageReader.get("Help_UnLabel"));
}
if (sender.hasPermission("brewery.cmd.copy")) {
cmds.add (p.languageReader.get("Help_Copy"));
}
if (sender.hasPermission("brewery.cmd.delete")) {
cmds.add (p.languageReader.get("Help_Delete"));
}
if (sender.hasPermission("brewery.cmd.infoOther")) {
cmds.add (p.languageReader.get("Help_InfoOther"));
}
if (sender.hasPermission("brewery.cmd.create")) {
cmds.add(p.languageReader.get("Help_Create"));
}
if (sender.hasPermission("brewery.cmd.reload")) {
cmds.add(p.languageReader.get("Help_Configname"));
cmds.add(p.languageReader.get("Help_Reload"));
}
if (sender.hasPermission("brewery.cmd.wakeup")) {
cmds.add(p.languageReader.get("Help_Wakeup"));
cmds.add(p.languageReader.get("Help_WakeupList"));
@@ -207,21 +200,16 @@ public class CommandListener implements CommandExecutor {
cmds.add(p.languageReader.get("Help_WakeupRemove"));
}
if (sender.hasPermission("brewery.cmd.reload")) {
cmds.add(p.languageReader.get("Help_Configname"));
cmds.add(p.languageReader.get("Help_Reload"));
}
if (sender.hasPermission("brewery.cmd.persist")) {
cmds.add(p.languageReader.get("Help_Persist"));
}
if (sender.hasPermission("brewery.cmd.static")) {
cmds.add(p.languageReader.get("Help_Static"));
}
if (sender.hasPermission("brewery.cmd.create")) {
cmds.add(p.languageReader.get("Help_Create"));
if (sender.hasPermission("brewery.cmd.copy")) {
cmds.add (p.languageReader.get("Help_Copy"));
}
if (sender.hasPermission("brewery.cmd.delete")) {
cmds.add (p.languageReader.get("Help_Delete"));
}
return cmds;
@@ -393,8 +381,7 @@ public class CommandListener implements CommandExecutor {
Player player = (Player) sender;
ItemStack hand = player.getItemInHand();
if (hand != null) {
Brew brew = Brew.get(hand);
if (brew != null) {
if (Brew.isBrew(hand)) {
while (count > 0) {
ItemStack item = hand.clone();
if (!(player.getInventory().addItem(item)).isEmpty()) {
@@ -403,9 +390,6 @@ public class CommandListener implements CommandExecutor {
}
count--;
}
if (brew.isPersistent()) {
p.msg(sender, p.languageReader.get("CMD_CopyNotPersistent"));
}
return;
}
}
@@ -424,44 +408,8 @@ public class CommandListener implements CommandExecutor {
Player player = (Player) sender;
ItemStack hand = player.getItemInHand();
if (hand != null) {
Brew brew = Brew.get(hand);
if (brew != null) {
if (brew.isPersistent()) {
p.msg(sender, p.languageReader.get("CMD_PersistRemove"));
} else {
//brew.remove(hand);
player.setItemInHand(new ItemStack(Material.AIR));
}
return;
}
}
p.msg(sender, p.languageReader.get("Error_ItemNotPotion"));
}
@Deprecated
public void cmdPersist(CommandSender sender) {
if (!(sender instanceof Player)) {
p.msg(sender, p.languageReader.get("Error_PlayerCommand"));
return;
}
Player player = (Player) sender;
ItemStack hand = player.getItemInHand();
if (hand != null) {
Brew brew = Brew.get(hand);
if (brew != null) {
if (brew.isPersistent()) {
brew.removePersistence();
brew.setStatic(false, hand);
p.msg(sender, p.languageReader.get("CMD_UnPersist"));
} else {
brew.makePersistent();
brew.setStatic(true, hand);
p.msg(sender, p.languageReader.get("CMD_Persistent"));
}
brew.touch();
brew.save(hand);
if (Brew.isBrew(hand)) {
player.setItemInHand(new ItemStack(Material.AIR));
return;
}
}
@@ -482,12 +430,8 @@ public class CommandListener implements CommandExecutor {
Brew brew = Brew.get(hand);
if (brew != null) {
if (brew.isStatic()) {
if (!brew.isPersistent()) {
brew.setStatic(false, hand);
p.msg(sender, p.languageReader.get("CMD_NonStatic"));
} else {
p.msg(sender, p.languageReader.get("Error_PersistStatic"));
}
brew.setStatic(false, hand);
p.msg(sender, p.languageReader.get("CMD_NonStatic"));
} else {
brew.setStatic(true, hand);
p.msg(sender, p.languageReader.get("CMD_Static"));
@@ -31,7 +31,6 @@ public class InventoryListener implements Listener {
/**
* Start tracking distillation for a person when they open the brewer window.
* @param event
*/
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBrewerOpen(InventoryOpenEvent event) {
@@ -46,7 +45,6 @@ public class InventoryListener implements Listener {
/**
* Stop tracking distillation for a person when they close the brewer window.
* @param event
*/
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBrewerClose(InventoryCloseEvent event) {
@@ -72,8 +70,6 @@ public class InventoryListener implements Listener {
* Clicking can either start or stop the new brew distillation tracking.
* Note that server restart will halt any ongoing brewing processes and
* they will _not_ restart until a new click event.
*
* @param event the Click event.
*/
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBrewerClick(InventoryClickEvent event) {
@@ -306,12 +302,44 @@ public class InventoryListener implements Listener {
// block the pickup of items where getPickupDelay is > 1000 (puke)
@EventHandler(ignoreCancelled = true)
public void onInventoryPickupItem(InventoryPickupItemEvent event){
public void onHopperPickupPuke(InventoryPickupItemEvent event){
if (event.getItem().getPickupDelay() > 1000 && event.getItem().getItemStack().getType() == BConfig.pukeItem) {
event.setCancelled(true);
}
}
// Block taking out items from running distillers,
// Convert Color Lore from MC Barrels back into normal color on taking out
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onHopperMove(InventoryMoveItemEvent event){
if (event.getSource() instanceof BrewerInventory) {
if (BDistiller.isTrackingDistiller(((BrewerInventory) event.getSource()).getHolder().getBlock())) {
event.setCancelled(true);
}
return;
}
if (!P.use1_14) return;
if (event.getSource().getType() == InventoryType.BARREL) {
ItemStack item = event.getItem();
if (item.getType() == Material.POTION && Brew.isBrew(item)) {
PotionMeta meta = (PotionMeta) item.getItemMeta();
if (BrewLore.hasColorLore(meta)) {
// has color lore, convert lore back to normal
Brew brew = Brew.get(meta);
if (brew != null) {
BrewLore lore = new BrewLore(brew, meta);
lore.convertLore(false);
lore.write();
item.setItemMeta(meta);
event.setItem(item);
}
}
}
}
}
@EventHandler
public void onInventoryClose(InventoryCloseEvent event) {
if (!P.use1_14) return;