mirror of
				https://e.coding.net/circlecloud/QuickShop.git
				synced 2025-11-03 17:56:41 +00:00 
			
		
		
		
	add log create and change shop type...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
		@@ -162,23 +162,31 @@ public class PlayerListener implements Listener {
 | 
			
		||||
			final Block attached = Util.getAttached(b);
 | 
			
		||||
			final Shop shop = attached == null ? null : plugin.getShopManager().getShop(attached.getLocation());
 | 
			
		||||
			if (shop != null) {
 | 
			
		||||
				final Location loc = shop.getLocation();
 | 
			
		||||
				String shopmode = "";
 | 
			
		||||
				if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
 | 
			
		||||
					if (p.hasPermission("quickshop.unlimited")) {
 | 
			
		||||
						shop.setUnlimited(!shop.isUnlimited());
 | 
			
		||||
						p.sendMessage(MsgUtil.p("command.toggle-unlimited", (shop.isUnlimited() ? "§e无限模式" : "§c有限模式")));
 | 
			
		||||
						shopmode = shop.isUnlimited() ? "§e无限模式" : "§c有限模式";
 | 
			
		||||
						p.sendMessage(MsgUtil.p("command.toggle-unlimited", shopmode));
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					if (shop.getShopType() == ShopType.BUYING && p.hasPermission("quickshop.create.sell")) {
 | 
			
		||||
						shop.setShopType(ShopType.SELLING);
 | 
			
		||||
						p.sendMessage(MsgUtil.p("command.now-selling", shop.getDataName()));
 | 
			
		||||
						shopmode = "出售模式";
 | 
			
		||||
						return;
 | 
			
		||||
					} else if (shop.getShopType() == ShopType.SELLING && p.hasPermission("quickshop.create.buy")) {
 | 
			
		||||
						shop.setShopType(ShopType.BUYING);
 | 
			
		||||
						p.sendMessage(MsgUtil.p("command.now-buying", shop.getDataName()));
 | 
			
		||||
						shopmode = "收购模式";
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				if (!shopmode.isEmpty()) {
 | 
			
		||||
					plugin.log(String.format("玩家: %s 将 %s(%s,%s,%s) 的商店切换为 %s !", p.getName(), loc.getWorld().getName(), loc.getX(), loc.getY(), loc.getZ(), shopmode));
 | 
			
		||||
				}
 | 
			
		||||
				shop.setSignText();
 | 
			
		||||
				shop.update();
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -101,8 +101,16 @@ public class ShopManager {
 | 
			
		||||
		try {
 | 
			
		||||
			// Write it to the database
 | 
			
		||||
			final String q = "INSERT INTO shops (owner, price, itemConfig, x, y, z, world, unlimited, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
 | 
			
		||||
			plugin.getDB().execute(q, shop.getOwner().toString(), shop.getPrice(), Util.serialize(item), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), loc.getWorld().getName(),
 | 
			
		||||
					(shop.isUnlimited() ? 1 : 0), shop.getShopType().toID());
 | 
			
		||||
			plugin.getDB().execute(q,
 | 
			
		||||
					shop.getOwner().toString(),
 | 
			
		||||
					shop.getPrice(),
 | 
			
		||||
					Util.serialize(item),
 | 
			
		||||
					loc.getBlockX(),
 | 
			
		||||
					loc.getBlockY(),
 | 
			
		||||
					loc.getBlockZ(),
 | 
			
		||||
					loc.getWorld().getName(),
 | 
			
		||||
					(shop.isUnlimited() ? 1 : 0),
 | 
			
		||||
					shop.getShopType().toID());
 | 
			
		||||
			// Add it to the world
 | 
			
		||||
			addShop(loc.getWorld().getName(), shop);
 | 
			
		||||
		} catch (final Exception e) {
 | 
			
		||||
@@ -279,7 +287,7 @@ public class ShopManager {
 | 
			
		||||
						createShop(shop);
 | 
			
		||||
						p.sendMessage(MsgUtil.p("success-created-shop"));
 | 
			
		||||
						final Location loc = shop.getLocation();
 | 
			
		||||
						plugin.log(p.getName() + " created a " + shop.getDataName() + " shop at (" + loc.getWorld().getName() + " - " + loc.getX() + "," + loc.getY() + "," + loc.getZ() + ")");
 | 
			
		||||
						plugin.log(String.format("玩家: %s 创建了一个 %s 商店 在 (%s - %s,%s,%s)", p.getName(), shop.getDataName(), loc.getWorld().getName(), loc.getX(), loc.getY(), loc.getZ()));
 | 
			
		||||
						if (!plugin.getConfig().getBoolean("shop.lock")) {
 | 
			
		||||
							// Warn them if they haven't been warned since
 | 
			
		||||
							// reboot
 | 
			
		||||
@@ -390,14 +398,20 @@ public class ShopManager {
 | 
			
		||||
							if (plugin.getConfigManager().isShowTax()) {
 | 
			
		||||
								String msg = MsgUtil.p("player-bought-from-your-store-tax", p.getName(), "" + amount, shop.getDataName(), Util.format((tax * total)));
 | 
			
		||||
								if (stock == amount) {
 | 
			
		||||
									msg += "\n" + MsgUtil.p("shop-out-of-stock", "" + shop.getLocation().getBlockX(), "" + shop.getLocation().getBlockY(), "" + shop.getLocation().getBlockZ(),
 | 
			
		||||
									msg += "\n" + MsgUtil.p("shop-out-of-stock",
 | 
			
		||||
											"" + shop.getLocation().getBlockX(),
 | 
			
		||||
											"" + shop.getLocation().getBlockY(),
 | 
			
		||||
											"" + shop.getLocation().getBlockZ(),
 | 
			
		||||
											shop.getDataName());
 | 
			
		||||
								}
 | 
			
		||||
								MsgUtil.send(shop.getOwner(), msg);
 | 
			
		||||
							} else {
 | 
			
		||||
								String msg = MsgUtil.p("player-bought-from-your-store", p.getName(), "" + amount, shop.getDataName());
 | 
			
		||||
								if (stock == amount) {
 | 
			
		||||
									msg += "\n" + MsgUtil.p("shop-out-of-stock", "" + shop.getLocation().getBlockX(), "" + shop.getLocation().getBlockY(), "" + shop.getLocation().getBlockZ(),
 | 
			
		||||
									msg += "\n" + MsgUtil.p("shop-out-of-stock",
 | 
			
		||||
											"" + shop.getLocation().getBlockX(),
 | 
			
		||||
											"" + shop.getLocation().getBlockY(),
 | 
			
		||||
											"" + shop.getLocation().getBlockZ(),
 | 
			
		||||
											shop.getDataName());
 | 
			
		||||
								}
 | 
			
		||||
								MsgUtil.send(shop.getOwner(), msg);
 | 
			
		||||
@@ -406,7 +420,7 @@ public class ShopManager {
 | 
			
		||||
						// Transfers the item from A to B
 | 
			
		||||
						shop.sell(p, amount);
 | 
			
		||||
						MsgUtil.sendPurchaseSuccess(p, shop, amount);
 | 
			
		||||
						plugin.log(String.format("%s 从 %s 购买了 %s 件商品 花费 %s", p.getName(), shop.toString(), amount, shop.getPrice() * amount));
 | 
			
		||||
						plugin.log(String.format("玩家: %s 从 %s 购买了 %s 件商品 花费 %s", p.getName(), shop.toString(), amount, shop.getPrice() * amount));
 | 
			
		||||
					} else if (shop.isBuying()) {
 | 
			
		||||
						final int space = shop.getRemainingSpace();
 | 
			
		||||
						if (space < amount) {
 | 
			
		||||
@@ -462,7 +476,7 @@ public class ShopManager {
 | 
			
		||||
						}
 | 
			
		||||
						shop.buy(p, amount);
 | 
			
		||||
						MsgUtil.sendSellSuccess(p, shop, amount);
 | 
			
		||||
						plugin.log(String.format("%s 出售了 %s 件商品 到 %s 获得 %s", p.getName(), amount, shop.toString(), shop.getPrice() * amount));
 | 
			
		||||
						plugin.log(String.format("玩家: %s 出售了 %s 件商品 到 %s 获得 %s", p.getName(), amount, shop.toString(), shop.getPrice() * amount));
 | 
			
		||||
					}
 | 
			
		||||
					shop.setSignText(); // Update the signs count
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
package org.maxgamer.QuickShop.Util;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.entity.Item;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
 | 
			
		||||
@@ -10,43 +7,9 @@ public class NMS {
 | 
			
		||||
 | 
			
		||||
	public static void safeGuard(final Item item) throws ClassNotFoundException {
 | 
			
		||||
		rename(item.getItemStack());
 | 
			
		||||
		protect(item);
 | 
			
		||||
		item.setPickupDelay(2147483647);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private static void protect(final Item item) {
 | 
			
		||||
		try {
 | 
			
		||||
			final Field itemField = item.getClass().getDeclaredField("item");
 | 
			
		||||
			itemField.setAccessible(true);
 | 
			
		||||
			final Object nmsEntityItem = itemField.get(item);
 | 
			
		||||
			Method getItemStack;
 | 
			
		||||
			try {
 | 
			
		||||
				getItemStack = nmsEntityItem.getClass().getMethod("getItemStack", new Class[0]);
 | 
			
		||||
			} catch (final NoSuchMethodException e) {
 | 
			
		||||
				try {
 | 
			
		||||
					getItemStack = nmsEntityItem.getClass().getMethod("d", new Class[0]);
 | 
			
		||||
				} catch (final NoSuchMethodException e2) {
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			final Object itemStack = getItemStack.invoke(nmsEntityItem, new Object[0]);
 | 
			
		||||
			Field countField;
 | 
			
		||||
			try {
 | 
			
		||||
				countField = itemStack.getClass().getDeclaredField("count");
 | 
			
		||||
			} catch (final NoSuchFieldException e) {
 | 
			
		||||
				countField = itemStack.getClass().getDeclaredField("a");
 | 
			
		||||
			}
 | 
			
		||||
			countField.setAccessible(true);
 | 
			
		||||
			countField.set(itemStack, Integer.valueOf(1));
 | 
			
		||||
		} catch (final NoSuchFieldException e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			System.out.println("[QuickShop] Could not protect item from pickup properly! Dupes are now possible.");
 | 
			
		||||
		} catch (final Exception e) {
 | 
			
		||||
			System.out.println("Other error");
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private static void rename(final ItemStack iStack) {
 | 
			
		||||
		MarkUtil.addMark(iStack);
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,13 +24,13 @@ public class LogWatcher implements Runnable {
 | 
			
		||||
			this.ps = new PrintStream(fos);
 | 
			
		||||
		} catch (FileNotFoundException e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			plugin.getLogger().severe("Log file not found!");
 | 
			
		||||
			plugin.getLogger().severe("日志文件未找到!");
 | 
			
		||||
		} catch (IOException e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			plugin.getLogger().severe("Could not create log file!");
 | 
			
		||||
			plugin.getLogger().severe("无法创建日志文件!");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
	@Override
 | 
			
		||||
	public void run() {
 | 
			
		||||
		synchronized (logs) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user