9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-25 09:59:20 +00:00
This commit is contained in:
Xiao-MoMi
2023-01-06 13:13:07 +08:00
parent afc201c027
commit 14823c371f
7 changed files with 62 additions and 58 deletions

View File

@@ -19,6 +19,8 @@ package net.momirealms.customcrops;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import de.tr7zw.changeme.nbtapi.utils.MinecraftVersion;
import de.tr7zw.changeme.nbtapi.utils.VersionChecker;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.momirealms.customcrops.commands.PluginCommand;
import net.momirealms.customcrops.config.ConfigUtil;
@@ -31,6 +33,7 @@ import net.momirealms.customcrops.utils.AdventureUtil;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.kingdoms.main.ConfigManager;
import java.util.Objects;
@@ -38,6 +41,7 @@ public final class CustomCrops extends JavaPlugin {
public static BukkitAudiences adventure;
public static CustomCrops plugin;
public static String version;
public static ProtocolManager protocolManager;
private PlaceholderManager placeholderManager;
@@ -78,8 +82,15 @@ public final class CustomCrops extends JavaPlugin {
adventure = BukkitAudiences.create(plugin);
protocolManager = ProtocolLibrary.getProtocolManager();
version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
AdventureUtil.consoleMessage("[CustomCrops] Running on <white>" + Bukkit.getVersion());
MinecraftVersion.disableBStats();
MinecraftVersion.disablePackageWarning();
MinecraftVersion.disableUpdateCheck();
MinecraftVersion.getVersion();
VersionChecker.hideOk = true;
if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) {
MainConfig.customPlugin = "itemsadder";
AdventureUtil.consoleMessage("[CustomCrops] Custom Item Plugin Platform: <#BA55D3><u>ItemsAdder");
@@ -107,7 +118,10 @@ public final class CustomCrops extends JavaPlugin {
}
AdventureUtil.consoleMessage("[CustomCrops] Plugin Enabled!");
new Metrics(this, 16593);
if (MainConfig.metrics) {
new Metrics(this, 16593);
}
}
@Override

View File

@@ -126,12 +126,14 @@ public class MainConfig {
public static int saveInterval;
public static boolean dryMakesCropDead;
public static double dryDeadChance;
public static boolean metrics;
public static void load() {
ConfigUtil.update("config.yml");
YamlConfiguration config = ConfigUtil.getConfig("config.yml");
lang = config.getString("lang","english");
metrics = config.getBoolean("metrics", true);
whiteOrBlack = config.getString("worlds.mode","whitelist").equals("whitelist");
worldNameList = config.getStringList("worlds.list");

View File

@@ -50,53 +50,28 @@ public class CrowTask extends BukkitRunnable {
Location relative = crop.clone().subtract(from);
this.vectorDown = new Vector(relative.getX() / 100, -0.1, relative.getZ() / 100);
this.vectorUp = new Vector(relative.getX() / 100, 0.1, relative.getZ() / 100);
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getSpawnPacket(entityID, from));
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getMetaPacket(entityID));
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowFly)));
}
catch (InvocationTargetException ignore) {
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getSpawnPacket(entityID, from));
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getMetaPacket(entityID));
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowFly)));
}
@Override
public void run() {
timer++;
if (timer < 100) {
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getTeleportPacket(entityID, from.add(vectorDown), yaw));
}
catch (InvocationTargetException e) {
//release
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getTeleportPacket(entityID, from.add(vectorDown), yaw));
}
else if (timer == 100){
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowLand)));
}
catch (InvocationTargetException ignore) {
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowLand)));
}
else if (timer == 150) {
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowFly)));
}
catch (InvocationTargetException ignore) {
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getEquipPacket(entityID, armorStandUtil.getCropManager().getCustomInterface().getItemStack(BasicItemConfig.crowFly)));
}
else if (timer > 150) {
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getTeleportPacket(entityID, from.add(vectorUp), yaw));
}
catch (InvocationTargetException ignore) {
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getTeleportPacket(entityID, from.add(vectorUp), yaw));
}
if (timer > 300) {
try {
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getDestroyPacket(entityID));
}
catch (InvocationTargetException ignore) {
}
CustomCrops.protocolManager.sendServerPacket(player, armorStandUtil.getDestroyPacket(entityID));
cancel();
}
}

View File

@@ -21,7 +21,9 @@ import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.Pair;
import com.comphenix.protocol.wrappers.WrappedDataValue;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.google.common.collect.Lists;
import net.momirealms.customcrops.CustomCrops;
import net.momirealms.customcrops.config.BasicItemConfig;
import net.momirealms.customcrops.config.MainConfig;
@@ -33,10 +35,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import java.util.*;
public class ArmorStandUtil {
@@ -52,20 +51,12 @@ public class ArmorStandUtil {
public void playWaterAnimation(Player player, Location location) {
int id = new Random().nextInt(1000000000);
try {
CustomCrops.protocolManager.sendServerPacket(player, getSpawnPacket(id, location));
CustomCrops.protocolManager.sendServerPacket(player, getMetaPacket(id));
CustomCrops.protocolManager.sendServerPacket(player, getEquipPacket(id, cropManager.getCustomInterface().getItemStack(BasicItemConfig.waterEffect)));
} catch (InvocationTargetException e) {
e.printStackTrace();
}
CustomCrops.protocolManager.sendServerPacket(player, getSpawnPacket(id, location));
CustomCrops.protocolManager.sendServerPacket(player, getMetaPacket(id));
CustomCrops.protocolManager.sendServerPacket(player, getEquipPacket(id, cropManager.getCustomInterface().getItemStack(BasicItemConfig.waterEffect)));
Bukkit.getScheduler().runTaskLaterAsynchronously(CustomCrops.plugin, () -> {
try {
CustomCrops.protocolManager.sendServerPacket(player, getDestroyPacket(id));
} catch (InvocationTargetException e) {
e.printStackTrace();
}
CustomCrops.protocolManager.sendServerPacket(player, getDestroyPacket(id));
}, MainConfig.timeToWork/2);
}
@@ -99,7 +90,17 @@ public class ArmorStandUtil {
public PacketContainer getMetaPacket(int id) {
PacketContainer metaPacket = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
metaPacket.getIntegers().write(0, id);
metaPacket.getWatchableCollectionModifier().write(0, createDataWatcher().getWatchableObjects());
if (CustomCrops.version.equals("v1_19_R2")) {
WrappedDataWatcher wrappedDataWatcher = createDataWatcher();
List<WrappedDataValue> wrappedDataValueList = Lists.newArrayList();
wrappedDataWatcher.getWatchableObjects().stream().filter(Objects::nonNull).forEach(entry -> {
final WrappedDataWatcher.WrappedDataWatcherObject dataWatcherObject = entry.getWatcherObject();
wrappedDataValueList.add(new WrappedDataValue(dataWatcherObject.getIndex(), dataWatcherObject.getSerializer(), entry.getRawValue()));
});
metaPacket.getDataValueCollectionModifier().write(0, wrappedDataValueList);
} else {
metaPacket.getWatchableCollectionModifier().write(0, createDataWatcher().getWatchableObjects());
}
return metaPacket;
}

View File

@@ -20,7 +20,9 @@ package net.momirealms.customcrops.utils;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedDataValue;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.google.common.collect.Lists;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
@@ -65,7 +67,18 @@ public class HologramUtil {
wrappedDataWatcher.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, serializer2), mask1);
wrappedDataWatcher.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(15, serializer2), mask2);
metaPacket.getModifier().write(0,id);
metaPacket.getWatchableCollectionModifier().write(0, wrappedDataWatcher.getWatchableObjects());
if (CustomCrops.version.equals("v1_19_R2")) {
List<WrappedDataValue> wrappedDataValueList = Lists.newArrayList();
wrappedDataWatcher.getWatchableObjects().stream().filter(Objects::nonNull).forEach(entry -> {
final WrappedDataWatcher.WrappedDataWatcherObject dataWatcherObject = entry.getWatcherObject();
wrappedDataValueList.add(new WrappedDataValue(dataWatcherObject.getIndex(), dataWatcherObject.getSerializer(), entry.getRawValue()));
});
metaPacket.getDataValueCollectionModifier().write(0, wrappedDataValueList);
} else {
metaPacket.getWatchableCollectionModifier().write(0, wrappedDataWatcher.getWatchableObjects());
}
try {
CustomCrops.protocolManager.sendServerPacket(player, spawnPacket);
CustomCrops.protocolManager.sendServerPacket(player, metaPacket);