Changed method of adding and removing a shop

Well, I had to change quite a bit and hopefully this fixes the issue,
that shop items can be collected and that shops aren't saved or reloaded
correctly.
This commit is contained in:
Eric 2016-06-03 17:58:53 +02:00
parent e2e034bcc8
commit 77365f388c
21 changed files with 180 additions and 595 deletions

View File

@ -2,7 +2,7 @@ package de.epiceric.shopchest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.JsonBuilder;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.interfaces.jsonbuilder.*; import de.epiceric.shopchest.interfaces.jsonbuilder.*;
import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.shop.Shop.ShopType;
import de.epiceric.shopchest.utils.ClickType; import de.epiceric.shopchest.utils.ClickType;
@ -182,7 +182,7 @@ public class Commands extends BukkitCommand {
} }
private void reload(Player player) { private void reload(Player player) {
ShopChest.utils.reload(player); ShopUtils.reloadShops(player);
} }
private void create(String[] args, ShopType shopType, Player p) { private void create(String[] args, ShopType shopType, Player p) {

View File

@ -3,9 +3,8 @@ package de.epiceric.shopchest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.event.*; import de.epiceric.shopchest.event.*;
import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.JsonBuilder;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.interfaces.jsonbuilder.*; import de.epiceric.shopchest.interfaces.jsonbuilder.*;
import de.epiceric.shopchest.interfaces.utils.*;
import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.shop.Shop.ShopType;
import de.epiceric.shopchest.sql.Database; import de.epiceric.shopchest.sql.Database;
@ -41,7 +40,6 @@ public class ShopChest extends JavaPlugin {
public static String latestVersion = ""; public static String latestVersion = "";
public static String downloadLink = ""; public static String downloadLink = "";
public static String[] broadcast = null; public static String[] broadcast = null;
public static Utils utils;
private static ShopChest instance; private static ShopChest instance;
public static ShopChest getInstance() { public static ShopChest getInstance() {
@ -158,19 +156,10 @@ public class ShopChest extends JavaPlugin {
switch (Utils.getVersion(getServer())) { switch (Utils.getVersion(getServer())) {
case "v1_8_R1": case "v1_8_R1":
utils = new Utils_1_8_R1();
break;
case "v1_8_R2": case "v1_8_R2":
utils = new Utils_1_8_R2();
break;
case "v1_8_R3": case "v1_8_R3":
utils = new Utils_1_8_R3();
break;
case "v1_9_R1": case "v1_9_R1":
utils = new Utils_1_9_R1();
break;
case "v1_9_R2": case "v1_9_R2":
utils = new Utils_1_9_R2();
break; break;
default: default:
logger.severe("Incompatible Server Version: " + Utils.getVersion(getServer()) + "!"); logger.severe("Incompatible Server Version: " + Utils.getVersion(getServer()) + "!");
@ -273,25 +262,23 @@ public class ShopChest extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
utils.removeShops(); for (Shop shop : ShopUtils.getShops()) {
ShopUtils.removeShop(shop, false);
}
} }
private void initializeShops() { private void initializeShops() {
int count = 0; int count = 0;
for (int id = 1; id < database.getHighestID() + 1; id++) { for (int id = 1; id < database.getHighestID() + 1; id++) {
try { try {
Shop shop = (Shop) database.get(id, Database.ShopInfo.SHOP); Shop shop = (Shop) database.get(id, Database.ShopInfo.SHOP);
shop.createHologram(); ShopUtils.addShop(shop, false);
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) { } catch (NullPointerException e) {
continue; continue;
} }
count++; count++;
} }
logger.info("Initialized " + String.valueOf(count) + " Shops"); logger.info("Initialized " + String.valueOf(count) + " Shops");

View File

@ -4,7 +4,7 @@ import com.griefcraft.lwc.LWC;
import com.griefcraft.model.Protection; import com.griefcraft.model.Protection;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.shop.Shop.ShopType;
import de.epiceric.shopchest.sql.Database; import de.epiceric.shopchest.sql.Database;
@ -221,14 +221,9 @@ public class InteractShop implements Listener {
} }
private void create(Player executor, Location location, ItemStack product, double buyPrice, double sellPrice, ShopType shopType) { private void create(Player executor, Location location, ItemStack product, double buyPrice, double sellPrice, ShopType shopType) {
Shop shop = new Shop(database.getNextFreeID(), plugin, executor, product, location, buyPrice, sellPrice, shopType);
Shop shop = new Shop(plugin, executor, product, location, buyPrice, sellPrice, shopType); ShopUtils.addShop(shop, true);
shop.createHologram();
shop.createItem();
database.addShop(shop);
ShopUtils.addShop(shop);
executor.sendMessage(Config.shop_created()); executor.sendMessage(Config.shop_created());
for (Player p : Bukkit.getOnlinePlayers()) { for (Player p : Bukkit.getOnlinePlayers()) {
@ -238,15 +233,8 @@ public class InteractShop implements Listener {
} }
private void remove(Player executor, Shop shop) { private void remove(Player executor, Shop shop) {
ShopUtils.removeShop(shop, true);
ShopUtils.removeShop(shop);
database.removeShop(shop);
shop.removeHologram();
executor.sendMessage(Config.shop_removed()); executor.sendMessage(Config.shop_removed());
} }
private void info(Player executor, Shop shop) { private void info(Player executor, Shop shop) {

View File

@ -3,7 +3,7 @@ package de.epiceric.shopchest.event;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.JsonBuilder; import de.epiceric.shopchest.interfaces.JsonBuilder;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.interfaces.jsonbuilder.*; import de.epiceric.shopchest.interfaces.jsonbuilder.*;
import net.milkbowl.vault.permission.Permission; import net.milkbowl.vault.permission.Permission;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -76,24 +76,16 @@ public class ProtectChest implements Listener {
if (b.getLocation().equals(r.getLocation())) { if (b.getLocation().equals(r.getLocation())) {
shop = ShopUtils.getShop(l.getLocation()); shop = ShopUtils.getShop(l.getLocation());
ShopUtils.removeShop(shop);
ShopChest.database.removeShop(shop);
} else if (b.getLocation().equals(l.getLocation())) { } else if (b.getLocation().equals(l.getLocation())) {
shop = ShopUtils.getShop(r.getLocation()); shop = ShopUtils.getShop(r.getLocation());
ShopUtils.removeShop(shop);
ShopChest.database.removeShop(shop);
} else { } else {
return; return;
} }
if (shop.hasItem()) shop.getItem().remove(); ShopUtils.removeShop(shop, true);
Shop newShop = new Shop(ShopChest.getInstance(), shop.getVendor(), shop.getProduct(), shop.getLocation(), shop.getBuyPrice(), shop.getSellPrice(), shop.getShopType());
newShop.createHologram();
newShop.createItem();
ShopUtils.addShop(newShop);
ShopChest.database.addShop(newShop);
Shop newShop = new Shop(shop.getID(), ShopChest.getInstance(), shop.getVendor(), shop.getProduct(), shop.getLocation(), shop.getBuyPrice(), shop.getSellPrice(), shop.getShopType());
ShopUtils.addShop(newShop, true);
} }
} }

View File

@ -1,6 +1,7 @@
package de.epiceric.shopchest.event; package de.epiceric.shopchest.event;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.utils.ShopUtils;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -19,7 +20,7 @@ public class RegenerateShopItemAfterRemove implements Listener {
} }
} }
if (containsShopItem) ShopChest.utils.reload(null); if (containsShopItem) ShopUtils.reloadShops(null);
} }

View File

@ -18,4 +18,8 @@ public interface Hologram {
public boolean isVisible(OfflinePlayer p); public boolean isVisible(OfflinePlayer p);
public boolean exists();
public void remove();
} }

View File

@ -15,7 +15,8 @@ import java.util.List;
public class Hologram_1_8_R1 implements Hologram { public class Hologram_1_8_R1 implements Hologram {
int count; private boolean exists = false;
private int count;
private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>(); private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>();
private String[] text; private String[] text;
private Location location; private Location location;
@ -28,12 +29,6 @@ public class Hologram_1_8_R1 implements Hologram {
create(); create();
} }
public Hologram_1_8_R1(String text, Location location) {
this.text = new String[]{text};
this.location = location;
create();
}
public Location getLocation() { public Location getLocation() {
return location; return location;
} }
@ -80,7 +75,20 @@ public class Hologram_1_8_R1 implements Hologram {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
this.location.add(0, this.DISTANCE, 0); this.location.add(0, this.DISTANCE, 0);
} }
this.count = 0;
count = 0;
exists = true;
}
public boolean exists() {
return exists;
}
public void remove() {
for (EntityArmorStand e : entitylist) {
e.die();
}
exists = false;
} }
} }

View File

@ -15,7 +15,8 @@ import java.util.List;
public class Hologram_1_8_R2 implements Hologram { public class Hologram_1_8_R2 implements Hologram {
int count; private boolean exists = false;
private int count;
private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>(); private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>();
private String[] text; private String[] text;
private Location location; private Location location;
@ -28,12 +29,6 @@ public class Hologram_1_8_R2 implements Hologram {
create(); create();
} }
public Hologram_1_8_R2(String text, Location location) {
this.text = new String[]{text};
this.location = location;
create();
}
public Location getLocation() { public Location getLocation() {
return location; return location;
} }
@ -80,7 +75,20 @@ public class Hologram_1_8_R2 implements Hologram {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
this.location.add(0, this.DISTANCE, 0); this.location.add(0, this.DISTANCE, 0);
} }
this.count = 0;
count = 0;
exists = true;
}
public boolean exists() {
return exists;
}
public void remove() {
for (EntityArmorStand e : entitylist) {
e.die();
}
exists = false;
} }
} }

View File

@ -15,7 +15,8 @@ import java.util.List;
public class Hologram_1_8_R3 implements Hologram { public class Hologram_1_8_R3 implements Hologram {
int count; private boolean exists = false;
private int count;
private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>(); private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>();
private String[] text; private String[] text;
private Location location; private Location location;
@ -28,12 +29,6 @@ public class Hologram_1_8_R3 implements Hologram {
create(); create();
} }
public Hologram_1_8_R3(String text, Location location) {
this.text = new String[]{text};
this.location = location;
create();
}
public Location getLocation() { public Location getLocation() {
return location; return location;
} }
@ -80,7 +75,20 @@ public class Hologram_1_8_R3 implements Hologram {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
this.location.add(0, this.DISTANCE, 0); this.location.add(0, this.DISTANCE, 0);
} }
this.count = 0;
count = 0;
exists = true;
}
public boolean exists() {
return exists;
}
public void remove() {
for (EntityArmorStand e : entitylist) {
e.die();
}
exists = false;
} }
} }

View File

@ -15,7 +15,8 @@ import java.util.List;
public class Hologram_1_9_R1 implements Hologram { public class Hologram_1_9_R1 implements Hologram {
int count; private boolean exists = false;
private int count;
private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>(); private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>();
private String[] text; private String[] text;
private Location location; private Location location;
@ -28,12 +29,6 @@ public class Hologram_1_9_R1 implements Hologram {
create(); create();
} }
public Hologram_1_9_R1(String text, Location location) {
this.text = new String[]{text};
this.location = location;
create();
}
public Location getLocation() { public Location getLocation() {
return location; return location;
} }
@ -80,7 +75,20 @@ public class Hologram_1_9_R1 implements Hologram {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
this.location.add(0, this.DISTANCE, 0); this.location.add(0, this.DISTANCE, 0);
} }
this.count = 0;
count = 0;
exists = true;
}
public boolean exists() {
return exists;
}
public void remove() {
for (EntityArmorStand e : entitylist) {
e.die();
}
exists = false;
} }
} }

View File

@ -15,7 +15,8 @@ import java.util.List;
public class Hologram_1_9_R2 implements Hologram { public class Hologram_1_9_R2 implements Hologram {
int count; private boolean exists = false;
private int count;
private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>(); private List<EntityArmorStand> entitylist = new ArrayList<EntityArmorStand>();
private String[] text; private String[] text;
private Location location; private Location location;
@ -28,12 +29,6 @@ public class Hologram_1_9_R2 implements Hologram {
create(); create();
} }
public Hologram_1_9_R2(String text, Location location) {
this.text = new String[]{text};
this.location = location;
create();
}
public Location getLocation() { public Location getLocation() {
return location; return location;
} }
@ -80,7 +75,20 @@ public class Hologram_1_9_R2 implements Hologram {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
this.location.add(0, this.DISTANCE, 0); this.location.add(0, this.DISTANCE, 0);
} }
this.count = 0;
count = 0;
exists = true;
}
public boolean exists() {
return exists;
}
public void remove() {
for (EntityArmorStand e : entitylist) {
e.die();
}
exists = false;
} }
} }

View File

@ -1,85 +0,0 @@
package de.epiceric.shopchest.interfaces.utils;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
import de.epiceric.shopchest.utils.ShopUtils;
import net.minecraft.server.v1_8_R1.EntityArmorStand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
public class Utils_1_8_R1 extends Utils {
@Override
public void reload(Player player) {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
if (shop.hasItem()) shop.getItem().remove();
ShopUtils.removeShop(shop);
for (Player p : ShopChest.getInstance().getServer().getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
shop.createHologram();
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
@Override
public void removeShops() {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
if (shop.hasItem()) shop.getItem().remove();
}
}
}

View File

@ -1,87 +0,0 @@
package de.epiceric.shopchest.interfaces.utils;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
import de.epiceric.shopchest.utils.ShopUtils;
import net.minecraft.server.v1_8_R2.EntityArmorStand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
public class Utils_1_8_R2 extends Utils {
@Override
public void reload(Player player) {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
if (shop.hasItem()) shop.getItem().remove();
ShopUtils.removeShop(shop);
for (Player p : ShopChest.getInstance().getServer().getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
shop.createHologram();
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
@Override
public void removeShops() {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
if (shop.hasItem()) shop.getItem().remove();
}
}
}

View File

@ -1,86 +0,0 @@
package de.epiceric.shopchest.interfaces.utils;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
import de.epiceric.shopchest.utils.ShopUtils;
import net.minecraft.server.v1_8_R3.EntityArmorStand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
public class Utils_1_8_R3 extends Utils {
@Override
public void reload(Player player) {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
if (shop.hasItem()) shop.getItem().remove();
ShopUtils.removeShop(shop);
for (Player p : ShopChest.getInstance().getServer().getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
shop.createHologram();
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
@Override
public void removeShops() {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
if (shop.hasItem()) shop.getItem().remove();
}
}
}

View File

@ -1,86 +0,0 @@
package de.epiceric.shopchest.interfaces.utils;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
import de.epiceric.shopchest.utils.ShopUtils;
import net.minecraft.server.v1_9_R1.EntityArmorStand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
public class Utils_1_9_R1 extends Utils {
@Override
public void reload(Player player) {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
if (shop.hasItem()) shop.getItem().remove();
ShopUtils.removeShop(shop);
for (Player p : ShopChest.getInstance().getServer().getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
shop.createHologram();
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
@Override
public void removeShops() {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
if (shop.hasItem()) shop.getItem().remove();
}
}
}

View File

@ -1,86 +0,0 @@
package de.epiceric.shopchest.interfaces.utils;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
import de.epiceric.shopchest.utils.ShopUtils;
import net.minecraft.server.v1_9_R2.EntityArmorStand;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
public class Utils_1_9_R2 extends Utils {
@Override
public void reload(Player player) {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
if (shop.hasItem()) shop.getItem().remove();
ShopUtils.removeShop(shop);
for (Player p : ShopChest.getInstance().getServer().getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
shop.createHologram();
shop.createItem();
ShopUtils.addShop(shop);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
@Override
public void removeShops() {
for (Shop shop : ShopUtils.getShops()) {
Hologram hologram = shop.getHologram();
for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
for (Object o : hologram.getEntities()) {
EntityArmorStand e = (EntityArmorStand) o;
e.getWorld().removeEntity(e);
}
if (shop.hasItem()) shop.getItem().remove();
}
}
}

View File

@ -3,9 +3,10 @@ package de.epiceric.shopchest.shop;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Hologram; import de.epiceric.shopchest.interfaces.Hologram;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.interfaces.hologram.*; import de.epiceric.shopchest.interfaces.hologram.*;
import de.epiceric.shopchest.utils.ItemNames; import de.epiceric.shopchest.utils.ItemNames;
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.OfflinePlayer;
@ -25,6 +26,7 @@ import java.util.UUID;
public class Shop { public class Shop {
private int id;
private ShopChest plugin; private ShopChest plugin;
private OfflinePlayer vendor; private OfflinePlayer vendor;
private ItemStack product; private ItemStack product;
@ -35,7 +37,8 @@ public class Shop {
private double sellPrice; private double sellPrice;
private ShopType shopType; private ShopType shopType;
public Shop(ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) { public Shop(int id, ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) {
this.id = id;
this.plugin = plugin; this.plugin = plugin;
this.vendor = vendor; this.vendor = vendor;
this.product = product; this.product = product;
@ -43,16 +46,27 @@ public class Shop {
this.buyPrice = buyPrice; this.buyPrice = buyPrice;
this.sellPrice = sellPrice; this.sellPrice = sellPrice;
this.shopType = shopType; this.shopType = shopType;
if (hologram == null || !hologram.exists()) createHologram();
if (item == null || item.isDead()) createItem();
} }
public void removeHologram() { public void removeHologram() {
for (Player player : plugin.getServer().getOnlinePlayers()) { if (hologram != null && hologram.exists()) {
getHologram().hidePlayer(player); for (Player p : Bukkit.getOnlinePlayers()) {
hologram.hidePlayer(p);
}
hologram.remove();
} }
} }
public void createItem() { public void removeItem() {
if (item != null && !item.isDead())
item.remove();
}
private void createItem() {
Item item; Item item;
Location itemLocation; Location itemLocation;
ItemStack itemStack; ItemStack itemStack;
@ -75,7 +89,7 @@ public class Shop {
this.item = item; this.item = item;
} }
public void createHologram() { private void createHologram() {
boolean doubleChest; boolean doubleChest;
@ -170,6 +184,10 @@ public class Shop {
} }
public int getID() {
return id;
}
public OfflinePlayer getVendor() { public OfflinePlayer getVendor() {
return vendor; return vendor;
} }
@ -198,14 +216,6 @@ public class Shop {
return hologram; return hologram;
} }
public Item getItem() {
return item;
}
public boolean hasItem() {
return item != null;
}
public enum ShopType { public enum ShopType {
NORMAL, NORMAL,
ADMIN; ADMIN;

View File

@ -1,7 +1,7 @@
package de.epiceric.shopchest.sql; package de.epiceric.shopchest.sql;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.interfaces.Utils; import de.epiceric.shopchest.utils.Utils;
import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.shop.Shop.ShopType; import de.epiceric.shopchest.shop.Shop.ShopType;
import de.epiceric.shopchest.utils.ShopUtils; import de.epiceric.shopchest.utils.ShopUtils;
@ -11,8 +11,6 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.io.File;
import java.io.IOException;
import java.sql.*; import java.sql.*;
import java.util.UUID; import java.util.UUID;
@ -100,29 +98,11 @@ public abstract class Database {
return 0; return 0;
} }
public int getShopID(Shop shop) {
for (int i = 1; i < getHighestID() + 1; i++) {
try {
Shop s = (Shop) get(i, null);
if (s.getLocation().equals(shop.getLocation())) {
return i;
}
} catch (NullPointerException ex) { /* Empty catch block... */ }
}
return 0;
}
public void removeShop(Shop shop) { public void removeShop(Shop shop) {
int id = getShopID(shop);
if (id == 0) return;
if (shop.hasItem()) shop.getItem().remove();
PreparedStatement ps = null; PreparedStatement ps = null;
try { try {
ps = connection.prepareStatement("DELETE FROM shop_list WHERE id = " + id + ";"); ps = connection.prepareStatement("DELETE FROM shop_list WHERE id = " + shop.getID() + ";");
ps.executeUpdate(); ps.executeUpdate();
} catch (SQLException ex) { } catch (SQLException ex) {
ex.printStackTrace(); ex.printStackTrace();
@ -149,7 +129,7 @@ public abstract class Database {
if (shop != null) if (shop != null)
return shop; return shop;
else { else {
return new Shop(plugin, return new Shop(id, plugin,
(OfflinePlayer) get(id, ShopInfo.VENDOR), (OfflinePlayer) get(id, ShopInfo.VENDOR),
(ItemStack) get(id, ShopInfo.PRODUCT), (ItemStack) get(id, ShopInfo.PRODUCT),
(Location) get(id, ShopInfo.LOCATION), (Location) get(id, ShopInfo.LOCATION),
@ -180,7 +160,7 @@ public abstract class Database {
if (shoptype.equals("INFINITE")) { if (shoptype.equals("INFINITE")) {
Shop newShop = new Shop(plugin, Shop newShop = new Shop(id, plugin,
(OfflinePlayer) get(id, ShopInfo.VENDOR), (OfflinePlayer) get(id, ShopInfo.VENDOR),
(ItemStack) get(id, ShopInfo.PRODUCT), (ItemStack) get(id, ShopInfo.PRODUCT),
(Location) get(id, ShopInfo.LOCATION), (Location) get(id, ShopInfo.LOCATION),
@ -188,7 +168,8 @@ public abstract class Database {
(double) get(id, ShopInfo.SELLPRICE), (double) get(id, ShopInfo.SELLPRICE),
ShopType.ADMIN); ShopType.ADMIN);
setShop(id, newShop); addShop(newShop);
return ShopType.ADMIN; return ShopType.ADMIN;
} }
return ShopType.valueOf(shoptype); return ShopType.valueOf(shoptype);
@ -205,13 +186,13 @@ public abstract class Database {
return null; return null;
} }
public void setShop(int id, Shop shop) { public void addShop(Shop shop) {
PreparedStatement ps = null; PreparedStatement ps = null;
try { try {
ps = connection.prepareStatement("REPLACE INTO shop_list (id,vendor,product,world,x,y,z,buyprice,sellprice,shoptype) VALUES(?,?,?,?,?,?,?,?,?,?)"); ps = connection.prepareStatement("REPLACE INTO shop_list (id,vendor,product,world,x,y,z,buyprice,sellprice,shoptype) VALUES(?,?,?,?,?,?,?,?,?,?)");
ps.setInt(1, id); ps.setInt(1, shop.getID());
ps.setString(2, shop.getVendor().getUniqueId().toString()); ps.setString(2, shop.getVendor().getUniqueId().toString());
ps.setString(3, Utils.encode(shop.getProduct())); ps.setString(3, Utils.encode(shop.getProduct()));
ps.setString(4, shop.getLocation().getWorld().getName()); ps.setString(4, shop.getLocation().getWorld().getName());
@ -230,11 +211,6 @@ public abstract class Database {
} }
} }
public void addShop(Shop shop) {
int id = getNextFreeID();
setShop(id, shop);
}
private void close(PreparedStatement ps, ResultSet rs) { private void close(PreparedStatement ps, ResultSet rs) {
try { try {
if (ps != null) if (ps != null)

View File

@ -2,8 +2,9 @@ package de.epiceric.shopchest.utils;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.interfaces.Utils;
import de.epiceric.shopchest.shop.Shop; import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.sql.Database;
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.OfflinePlayer;
@ -11,6 +12,7 @@ import org.bukkit.block.Block;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
import org.bukkit.block.DoubleChest; import org.bukkit.block.DoubleChest;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,7 +25,6 @@ public class ShopUtils {
private static HashMap<Location, Shop> shopLocation = new HashMap<>(); private static HashMap<Location, Shop> shopLocation = new HashMap<>();
public static Shop getShop(Location location) { public static Shop getShop(Location location) {
Location newLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ()); Location newLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ());
if (shopLocation.containsKey(newLocation)) { if (shopLocation.containsKey(newLocation)) {
@ -31,19 +32,14 @@ public class ShopUtils {
} else { } else {
return null; return null;
} }
} }
public static boolean isShop(Location location) { public static boolean isShop(Location location) {
Location newLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ()); Location newLocation = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ());
return shopLocation.containsKey(newLocation); return shopLocation.containsKey(newLocation);
} }
public static Shop[] getShops() { public static Shop[] getShops() {
ArrayList<Shop> shops = new ArrayList<>(); ArrayList<Shop> shops = new ArrayList<>();
for (Shop shop : shopLocation.values()) { for (Shop shop : shopLocation.values()) {
@ -51,16 +47,16 @@ public class ShopUtils {
} }
return shops.toArray(new Shop[shops.size()]); return shops.toArray(new Shop[shops.size()]);
} }
public static void addShop(Shop shop) { public static void addShop(Shop shop, boolean addToDatabase) {
Location loc = shop.getLocation(); Location loc = shop.getLocation();
Block b = loc.getBlock(); Block b = loc.getBlock();
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) { if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
Chest c = (Chest) b.getState(); Chest c = (Chest) b.getState();
InventoryHolder ih = c.getInventory().getHolder(); InventoryHolder ih = c.getInventory().getHolder();
if (ih instanceof DoubleChest) { if (ih instanceof DoubleChest) {
DoubleChest dc = (DoubleChest) ih; DoubleChest dc = (DoubleChest) ih;
Chest r = (Chest) dc.getRightSide(); Chest r = (Chest) dc.getRightSide();
@ -69,37 +65,40 @@ public class ShopUtils {
shopLocation.put(r.getLocation(), shop); shopLocation.put(r.getLocation(), shop);
shopLocation.put(l.getLocation(), shop); shopLocation.put(l.getLocation(), shop);
return; return;
} else {
}
}
shopLocation.put(shop.getLocation(), shop); shopLocation.put(shop.getLocation(), shop);
} }
public static void removeShop(Shop shop) { if (addToDatabase)
ShopChest.database.addShop(shop);
}
}
public static void removeShop(Shop shop, boolean removeFromDatabase) {
Location loc = shop.getLocation(); Location loc = shop.getLocation();
Block b = loc.getBlock(); Block b = loc.getBlock();
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) { if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
Chest c = (Chest) b.getState(); Chest c = (Chest) b.getState();
InventoryHolder ih = c.getInventory().getHolder(); InventoryHolder ih = c.getInventory().getHolder();
if (ih instanceof DoubleChest) { if (ih instanceof DoubleChest) {
DoubleChest dc = (DoubleChest) ih; DoubleChest dc = (DoubleChest) ih;
Chest r = (Chest) dc.getRightSide(); Chest r = (Chest) dc.getRightSide();
Chest l = (Chest) dc.getLeftSide(); Chest l = (Chest) dc.getLeftSide();
if (shop.hasItem()) shop.getItem().remove();
shop.removeHologram();
shopLocation.remove(r.getLocation()); shopLocation.remove(r.getLocation());
shopLocation.remove(l.getLocation()); shopLocation.remove(l.getLocation());
return; } else {
}
}
shopLocation.remove(shop.getLocation()); shopLocation.remove(shop.getLocation());
}
shop.removeItem();
shop.removeHologram();
if (removeFromDatabase)
ShopChest.database.removeShop(shop);
}
} }
public static int getShopLimit(Player p) { public static int getShopLimit(Player p) {
@ -137,7 +136,6 @@ public class ShopUtils {
limit = highestLimit; limit = highestLimit;
} }
} }
for (String key : Config.shopLimits_player()) { for (String key : Config.shopLimits_player()) {
@ -166,5 +164,28 @@ public class ShopUtils {
return shopCount; return shopCount;
} }
public static void reloadShops(Player player) {
for (Shop shop : ShopUtils.getShops()) {
ShopUtils.removeShop(shop, false);
}
int count = 0;
for (int id = 1; id < ShopChest.database.getHighestID() + 1; id++) {
try {
Shop shop = (Shop) ShopChest.database.get(id, Database.ShopInfo.SHOP);
ShopUtils.addShop(shop, false);
} catch (NullPointerException e) {
continue;
}
count++;
}
if (player != null) player.sendMessage(Config.reloaded_shops(count));
for (Player p : Bukkit.getOnlinePlayers()) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(p, p.getLocation(), p.getLocation()));
}
}
} }

View File

@ -1,4 +1,4 @@
package de.epiceric.shopchest.interfaces; package de.epiceric.shopchest.utils;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -14,7 +14,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
public abstract class Utils { public class Utils {
public static int getAmount(Inventory inventory, ItemStack itemStack) { public static int getAmount(Inventory inventory, ItemStack itemStack) {
int amount = 0; int amount = 0;
@ -80,9 +80,5 @@ public abstract class Utils {
return config.getItemStack("i", null); return config.getItemStack("i", null);
} }
public abstract void reload(Player p);
public abstract void removeShops();
} }