mirror of
https://github.com/Xiao-MoMi/Custom-Fishing.git
synced 2025-12-29 03:49:07 +00:00
1.2.3
This commit is contained in:
@@ -45,10 +45,10 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class BagDataManager extends Function {
|
||||
|
||||
@@ -73,6 +73,7 @@ public class BonusManager extends Function {
|
||||
if (!util_file.mkdir()) return;
|
||||
CustomFishing.plugin.saveResource("utils" + File.separator + "fishfinder.yml", false);
|
||||
CustomFishing.plugin.saveResource("utils" + File.separator + "totem_items.yml", false);
|
||||
CustomFishing.plugin.saveResource("utils" + File.separator + "splash_items.yml", false);
|
||||
}
|
||||
File[] files = util_file.listFiles();
|
||||
if (files == null) return;
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
package net.momirealms.customfishing.manager;
|
||||
|
||||
import net.momirealms.customfishing.integration.VaultHook;
|
||||
import net.momirealms.customfishing.util.AdventureUtil;
|
||||
import net.momirealms.customfishing.util.ConfigUtil;
|
||||
import net.momirealms.customfishing.util.JedisUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -63,6 +61,12 @@ public class ConfigManager {
|
||||
public static boolean useRedis;
|
||||
public static int lavaMaxTime;
|
||||
public static int lavaMinTime;
|
||||
public static boolean enableWaterAnimation;
|
||||
public static boolean enableLavaAnimation;
|
||||
public static String water_item;
|
||||
public static String lava_item;
|
||||
public static int water_time;
|
||||
public static int lava_time;
|
||||
public static boolean addTagToFish;
|
||||
public static boolean logEarning;
|
||||
public static boolean vaultHook;
|
||||
@@ -119,6 +123,13 @@ public class ConfigManager {
|
||||
failureFadeStay = config.getInt("titles.failure.fade.stay", 30) * 50;
|
||||
failureFadeOut = config.getInt("titles.failure.fade.out", 10) * 50;
|
||||
|
||||
enableWaterAnimation = config.getBoolean("mechanics.splash-animation.water.enable", false);
|
||||
enableLavaAnimation = config.getBoolean("mechanics.splash-animation.lava.enable", false);
|
||||
water_item = config.getString("mechanics.splash-animation.water.item");
|
||||
lava_item = config.getString("mechanics.splash-animation.lava.item");
|
||||
water_time = config.getInt("mechanics.splash-animation.water.time");
|
||||
lava_time = config.getInt("mechanics.splash-animation.lava.time");
|
||||
|
||||
lavaMinTime = config.getInt("mechanics.lava-fishing.min-wait-time", 100);
|
||||
lavaMaxTime = config.getInt("mechanics.lava-fishing.max-wait-time", 600) - lavaMinTime;
|
||||
|
||||
|
||||
@@ -450,9 +450,6 @@ public class FishingManager extends Function {
|
||||
Competition.currentCompetition.getBossBarManager().tryJoin(player);
|
||||
}
|
||||
|
||||
ItemStackUtil.addExtraMeta(drop, droppedItem);
|
||||
if (ConfigManager.addTagToFish) ItemStackUtil.addIdentifier(drop, "loot", droppedItem.getKey());
|
||||
|
||||
dropItem(player, location, fishResultEvent.isDouble(), drop);
|
||||
for (ActionInterface action : droppedItem.getSuccessActions())
|
||||
action.doOn(player, null);
|
||||
@@ -470,6 +467,8 @@ public class FishingManager extends Function {
|
||||
ItemStackUtil.addRandomDamage(drop);
|
||||
if (ConfigManager.preventPickUp)
|
||||
ItemStackUtil.addOwner(drop, player.getName());
|
||||
ItemStackUtil.addExtraMeta(drop, droppedItem);
|
||||
if (ConfigManager.addTagToFish) ItemStackUtil.addIdentifier(drop, "loot", droppedItem.getKey());
|
||||
}
|
||||
return drop;
|
||||
}
|
||||
|
||||
@@ -358,6 +358,8 @@ public class SellManager extends Function {
|
||||
.setVariable("size", size);
|
||||
price = (float) expression.evaluate();
|
||||
}
|
||||
Double money = Optional.ofNullable(nbtItem.getDouble("Price")).orElse(0d);
|
||||
price += money;
|
||||
if (price == 0) {
|
||||
price = Optional.ofNullable(vanillaPrices.get(itemStack.getType())).orElse(0f);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@ package net.momirealms.customfishing.object;
|
||||
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.*;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
public class Function {
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
package net.momirealms.customfishing.object.fishing;
|
||||
|
||||
import com.plotsquared.core.plot.PlotId;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import net.kyori.adventure.sound.Sound;
|
||||
import net.momirealms.customfishing.CustomFishing;
|
||||
import net.momirealms.customfishing.manager.ConfigManager;
|
||||
import net.momirealms.customfishing.manager.FishingManager;
|
||||
import net.momirealms.customfishing.manager.LootManager;
|
||||
import net.momirealms.customfishing.manager.MessageManager;
|
||||
import net.momirealms.customfishing.object.loot.Loot;
|
||||
import net.momirealms.customfishing.util.AdventureUtil;
|
||||
import net.momirealms.customfishing.util.ArmorStandUtil;
|
||||
import net.momirealms.customfishing.util.FakeItemUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@@ -34,11 +33,9 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.FishHook;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.List;
|
||||
@@ -52,15 +49,16 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
private final Bonus bonus;
|
||||
private final FishingManager fishingManager;
|
||||
private boolean hooked;
|
||||
private boolean first_time;
|
||||
private boolean reserve;
|
||||
private int jump_timer;
|
||||
private final int lureLevel;
|
||||
private BukkitTask cache_1;
|
||||
private BukkitTask cache_2;
|
||||
private BukkitTask cache_3;
|
||||
private ArmorStand entityCache;
|
||||
private int entityID;
|
||||
private final int entityID;
|
||||
private boolean land;
|
||||
private boolean first;
|
||||
|
||||
public BobberCheckTask(Player player, Bonus bonus, FishHook fishHook, FishingManager fishingManager, int lureLevel, int entityID) {
|
||||
this.fishHook = fishHook;
|
||||
@@ -68,11 +66,12 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
this.player = player;
|
||||
this.timer = 0;
|
||||
this.bonus = bonus;
|
||||
this.first_time = true;
|
||||
this.reserve = true;
|
||||
this.jump_timer = 0;
|
||||
this.lureLevel = lureLevel;
|
||||
this.entityID = entityID;
|
||||
this.land = false;
|
||||
this.first = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,6 +99,10 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
stop();
|
||||
return;
|
||||
}
|
||||
if (first) {
|
||||
ArmorStandUtil.sendAnimationToPlayer(fishHook.getLocation(), player, ConfigManager.lava_item, ConfigManager.lava_time);
|
||||
first = false;
|
||||
}
|
||||
if (hooked) {
|
||||
jump_timer++;
|
||||
if (jump_timer < 4) {
|
||||
@@ -109,13 +112,13 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
fishHook.setVelocity(new Vector(0,0.24,0));
|
||||
return;
|
||||
}
|
||||
if (first_time) {
|
||||
if (jump_timer < 8) {
|
||||
if (reserve) {
|
||||
if (jump_timer < 5) {
|
||||
jump_timer++;
|
||||
fishHook.setVelocity(new Vector(0,0.18 - jump_timer * 0.01,0));
|
||||
fishHook.setVelocity(new Vector(0,0.2 - jump_timer * 0.02,0));
|
||||
return;
|
||||
}
|
||||
first_time = false;
|
||||
reserve = false;
|
||||
randomTime();
|
||||
spawnArmorStand(fishHook.getLocation());
|
||||
}
|
||||
@@ -126,6 +129,9 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(CustomFishing.plugin, () -> {
|
||||
List<Loot> possibleLoots = fishingManager.getPossibleLootList(new FishingCondition(fishHook.getLocation(), player), false, LootManager.WATERLOOTS.values());
|
||||
fishingManager.getNextLoot(player, bonus, possibleLoots);
|
||||
if (ConfigManager.enableWaterAnimation) {
|
||||
ArmorStandUtil.sendAnimationToPlayer(fishHook.getLocation(), player, ConfigManager.water_item, ConfigManager.water_time);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -184,7 +190,7 @@ public class BobberCheckTask extends BukkitRunnable {
|
||||
}, random);
|
||||
cache_2 = Bukkit.getScheduler().runTaskLater(CustomFishing.plugin, () -> {
|
||||
hooked = false;
|
||||
first_time = true;
|
||||
reserve = true;
|
||||
}, random + 40);
|
||||
cache_3 = new LavaEffect(fishHook.getLocation()).runTaskTimerAsynchronously(CustomFishing.plugin,random - 60,1);
|
||||
}
|
||||
|
||||
@@ -83,7 +83,12 @@ public class FishingPlayer extends BukkitRunnable {
|
||||
internalTimer++;
|
||||
return;
|
||||
} else {
|
||||
progress = getNextProgress(progress, face);
|
||||
if (face) {
|
||||
progress += difficulty.speed();
|
||||
}
|
||||
else {
|
||||
progress -= difficulty.speed();
|
||||
}
|
||||
if (progress > size) {
|
||||
face = !face;
|
||||
progress = 2 * size - progress;
|
||||
@@ -112,14 +117,6 @@ public class FishingPlayer extends BukkitRunnable {
|
||||
}
|
||||
}
|
||||
|
||||
private int getNextProgress(int i, boolean face) {
|
||||
if (face) {
|
||||
return i + difficulty.speed();
|
||||
}
|
||||
else {
|
||||
return i - difficulty.speed();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSuccess() {
|
||||
int last = progress / range;
|
||||
|
||||
@@ -19,16 +19,22 @@ package net.momirealms.customfishing.util;
|
||||
|
||||
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.WrappedChatComponent;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.momirealms.customfishing.CustomFishing;
|
||||
import net.momirealms.customfishing.manager.BonusManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
|
||||
public class ArmorStandUtil {
|
||||
|
||||
@@ -85,4 +91,35 @@ public class ArmorStandUtil {
|
||||
wrappedDataWatcher.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(3, serializer1), true);
|
||||
return wrappedDataWatcher;
|
||||
}
|
||||
}
|
||||
|
||||
public static PacketContainer getEquipPacket(int id, ItemStack itemStack) {
|
||||
PacketContainer equipPacket = new PacketContainer(PacketType.Play.Server.ENTITY_EQUIPMENT);
|
||||
equipPacket.getIntegers().write(0, id);
|
||||
List<Pair<EnumWrappers.ItemSlot, ItemStack>> pairs = new ArrayList<>();
|
||||
pairs.add(new Pair<>(EnumWrappers.ItemSlot.HEAD, itemStack));
|
||||
equipPacket.getSlotStackPairLists().write(0, pairs);
|
||||
return equipPacket;
|
||||
}
|
||||
|
||||
public static void sendAnimationToPlayer(Location location, Player player, String item, int time) {
|
||||
int id = new Random().nextInt(100000000);
|
||||
ItemStack itemStack = BonusManager.UTILITEMS.get(item);
|
||||
if (itemStack == null) return;
|
||||
try {
|
||||
CustomFishing.protocolManager.sendServerPacket(player, getSpawnPacket(id, location.clone().subtract(0,1,0)));
|
||||
CustomFishing.protocolManager.sendServerPacket(player, getMetaPacket(id));
|
||||
CustomFishing.protocolManager.sendServerPacket(player, getEquipPacket(id, itemStack));
|
||||
}
|
||||
catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(CustomFishing.plugin, () -> {
|
||||
try {
|
||||
CustomFishing.protocolManager.sendServerPacket(player, getDestroyPacket(id));
|
||||
}
|
||||
catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, time);
|
||||
}
|
||||
}
|
||||
@@ -3,13 +3,11 @@ package net.momirealms.customfishing.util;
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import io.lumine.mythic.api.packs.Pack;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user