9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2025-12-29 03:49:07 +00:00
This commit is contained in:
Xiao-MoMi
2022-10-27 16:22:28 +08:00
parent a99d02f88f
commit 348c7bc2d6
14 changed files with 111 additions and 38 deletions

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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 {

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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;