mirror of
https://github.com/Xiao-MoMi/Custom-Fishing.git
synced 2025-12-27 02:49:17 +00:00
improved default config
This commit is contained in:
@@ -11,7 +11,7 @@ import net.momirealms.customfishing.api.CustomFishingPlugin;
|
||||
import net.momirealms.customfishing.api.integration.SeasonInterface;
|
||||
import net.momirealms.customfishing.api.manager.AdventureManager;
|
||||
import net.momirealms.customfishing.api.mechanic.condition.FishingPreparation;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.Effect;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -57,7 +57,7 @@ public class DebugCommand {
|
||||
StringTooltip.ofString("false", "loots in water")
|
||||
})))
|
||||
.executesPlayer((player, arg) -> {
|
||||
Effect initialEffect = CustomFishingPlugin.get().getEffectManager().getInitialEffect();
|
||||
FishingEffect initialEffect = CustomFishingPlugin.get().getEffectManager().getInitialEffect();
|
||||
FishingPreparation fishingPreparation = new FishingPreparation(player, CustomFishingPlugin.get());
|
||||
boolean inLava = (boolean) arg.getOrDefault("lava fishing", false);
|
||||
fishingPreparation.insertArg("{lava}", String.valueOf(inLava));
|
||||
@@ -79,7 +79,7 @@ public class DebugCommand {
|
||||
AdventureManager adventureManager = AdventureManagerImpl.getInstance();
|
||||
adventureManager.sendMessage(player, "<red>---------- results ---------");
|
||||
for (LootWithWeight loot : lootArray) {
|
||||
adventureManager.sendMessage(player, "<hover:show_text:'<blue>GET'><click:run_command:/cfishing items loot get "+ loot.key() + ">" +loot.key() + "</click></hover>: <gold>" + String.format("%.2f", loot.weight()*100/sum) + "% <gray>(" + String.format("%.2f", loot.weight()) + ")");
|
||||
adventureManager.sendMessage(player, loot.key() + ": <gold>" + String.format("%.2f", loot.weight()*100/sum) + "% <gray>(" + String.format("%.2f", loot.weight()) + ")");
|
||||
}
|
||||
adventureManager.sendMessage(player, "<red>----------- end -----------");
|
||||
});
|
||||
|
||||
@@ -23,8 +23,10 @@ import net.momirealms.customfishing.api.common.Pair;
|
||||
import net.momirealms.customfishing.api.manager.EffectManager;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.Effect;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.EffectModifier;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.Modifier;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.WeightModifier;
|
||||
import net.momirealms.customfishing.api.mechanic.requirement.Requirement;
|
||||
import net.momirealms.customfishing.api.util.LogUtils;
|
||||
import net.momirealms.customfishing.util.ConfigUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -46,6 +48,10 @@ public class EffectManagerImpl implements EffectManager {
|
||||
this.effectMap = new HashMap<>();
|
||||
}
|
||||
|
||||
public void disable() {
|
||||
this.effectMap.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean registerEffectItem(Key key, EffectCarrier effect) {
|
||||
if (effectMap.containsKey(key)) return false;
|
||||
@@ -107,7 +113,7 @@ public class EffectManagerImpl implements EffectManager {
|
||||
return new EffectCarrier.Builder()
|
||||
.key(key)
|
||||
.requirements(plugin.getRequirementManager().getRequirements(section.getConfigurationSection("requirements"), true))
|
||||
.effect(getEffectFromSection(section.getConfigurationSection("effects")))
|
||||
.effect(getEffectModifiers(section.getConfigurationSection("effects")))
|
||||
.actionMap(plugin.getActionManager().getActionMap(section.getConfigurationSection("events")))
|
||||
.build();
|
||||
}
|
||||
@@ -115,8 +121,10 @@ public class EffectManagerImpl implements EffectManager {
|
||||
public Effect getEffectFromSection(ConfigurationSection section) {
|
||||
if (section == null) return getInitialEffect();
|
||||
return new FishingEffect.Builder()
|
||||
.lootWeightModifier(ConfigUtils.getModifiers(section.getStringList("weight-single")))
|
||||
.lootWeightModifier(getGroupModifiers(section.getStringList("weight-group")))
|
||||
.addWeightModifier(ConfigUtils.getModifiers(section.getStringList("weight-single")))
|
||||
.addWeightModifier(getGroupModifiers(section.getStringList("weight-group")))
|
||||
.addWeightModifierIgnored(ConfigUtils.getModifiers(section.getStringList("weight-single-ignore-condition")))
|
||||
.addWeightModifierIgnored(getGroupModifiers(section.getStringList("weight-group-ignore-condition")))
|
||||
.timeModifier(section.getDouble("hook-time", 1))
|
||||
.difficultyModifier(section.getDouble("difficulty", 0))
|
||||
.multipleLootChance(section.getDouble("multiple-loot", 0))
|
||||
@@ -138,16 +146,12 @@ public class EffectManagerImpl implements EffectManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Effect getInitialEffect() {
|
||||
public FishingEffect getInitialEffect() {
|
||||
return new FishingEffect.Builder().build();
|
||||
}
|
||||
|
||||
public void disable() {
|
||||
this.effectMap.clear();
|
||||
}
|
||||
|
||||
private List<Pair<String, Modifier>> getGroupModifiers(List<String> modList) {
|
||||
List<Pair<String, Modifier>> result = new ArrayList<>();
|
||||
private List<Pair<String, WeightModifier>> getGroupModifiers(List<String> modList) {
|
||||
List<Pair<String, WeightModifier>> result = new ArrayList<>();
|
||||
for (String group : modList) {
|
||||
String[] split = group.split(":",2);
|
||||
String key = split[0];
|
||||
@@ -162,4 +166,104 @@ public class EffectManagerImpl implements EffectManager {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public EffectModifier[] getEffectModifiers(ConfigurationSection section) {
|
||||
if (section == null) return new EffectModifier[0];
|
||||
ArrayList<EffectModifier> modifiers = new ArrayList<>();
|
||||
for (Map.Entry<String, Object> entry: section.getValues(false).entrySet()) {
|
||||
if (entry.getValue() instanceof ConfigurationSection inner) {
|
||||
EffectModifier effectModifier = getEffectModifier(inner);
|
||||
if (effectModifier != null)
|
||||
modifiers.add(effectModifier);
|
||||
}
|
||||
}
|
||||
return modifiers.toArray(new EffectModifier[0]);
|
||||
}
|
||||
|
||||
public EffectModifier getEffectModifier(ConfigurationSection section) {
|
||||
String type = section.getString("type");
|
||||
if (type == null) return null;
|
||||
|
||||
switch (type) {
|
||||
case "weight-mod" -> {
|
||||
var modList = ConfigUtils.getModifiers(section.getStringList("value"));
|
||||
return ((effect, condition) -> {
|
||||
effect.addWeightModifier(modList);
|
||||
});
|
||||
}
|
||||
case "weight-mod-ignore-conditions" -> {
|
||||
var modList = ConfigUtils.getModifiers(section.getStringList("value"));
|
||||
return ((effect, condition) -> {
|
||||
effect.addWeightModifierIgnored(modList);
|
||||
});
|
||||
}
|
||||
case "group-mod" -> {
|
||||
var modList = getGroupModifiers(section.getStringList("value"));
|
||||
return ((effect, condition) -> {
|
||||
effect.addWeightModifier(modList);
|
||||
});
|
||||
}
|
||||
case "group-mod-ignore-conditions" -> {
|
||||
var modList = getGroupModifiers(section.getStringList("value"));
|
||||
return ((effect, condition) -> {
|
||||
effect.addWeightModifierIgnored(modList);
|
||||
});
|
||||
}
|
||||
case "hook-time" -> {
|
||||
double time = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setHookTimeModifier(effect.getHookTimeModifier() + time - 1);
|
||||
});
|
||||
}
|
||||
case "difficulty" -> {
|
||||
double difficulty = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setDifficultyModifier(effect.getDifficultyModifier() + difficulty);
|
||||
});
|
||||
}
|
||||
case "multiple-loot" -> {
|
||||
double multiple = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setMultipleLootChance(effect.getMultipleLootChance() + multiple);
|
||||
});
|
||||
}
|
||||
case "score-bonus" -> {
|
||||
double multiple = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setScoreMultiplier(effect.getScoreMultiplier() + multiple - 1);
|
||||
});
|
||||
}
|
||||
case "size-bonus" -> {
|
||||
double multiple = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setSizeMultiplier(effect.getSizeMultiplier() + multiple - 1);
|
||||
});
|
||||
}
|
||||
case "game-time" -> {
|
||||
double time = section.getDouble("value");
|
||||
return ((effect, condition) -> {
|
||||
effect.setGameTimeModifier(effect.getGameTimeModifier() + time);
|
||||
});
|
||||
}
|
||||
case "lava-fishing" -> {
|
||||
return ((effect, condition) -> effect.setLavaFishing(true));
|
||||
}
|
||||
case "conditional" -> {
|
||||
Requirement[] requirements = plugin.getRequirementManager().getRequirements(section.getConfigurationSection("conditions"), false);
|
||||
EffectModifier[] modifiers = getEffectModifiers(section.getConfigurationSection("effects"));
|
||||
return ((effect, condition) -> {
|
||||
for (Requirement requirement : requirements)
|
||||
if (!requirement.isConditionMet(condition))
|
||||
return;
|
||||
for (EffectModifier modifier : modifiers) {
|
||||
modifier.modify(effect, condition);
|
||||
}
|
||||
});
|
||||
}
|
||||
default -> {
|
||||
LogUtils.warn("Effect " + type + " doesn't exist.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,12 +33,13 @@ import net.momirealms.customfishing.api.mechanic.competition.FishingCompetition;
|
||||
import net.momirealms.customfishing.api.mechanic.condition.Condition;
|
||||
import net.momirealms.customfishing.api.mechanic.condition.FishingPreparation;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.Effect;
|
||||
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
|
||||
import net.momirealms.customfishing.api.mechanic.game.GameConfig;
|
||||
import net.momirealms.customfishing.api.mechanic.game.GameInstance;
|
||||
import net.momirealms.customfishing.api.mechanic.game.GameSettings;
|
||||
import net.momirealms.customfishing.api.mechanic.game.GamingPlayer;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.Loot;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.Modifier;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.WeightModifier;
|
||||
import net.momirealms.customfishing.api.util.LogUtils;
|
||||
import net.momirealms.customfishing.api.util.WeightUtils;
|
||||
import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl;
|
||||
@@ -254,7 +255,7 @@ public class FishingManagerImpl implements Listener, FishingManager {
|
||||
return;
|
||||
}
|
||||
// Merge rod/bait/util effects
|
||||
Effect initialEffect = plugin.getEffectManager().getInitialEffect();
|
||||
FishingEffect initialEffect = plugin.getEffectManager().getInitialEffect();
|
||||
fishingPreparation.mergeEffect(initialEffect);
|
||||
|
||||
// Apply enchants
|
||||
@@ -271,8 +272,8 @@ public class FishingManagerImpl implements Listener, FishingManager {
|
||||
// Store fishhook entity and apply the effects
|
||||
final FishHook fishHook = event.getHook();
|
||||
this.hookCacheMap.put(player.getUniqueId(), fishHook);
|
||||
fishHook.setMaxWaitTime((int) (fishHook.getMaxWaitTime() * initialEffect.getTimeModifier()));
|
||||
fishHook.setMinWaitTime((int) (fishHook.getMinWaitTime() * initialEffect.getTimeModifier()));
|
||||
fishHook.setMaxWaitTime((int) (fishHook.getMaxWaitTime() * initialEffect.getHookTimeModifier()));
|
||||
fishHook.setMinWaitTime((int) (fishHook.getMinWaitTime() * initialEffect.getHookTimeModifier()));
|
||||
// Reduce amount & Send animation
|
||||
var baitItem = fishingPreparation.getBaitItemStack();
|
||||
if (baitItem != null) {
|
||||
@@ -512,11 +513,7 @@ public class FishingManagerImpl implements Listener, FishingManager {
|
||||
var effect = state.getEffect();
|
||||
var fishingPreparation = state.getPreparation();
|
||||
var player = fishingPreparation.getPlayer();
|
||||
|
||||
fishingPreparation.insertArg("{size-multiplier}", String.format("%.2f", effect.getSizeMultiplier()));
|
||||
fishingPreparation.insertArg("{x}", String.valueOf(hook.getLocation().getBlockX()));
|
||||
fishingPreparation.insertArg("{y}", String.valueOf(hook.getLocation().getBlockY()));
|
||||
fishingPreparation.insertArg("{z}", String.valueOf(hook.getLocation().getBlockZ()));
|
||||
|
||||
plugin.getScheduler().runTaskSync(() -> {
|
||||
|
||||
@@ -618,13 +615,14 @@ public class FishingManagerImpl implements Listener, FishingManager {
|
||||
@Override
|
||||
public Map<String, Double> getPossibleLootKeysWithWeight(Effect initialEffect, FishingPreparation fishingPreparation) {
|
||||
Map<String, Double> lootWithWeight = plugin.getRequirementManager().getLootWithWeight(fishingPreparation);
|
||||
if (lootWithWeight.size() == 0) {
|
||||
LogUtils.warn(String.format("No Loot found at %s for Player %s!", fishingPreparation.getPlayer().getLocation(), fishingPreparation.getPlayer().getName()));
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
Player player = fishingPreparation.getPlayer();
|
||||
for (Pair<String, Modifier> pair : initialEffect.getLootWeightModifier()) {
|
||||
for (Pair<String, WeightModifier> pair : initialEffect.getWeightModifier()) {
|
||||
Double previous = lootWithWeight.get(pair.left());
|
||||
if (previous != null)
|
||||
lootWithWeight.put(pair.left(), pair.right().modify(player, previous));
|
||||
}
|
||||
for (Pair<String, WeightModifier> pair : initialEffect.getWeightModifierIgnored()) {
|
||||
double previous = lootWithWeight.getOrDefault(pair.left(), 0d);
|
||||
lootWithWeight.put(pair.left(), pair.right().modify(player, previous));
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ public class HookCheckTimerTask implements Runnable {
|
||||
// get random time
|
||||
int random = ThreadLocalRandom.current().nextInt(Config.lavaMinTime, Config.lavaMaxTime);
|
||||
random -= lureLevel * 100;
|
||||
random *= initialEffect.getTimeModifier();
|
||||
random *= initialEffect.getHookTimeModifier();
|
||||
random = Math.max(Config.lavaMinTime, random);
|
||||
|
||||
// lava effect task (Three seconds in advance)
|
||||
|
||||
@@ -22,6 +22,7 @@ import net.momirealms.customfishing.adventure.AdventureManagerImpl;
|
||||
import net.momirealms.customfishing.api.CustomFishingPlugin;
|
||||
import net.momirealms.customfishing.api.common.Key;
|
||||
import net.momirealms.customfishing.api.common.Pair;
|
||||
import net.momirealms.customfishing.api.common.Tuple;
|
||||
import net.momirealms.customfishing.api.manager.ItemManager;
|
||||
import net.momirealms.customfishing.api.mechanic.item.BuildableItem;
|
||||
import net.momirealms.customfishing.api.mechanic.item.ItemBuilder;
|
||||
@@ -228,10 +229,12 @@ public class ItemManagerImpl implements ItemManager {
|
||||
.itemFlag(section.getStringList("item-flags").stream().map(flag -> ItemFlag.valueOf(flag.toUpperCase())).toList())
|
||||
.enchantment(getEnchantmentPair(section.getConfigurationSection("enchantments")), false)
|
||||
.enchantment(getEnchantmentPair(section.getConfigurationSection("stored-enchantments")), true)
|
||||
.randomEnchantments(getEnchantmentTuple(section.getConfigurationSection("random-enchantments")), false)
|
||||
.randomEnchantments(getEnchantmentTuple(section.getConfigurationSection("random-stored-enchantments")), true)
|
||||
.tag(section.getBoolean("tag", true), type, id)
|
||||
.randomDamage(section.getBoolean("random-durability", false))
|
||||
.unbreakable(section.getBoolean("unbreakable", false))
|
||||
.preventGrabbing(section.getBoolean("prevent-grabbing", false))
|
||||
.preventGrabbing(section.getBoolean("prevent-grabbing", true))
|
||||
.head(section.getString("head64"))
|
||||
.name(section.getString("display.name"))
|
||||
.lore(section.getStringList("display.lore"));
|
||||
@@ -295,7 +298,26 @@ public class ItemManagerImpl implements ItemManager {
|
||||
List<Pair<String, Short>> list = new ArrayList<>();
|
||||
if (section == null) return list;
|
||||
for (Map.Entry<String, Object> entry : section.getValues(false).entrySet()) {
|
||||
list.add(Pair.of(entry.getKey(), (short) entry.getValue()));
|
||||
if (entry.getValue() instanceof Integer integer) {
|
||||
list.add(Pair.of(entry.getKey(), Short.valueOf(String.valueOf(integer))));
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<Tuple<Double, String, Short>> getEnchantmentTuple(ConfigurationSection section) {
|
||||
List<Tuple<Double, String, Short>> list = new ArrayList<>();
|
||||
if (section == null) return list;
|
||||
for (Map.Entry<String, Object> entry : section.getValues(false).entrySet()) {
|
||||
if (entry.getValue() instanceof ConfigurationSection inner) {
|
||||
Tuple<Double, String, Short> tuple = Tuple.of(
|
||||
inner.getDouble("chance"),
|
||||
inner.getString("enchant"),
|
||||
Short.valueOf(String.valueOf(inner.getInt("level")))
|
||||
);
|
||||
list.add(tuple);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
@@ -439,6 +461,24 @@ public class ItemManagerImpl implements ItemManager {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemBuilder randomEnchantments(List<Tuple<Double, String, Short>> enchantments, boolean store) {
|
||||
if (enchantments.size() == 0) return this;
|
||||
editors.put("random-enchantment", (player, nbtItem, placeholders) -> {
|
||||
NBTCompoundList list = nbtItem.getCompoundList(store ? "StoredEnchantments" : "Enchantments");
|
||||
HashSet<String> ids = new HashSet<>();
|
||||
for (Tuple<Double, String, Short> pair : enchantments) {
|
||||
if (Math.random() < pair.getLeft() && !ids.contains(pair.getMid())) {
|
||||
NBTCompound nbtCompound = list.addCompound();
|
||||
nbtCompound.setString("id", pair.getMid());
|
||||
nbtCompound.setShort("lvl", pair.getRight());
|
||||
ids.add(pair.getMid());
|
||||
}
|
||||
}
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemBuilder maxDurability(int max) {
|
||||
if (max == 0) return this;
|
||||
@@ -528,6 +568,8 @@ public class ItemManagerImpl implements ItemManager {
|
||||
int dur = ThreadLocalRandom.current().nextInt(i);
|
||||
cfCompound.setInteger("cur_dur", dur);
|
||||
nbtItem.setInteger("Damage", (int) (nbtItem.getItem().getType().getMaxDurability() * ((double) dur / i)));
|
||||
} else {
|
||||
nbtItem.setInteger("Damage", ThreadLocalRandom.current().nextInt(nbtItem.getItem().getType().getMaxDurability()));
|
||||
}
|
||||
} else {
|
||||
nbtItem.setInteger("Damage", ThreadLocalRandom.current().nextInt(nbtItem.getItem().getType().getMaxDurability()));
|
||||
|
||||
@@ -126,8 +126,8 @@ public class LootManagerImpl implements LootManager {
|
||||
.disableGames(section.getBoolean("disable-game", false))
|
||||
.instantGame(section.getBoolean("instant-game", false))
|
||||
.showInFinder(section.getBoolean("show-in-fishfinder", true))
|
||||
.gameConfig(section.getString("game-group"))
|
||||
.lootGroup(ConfigUtils.stringListArgs(section.get("loot-group")).toArray(new String[0]))
|
||||
.gameConfig(section.getString("game"))
|
||||
.lootGroup(ConfigUtils.stringListArgs(section.get("group")).toArray(new String[0]))
|
||||
.nick(section.getString("nick", section.getString("display.name", key)))
|
||||
.addActions(plugin.getActionManager().getActionMap(section.getConfigurationSection("events")))
|
||||
.addTimesActions(getTimesActionMap(section.getConfigurationSection("events.success-times")))
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) <2022> <XiaoMoMi>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.momirealms.customfishing.mechanic.requirement;
|
||||
|
||||
import net.momirealms.customfishing.api.mechanic.action.Action;
|
||||
import net.momirealms.customfishing.api.mechanic.condition.Condition;
|
||||
import net.momirealms.customfishing.api.mechanic.requirement.Requirement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractRequirement implements Requirement {
|
||||
|
||||
private final List<Action> actions;
|
||||
|
||||
public AbstractRequirement(List<Action> actions) {
|
||||
this.actions = actions;
|
||||
}
|
||||
|
||||
protected void triggerActions(Condition condition) {
|
||||
if (actions != null) {
|
||||
for (Action action : actions) {
|
||||
action.trigger(condition);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ package net.momirealms.customfishing.mechanic.requirement;
|
||||
|
||||
import net.momirealms.customfishing.api.common.Pair;
|
||||
import net.momirealms.customfishing.api.mechanic.condition.Condition;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.Modifier;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.WeightModifier;
|
||||
import net.momirealms.customfishing.api.mechanic.requirement.Requirement;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -28,13 +28,13 @@ import java.util.List;
|
||||
|
||||
public class ConditionalLoots {
|
||||
|
||||
private final List<Pair<String, Modifier>> modifierList;
|
||||
private final List<Pair<String, WeightModifier>> modifierList;
|
||||
private final HashMap<String, ConditionalLoots> subLoots;
|
||||
private final Requirement[] requirements;
|
||||
|
||||
public ConditionalLoots(
|
||||
Requirement[] requirements,
|
||||
List<Pair<String, Modifier>> modifierList,
|
||||
List<Pair<String, WeightModifier>> modifierList,
|
||||
HashMap<String, ConditionalLoots> subLoots
|
||||
) {
|
||||
this.modifierList = modifierList;
|
||||
@@ -43,7 +43,7 @@ public class ConditionalLoots {
|
||||
}
|
||||
|
||||
synchronized public void combine(Player player, HashMap<String, Double> weightMap) {
|
||||
for (Pair<String, Modifier> modifierPair : this.modifierList) {
|
||||
for (Pair<String, WeightModifier> modifierPair : this.modifierList) {
|
||||
double previous = weightMap.getOrDefault(modifierPair.left(), 0d);
|
||||
weightMap.put(modifierPair.left(), modifierPair.right().modify(player, previous));
|
||||
}
|
||||
|
||||
@@ -187,6 +187,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
@NotNull
|
||||
@Override
|
||||
public Requirement getRequirement(ConfigurationSection section, boolean advanced) {
|
||||
if (section == null) return EmptyRequirement.instance;
|
||||
List<Action> actionList = null;
|
||||
if (advanced) {
|
||||
actionList = new ArrayList<>();
|
||||
@@ -301,7 +302,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
}
|
||||
|
||||
private void registerInLavaRequirement() {
|
||||
registerRequirement("in-lava", (args, actions, advanced) -> {
|
||||
registerRequirement("lava-fishing", (args, actions, advanced) -> {
|
||||
boolean inLava = (boolean) args;
|
||||
return condition -> {
|
||||
String current = condition.getArgs().get("{lava}");
|
||||
@@ -693,7 +694,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
registerRequirement("rod", (args, actions, advanced) -> {
|
||||
List<String> rods = ConfigUtils.stringListArgs(args);
|
||||
return condition -> {
|
||||
String id = condition.getArg("rod");
|
||||
String id = condition.getArg("{rod}");
|
||||
if (rods.contains(id)) return true;
|
||||
if (advanced) triggerActions(actions, condition);
|
||||
return false;
|
||||
@@ -702,7 +703,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
registerRequirement("!rod", (args, actions, advanced) -> {
|
||||
List<String> rods = ConfigUtils.stringListArgs(args);
|
||||
return condition -> {
|
||||
String id = condition.getArg("rod");
|
||||
String id = condition.getArg("{rod}");
|
||||
if (!rods.contains(id)) return true;
|
||||
if (advanced) triggerActions(actions, condition);
|
||||
return false;
|
||||
@@ -714,7 +715,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
registerRequirement("bait", (args, actions, advanced) -> {
|
||||
List<String> baits = ConfigUtils.stringListArgs(args);
|
||||
return condition -> {
|
||||
String id = condition.getArg("bait");
|
||||
String id = condition.getArg("{bait}");
|
||||
if (baits.contains(id)) return true;
|
||||
if (advanced) triggerActions(actions, condition);
|
||||
return false;
|
||||
@@ -723,7 +724,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
registerRequirement("!bait", (args, actions, advanced) -> {
|
||||
List<String> baits = ConfigUtils.stringListArgs(args);
|
||||
return condition -> {
|
||||
String id = condition.getArg("bait");
|
||||
String id = condition.getArg("{bait}");
|
||||
if (!baits.contains(id)) return true;
|
||||
if (advanced) triggerActions(actions, condition);
|
||||
return false;
|
||||
@@ -761,6 +762,7 @@ public class RequirementManagerImpl implements RequirementManager {
|
||||
action.trigger(condition);
|
||||
}
|
||||
|
||||
@SuppressWarnings("ResultOfMethodCallIgnored")
|
||||
private void loadExpansions() {
|
||||
File expansionFolder = new File(plugin.getDataFolder(), EXPANSION_FOLDER);
|
||||
if (!expansionFolder.exists())
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
package net.momirealms.customfishing.util;
|
||||
|
||||
import net.momirealms.customfishing.api.common.Pair;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.Modifier;
|
||||
import net.momirealms.customfishing.api.mechanic.loot.WeightModifier;
|
||||
import net.momirealms.customfishing.api.util.LogUtils;
|
||||
import net.momirealms.customfishing.compatibility.papi.PlaceholderManagerImpl;
|
||||
import net.objecthunter.exp4j.Expression;
|
||||
@@ -70,8 +70,8 @@ public class ConfigUtils {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static List<Pair<String, Modifier>> getModifiers(List<String> modList) {
|
||||
List<Pair<String, Modifier>> result = new ArrayList<>(modList.size());
|
||||
public static List<Pair<String, WeightModifier>> getModifiers(List<String> modList) {
|
||||
List<Pair<String, WeightModifier>> result = new ArrayList<>(modList.size());
|
||||
for (String member : modList) {
|
||||
String[] split = member.split(":",2);
|
||||
String key = split[0];
|
||||
@@ -99,7 +99,7 @@ public class ConfigUtils {
|
||||
return YamlConfiguration.loadConfiguration(file);
|
||||
}
|
||||
|
||||
public static Modifier getModifier(String text) {
|
||||
public static WeightModifier getModifier(String text) {
|
||||
if (text.length() == 0) {
|
||||
throw new IllegalArgumentException("Weight format is invalid.");
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ mechanics:
|
||||
value:
|
||||
priority_1:
|
||||
conditions:
|
||||
in-lava: true
|
||||
lava-fishing: true
|
||||
actions:
|
||||
fake_item_action:
|
||||
type: fake-item
|
||||
@@ -76,7 +76,7 @@ mechanics:
|
||||
z: 0
|
||||
priority_2:
|
||||
conditions:
|
||||
in-lava: false
|
||||
lava-fishing: false
|
||||
actions:
|
||||
fake_item_action:
|
||||
type: fake-item
|
||||
|
||||
@@ -1,45 +1,95 @@
|
||||
simple_bait:
|
||||
material: paper
|
||||
display:
|
||||
name: '<gray>Common fishing lures'
|
||||
lore:
|
||||
- '<white>Reduce the time spent fishing'
|
||||
- '<white>But make it more difficult to catch fish'
|
||||
custom-model-data: 50001
|
||||
effect:
|
||||
time: 0.85
|
||||
difficulty: 1
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
magnet_bait:
|
||||
material: paper
|
||||
display:
|
||||
name: '<gray>Magnet Bait'
|
||||
lore:
|
||||
- '<white>Increases the probability of better loots by 15%.'
|
||||
custom-model-data: 50002
|
||||
effect:
|
||||
weight-multiply:
|
||||
silver: 1.15
|
||||
gold: 1.15
|
||||
# https://mo-mi.gitbook.io/xiaomomi-plugins/plugin-wiki/customfishing/requirements
|
||||
# use Vanilla items as bait
|
||||
BOOK:
|
||||
tag: false
|
||||
material: book
|
||||
requirements:
|
||||
requirement_1:
|
||||
type: permission
|
||||
value: magnet_bait.use
|
||||
requirement_2:
|
||||
type: rod
|
||||
value:
|
||||
- nature_fishing_cane
|
||||
- silver_fishing_rod
|
||||
- golden_fishing_rod
|
||||
- star_fishing_rod
|
||||
- magical_rod
|
||||
not-met-actions:
|
||||
action_message:
|
||||
type: message
|
||||
value:
|
||||
- 'This bait can only be used on <#7B68EE>Magical Fishing Rod'
|
||||
|
||||
common_bait:
|
||||
material: paper
|
||||
display:
|
||||
name: '<b><#00BFFF>Common lures'
|
||||
lore:
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray>Made from natural ingredients, it attracts'
|
||||
- '<gray>fish in a calm and steady manner. It''s the'
|
||||
- '<gray>go-to choice for those who prefer a '
|
||||
- '<gray>straightforward and reliable fishing experience.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Reduce fishing difficulty'
|
||||
- ''
|
||||
custom-model-data: 50001
|
||||
effects:
|
||||
difficulty:
|
||||
type: difficulty
|
||||
value: -10
|
||||
|
||||
magnetic_bait:
|
||||
material: paper
|
||||
display:
|
||||
name: '<b><red>Magn<blue>etic <gray>lures'
|
||||
lore:
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray>Its radiant shimmer and unique energy pulse'
|
||||
- '<gray>prove irresistible to curious fish, drawing'
|
||||
- '<gray>them in with unprecedented speed. This is '
|
||||
- '<gray>not just a bait, it''s a spectacle that fish'
|
||||
- '<gray>can''t help but investigate.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Reduce hook time'
|
||||
- '<gray> - More time for fishing'
|
||||
- ''
|
||||
custom-model-data: 50002
|
||||
effects:
|
||||
hooktime:
|
||||
type: hook-time
|
||||
value: 0.9
|
||||
gametime:
|
||||
type: game-time
|
||||
value: 2
|
||||
|
||||
wild_bait:
|
||||
material: paper
|
||||
display:
|
||||
name: 'Wild Bait'
|
||||
name: '<b><#2E8B57>Wild lures'
|
||||
lore:
|
||||
- '<white>Decreases fishing time by 30%.'
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray>Crafted for the fearless angler, the Wild '
|
||||
- '<gray>Attraction Bait is an infusion of potent '
|
||||
- '<gray>natural ingredients, exuding an irresistible'
|
||||
- '<gray>aroma for large aquatic beasts.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Increase fishing difficulty'
|
||||
- '<gray> - Increase the size of fish caught'
|
||||
- ''
|
||||
custom-model-data: 50003
|
||||
effect:
|
||||
time: 0.7
|
||||
effects:
|
||||
difficulty:
|
||||
type: difficulty
|
||||
value: 20
|
||||
size:
|
||||
type: size-bonus
|
||||
value: 1.5
|
||||
gametime:
|
||||
type: game-time
|
||||
value: -2
|
||||
@@ -1,4 +1,10 @@
|
||||
wooden_crate:
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
apple_crate:
|
||||
show-in-fishfinder: false
|
||||
nick: Apple Crate
|
||||
block: barrel
|
||||
@@ -39,4 +45,46 @@ wooden_crate:
|
||||
apple_8:
|
||||
item: APPLE
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_crate:
|
||||
show-in-fishfinder: false
|
||||
nick: Carrot Crate
|
||||
block: barrel
|
||||
vector:
|
||||
horizontal: 1.07
|
||||
vertical: 1.5
|
||||
properties:
|
||||
directional: true
|
||||
storage:
|
||||
carrot_1:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_2:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_3:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_4:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_5:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_6:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_7:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
carrot_8:
|
||||
item: Carrot
|
||||
amount: 1~2
|
||||
chance: 0.8
|
||||
@@ -1,7 +1,13 @@
|
||||
# %fishingstats_amount_<id>% get the number of a certain fish caught
|
||||
# %fishingstats_hascaught_<id>% return if a player has caught this fish
|
||||
# %fishingstats_category_total_<id>% get the total number of a certain category's fish caught
|
||||
# %fishingstats_category_progress_<id>% get the player's exploration of this category of fish
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
# The concepts of categories and groups are different.
|
||||
# Categories are only used to classify fish based on certain rules,
|
||||
# which only affect the return value of placeholder and do not affect any gameplay
|
||||
|
||||
normal_fish:
|
||||
- tuna_fish
|
||||
- pike_fish
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
example:
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
weekend_competition:
|
||||
# TOTAL_SCORE
|
||||
# CATCH_AMOUNT
|
||||
# MAX_SIZE
|
||||
@@ -9,7 +15,7 @@ example:
|
||||
# Optional
|
||||
# 1-7
|
||||
start-weekday:
|
||||
- 1
|
||||
- 6
|
||||
- 7
|
||||
|
||||
# Optional
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
# Vanilla/EcoEnchants: minecraft:enchant:level
|
||||
# AdvancedEnchantments: AE:enchant:level
|
||||
minecraft:luck_of_the_sea:1:
|
||||
requirements: {}
|
||||
effects:
|
||||
group:
|
||||
type: group-mod
|
||||
value:
|
||||
- silver_star:+2
|
||||
- golden_star:+1
|
||||
minecraft:luck_of_the_sea:2:
|
||||
requirements: {}
|
||||
effects:
|
||||
group:
|
||||
type: group-mod
|
||||
value:
|
||||
- silver_star:+4
|
||||
- golden_star:+2
|
||||
minecraft:luck_of_the_sea:3:
|
||||
requirements: {}
|
||||
effects:
|
||||
group:
|
||||
type: group-mod
|
||||
value:
|
||||
- silver_star:+6
|
||||
- golden_star:+3
|
||||
@@ -1,3 +1,105 @@
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
# Vanilla loots settings
|
||||
vanilla:
|
||||
show-in-fishfinder: false
|
||||
# Some rubbish
|
||||
stick:
|
||||
tag: false
|
||||
nick: '<#EEE685>Useless sticks</#EEE685>'
|
||||
material: stick
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
shoes:
|
||||
tag: false
|
||||
nick: '<#8B814C>Something smells bad</#8B814C>'
|
||||
material: leather_boots
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
random-durability: true
|
||||
seagrass:
|
||||
tag: false
|
||||
nick: '<green>Sea Grass</green>'
|
||||
material: seagrass
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
kelp:
|
||||
tag: false
|
||||
nick: '<green>Kelp</green>'
|
||||
material: kelp
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
nether_brick:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: nether_brick
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
flint:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: flint
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
stone:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: stone
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
netherrack:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: netherrack
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
gold_ingot:
|
||||
tag: false
|
||||
nick: '<yellow>Shining ingots</yellow>'
|
||||
material: gold_ingot
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
gold_nugget:
|
||||
tag: false
|
||||
nick: '<yellow>Shining nuggets</yellow>'
|
||||
material: gold_nugget
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
cobblestone:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: cobblestone
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
obsidian:
|
||||
tag: false
|
||||
nick: '<gray>Something hard</gray>'
|
||||
material: obsidian
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
diamond:
|
||||
tag: false
|
||||
nick: '<#00FFFF>Diamond</#00FFFF>'
|
||||
material: diamond
|
||||
show-in-fishfinder: false
|
||||
disable-stat: true
|
||||
disable-game: true
|
||||
rubbish:
|
||||
material: paper
|
||||
nick: <gray>Rubbish</gray>
|
||||
@@ -11,13 +113,96 @@ rubbish:
|
||||
disable-game: true
|
||||
instant-game: false
|
||||
prevent-grabbing: false
|
||||
events:
|
||||
success:
|
||||
mending:
|
||||
type: mending
|
||||
value: 3
|
||||
chance: 1.0
|
||||
####################################
|
||||
# Enchantments
|
||||
sharpness_book:
|
||||
tag: false
|
||||
material: enchanted_book
|
||||
group: enchantments
|
||||
random-stored-enchantments:
|
||||
lv5:
|
||||
enchant: minecraft:sharpness
|
||||
level: 5
|
||||
chance: 0.1
|
||||
lv4:
|
||||
enchant: minecraft:sharpness
|
||||
level: 4
|
||||
chance: 0.2
|
||||
lv3:
|
||||
enchant: minecraft:sharpness
|
||||
level: 3
|
||||
chance: 0.4
|
||||
lv2:
|
||||
enchant: minecraft:sharpness
|
||||
level: 2
|
||||
chance: 0.7
|
||||
lv1:
|
||||
enchant: minecraft:sharpness
|
||||
level: 1
|
||||
chance: 1
|
||||
efficiency_book:
|
||||
tag: false
|
||||
material: enchanted_book
|
||||
group: enchantments
|
||||
random-stored-enchantments:
|
||||
lv5:
|
||||
enchant: minecraft:efficiency
|
||||
level: 5
|
||||
chance: 0.1
|
||||
lv4:
|
||||
enchant: minecraft:efficiency
|
||||
level: 4
|
||||
chance: 0.2
|
||||
lv3:
|
||||
enchant: minecraft:efficiency
|
||||
level: 3
|
||||
chance: 0.4
|
||||
lv2:
|
||||
enchant: minecraft:efficiency
|
||||
level: 2
|
||||
chance: 0.7
|
||||
lv1:
|
||||
enchant: minecraft:efficiency
|
||||
level: 1
|
||||
chance: 1
|
||||
unbreaking_book:
|
||||
tag: false
|
||||
material: enchanted_book
|
||||
group: enchantments
|
||||
random-stored-enchantments:
|
||||
lv3:
|
||||
enchant: minecraft:unbreaking
|
||||
level: 3
|
||||
chance: 0.2
|
||||
lv2:
|
||||
enchant: minecraft:unbreaking
|
||||
level: 2
|
||||
chance: 0.5
|
||||
lv1:
|
||||
enchant: minecraft:unbreaking
|
||||
level: 1
|
||||
chance: 1
|
||||
protection_book:
|
||||
tag: false
|
||||
material: enchanted_book
|
||||
group: enchantments
|
||||
random-stored-enchantments:
|
||||
lv4:
|
||||
enchant: minecraft:protection
|
||||
level: 4
|
||||
chance: 0.1
|
||||
lv3:
|
||||
enchant: minecraft:protection
|
||||
level: 3
|
||||
chance: 0.2
|
||||
lv2:
|
||||
enchant: minecraft:protection
|
||||
level: 2
|
||||
chance: 0.5
|
||||
lv1:
|
||||
enchant: minecraft:protection
|
||||
level: 1
|
||||
chance: 1
|
||||
# Fish
|
||||
tuna_fish:
|
||||
material: cod
|
||||
nick: <gradient:#F0FFFF:#4682B4:#F0FFFF>Tuna Fish</gradient>
|
||||
@@ -47,6 +232,7 @@ tuna_fish_silver_star:
|
||||
- <gray>Tuna is a kind of healthy food.
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50002
|
||||
group: sliver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -67,6 +253,7 @@ tuna_fish_golden_star:
|
||||
- <gray>Tuna is a kind of healthy food.
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50003
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -77,7 +264,6 @@ tuna_fish_golden_star:
|
||||
price:
|
||||
base: 80
|
||||
bonus: 0.7
|
||||
####################################
|
||||
pike_fish:
|
||||
material: cod
|
||||
nick: <gradient:#F0F8FF:#5F9EA0:#F0F8FF>Pike Fish</gradient>
|
||||
@@ -113,6 +299,7 @@ pike_fish_silver_star:
|
||||
- <gray>water and inland freshwater lakes
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50005
|
||||
group: sliver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -136,6 +323,7 @@ pike_fish_golden_star:
|
||||
- <gray>water and inland freshwater lakes
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50006
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -146,7 +334,6 @@ pike_fish_golden_star:
|
||||
price:
|
||||
base: 50
|
||||
bonus: 1.5
|
||||
####################################
|
||||
gold_fish:
|
||||
material: cod
|
||||
display:
|
||||
@@ -155,8 +342,11 @@ gold_fish:
|
||||
- <gray>Goldfish is one of most famous ornamental
|
||||
- <gray>fishes in the world. It originated in China
|
||||
- <gray>and has a history of more than 1700 years
|
||||
- '<white>size: {size}cm'
|
||||
price:
|
||||
base: 70
|
||||
bonus: 2.6
|
||||
size: 2~3
|
||||
custom-model-data: 50007
|
||||
events:
|
||||
success:
|
||||
@@ -174,9 +364,13 @@ gold_fish_silver_star:
|
||||
- <gray>Goldfish is one of most famous ornamental
|
||||
- <gray>fishes in the world. It originated in China
|
||||
- <gray>and has a history of more than 1700 years
|
||||
- '<white>size: {size}cm'
|
||||
price:
|
||||
base: 80
|
||||
bonus: 3
|
||||
size: 3~4
|
||||
custom-model-data: 50008
|
||||
group: sliver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -193,16 +387,19 @@ gold_fish_golden_star:
|
||||
- <gray>Goldfish is one of most famous ornamental
|
||||
- <gray>fishes in the world. It originated in China
|
||||
- <gray>and has a history of more than 1700 years
|
||||
- '<white>size: {size}cm'
|
||||
price:
|
||||
base: 100
|
||||
bonus: 3.4
|
||||
size: 4~7
|
||||
custom-model-data: 50009
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
type: mending
|
||||
value: 9
|
||||
chance: 1.0
|
||||
####################################
|
||||
perch_fish:
|
||||
material: cod
|
||||
display:
|
||||
@@ -233,6 +430,7 @@ perch_fish_silver_star:
|
||||
- <gray>foraging at dusk and early morning
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50011
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -254,6 +452,7 @@ perch_fish_golden_star:
|
||||
- <gray>foraging at dusk and early morning
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50012
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -264,7 +463,6 @@ perch_fish_golden_star:
|
||||
price:
|
||||
base: 10
|
||||
bonus: 3
|
||||
####################################
|
||||
mullet_fish:
|
||||
material: cod
|
||||
nick: <gradient:#D4F2E7:#E1FFFF:#D4F2E7>Mullet Fish</gradient>
|
||||
@@ -296,6 +494,7 @@ mullet_fish_silver_star:
|
||||
- <gray>to treat spleen and stomach weakness
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50014
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -317,6 +516,7 @@ mullet_fish_golden_star:
|
||||
- <gray>to treat spleen and stomach weakness
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50015
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -327,7 +527,6 @@ mullet_fish_golden_star:
|
||||
price:
|
||||
base: 50
|
||||
bonus: 1.5
|
||||
####################################
|
||||
sardine_fish:
|
||||
material: cod
|
||||
nick: <gradient:#E1FFFF:#5F9EA0>Sardine Fish</gradient>
|
||||
@@ -358,6 +557,7 @@ sardine_fish_silver_star:
|
||||
- <gray>Therefore, sardine are also called "smart food"
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50017
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -378,6 +578,7 @@ sardine_fish_golden_star:
|
||||
- <gray>Therefore, sardine are also called "smart food"
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50018
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -388,7 +589,6 @@ sardine_fish_golden_star:
|
||||
price:
|
||||
base: 15
|
||||
bonus: 3.4
|
||||
####################################
|
||||
carp_fish:
|
||||
material: cod
|
||||
nick: <gradient:#808000:#556B2F>Carp Fish</gradient>
|
||||
@@ -417,6 +617,7 @@ carp_fish_silver_star:
|
||||
- <gray>One of the most common edible fish
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50020
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -436,6 +637,7 @@ carp_fish_golden_star:
|
||||
- <gray>One of the most common edible fish
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50021
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -446,7 +648,6 @@ carp_fish_golden_star:
|
||||
price:
|
||||
base: 12
|
||||
bonus: 2.2
|
||||
####################################
|
||||
cat_fish:
|
||||
material: cod
|
||||
display:
|
||||
@@ -476,6 +677,7 @@ cat_fish_silver_star:
|
||||
- <gray>sharp jaw teeth, short intestine and stomach
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50023
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -496,6 +698,7 @@ cat_fish_golden_star:
|
||||
- <gray>sharp jaw teeth, short intestine and stomach
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50024
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -506,7 +709,6 @@ cat_fish_golden_star:
|
||||
price:
|
||||
base: 16
|
||||
bonus: 2.2
|
||||
####################################
|
||||
octopus:
|
||||
material: cod
|
||||
nick: <gradient:#D2691E:#FF6347>Octopus</gradient>
|
||||
@@ -537,6 +739,7 @@ octopus_silver_star:
|
||||
- <gray>People often use pots to catch octopus
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50026
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -557,6 +760,7 @@ octopus_golden_star:
|
||||
- <gray>People often use pots to catch octopus
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50027
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -567,7 +771,6 @@ octopus_golden_star:
|
||||
price:
|
||||
base: 10
|
||||
bonus: 1.5
|
||||
####################################
|
||||
sunfish:
|
||||
material: cod
|
||||
nick: <#F5DEB3>Sunfish</#F5DEB3>
|
||||
@@ -596,6 +799,7 @@ sunfish_silver_star:
|
||||
- <gray>It only has one huge head
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50029
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -615,6 +819,7 @@ sunfish_golden_star:
|
||||
- <gray>It only has one huge head
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50030
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -625,7 +830,6 @@ sunfish_golden_star:
|
||||
price:
|
||||
base: 26
|
||||
bonus: 1.5
|
||||
####################################
|
||||
red_snapper_fish:
|
||||
material: cod
|
||||
display:
|
||||
@@ -656,6 +860,7 @@ red_snapper_fish_silver_star:
|
||||
- <gray>with a male as the "head of the family"
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50032
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -677,6 +882,7 @@ red_snapper_fish_golden_star:
|
||||
- <gray>with a male as the "head of the family"
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50033
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -687,7 +893,6 @@ red_snapper_fish_golden_star:
|
||||
price:
|
||||
base: 10
|
||||
bonus: 2.3
|
||||
####################################
|
||||
salmon_void_fish:
|
||||
material: cod
|
||||
in-lava: true
|
||||
@@ -696,6 +901,8 @@ salmon_void_fish:
|
||||
name: <gradient:#800000:#800080>Void Salmon</gradient>
|
||||
lore:
|
||||
- <gray>A fish from the hell
|
||||
- <gray>It's looking at you...
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50034
|
||||
events:
|
||||
success:
|
||||
@@ -703,8 +910,10 @@ salmon_void_fish:
|
||||
type: mending
|
||||
value: 20
|
||||
chance: 1.0
|
||||
size: 8~10
|
||||
price:
|
||||
base: 20
|
||||
bonus: 2.4
|
||||
salmon_void_fish_silver_star:
|
||||
show-in-fishfinder: false
|
||||
in-lava: true
|
||||
@@ -713,15 +922,20 @@ salmon_void_fish_silver_star:
|
||||
name: <gradient:#800000:#800080>Void Salmon</gradient><#F5F5F5>(Silver Star)</#F5F5F5>
|
||||
lore:
|
||||
- <gray>A fish from the hell
|
||||
- <gray>It's looking at you...
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50035
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
type: mending
|
||||
value: 24
|
||||
chance: 1.0
|
||||
size: 10~14
|
||||
price:
|
||||
base: 50
|
||||
bonus: 2.6
|
||||
salmon_void_fish_golden_star:
|
||||
show-in-fishfinder: false
|
||||
in-lava: true
|
||||
@@ -730,17 +944,20 @@ salmon_void_fish_golden_star:
|
||||
name: <gradient:#800000:#800080>Void Salmon</gradient> <#FFD700>(Golden Star)</#FFD700>
|
||||
lore:
|
||||
- <gray>A fish from the hell
|
||||
group: gold
|
||||
- <gray>It's looking at you...
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50036
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
type: mending
|
||||
value: 28
|
||||
chance: 1.0
|
||||
size: 12~18
|
||||
price:
|
||||
base: 100
|
||||
####################################
|
||||
bonus: 3
|
||||
woodskip_fish:
|
||||
material: cod
|
||||
nick: <#CD5C5C>Woodskip Fish</#CD5C5C>
|
||||
@@ -771,6 +988,7 @@ woodskip_fish_silver_star:
|
||||
- <gray>live in pools deep in the forest
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50038
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -791,6 +1009,7 @@ woodskip_fish_golden_star:
|
||||
- <gray>live in pools deep in the forest
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50039
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -801,7 +1020,6 @@ woodskip_fish_golden_star:
|
||||
price:
|
||||
base: 25
|
||||
bonus: 2.8
|
||||
####################################
|
||||
sturgeon_fish:
|
||||
material: cod
|
||||
nick: <#48D1CC>Sturgeon Fish</#48D1CC>
|
||||
@@ -832,6 +1050,7 @@ sturgeon_fish_silver_star:
|
||||
- <gray>population. Females can live up to 150 years
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50041
|
||||
group: silver_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
@@ -852,6 +1071,7 @@ sturgeon_fish_golden_star:
|
||||
- <gray>population. Females can live up to 150 years
|
||||
- '<white>size: {size}cm'
|
||||
custom-model-data: 50042
|
||||
group: golden_star
|
||||
events:
|
||||
success:
|
||||
action_mending:
|
||||
|
||||
@@ -100,7 +100,7 @@ rainbow_5:
|
||||
7: 0
|
||||
rainbow_6:
|
||||
game-type: accurate_click
|
||||
title: '<#34f2d5>BLUE!'
|
||||
title: '<#5284da>BLUE!'
|
||||
subtitle:
|
||||
font: 'customfishing:default'
|
||||
bar: '뀋'
|
||||
|
||||
@@ -1,11 +1,33 @@
|
||||
drowned:
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
skeleton:
|
||||
show-in-fishfinder: false
|
||||
mob: Drowned
|
||||
nick: drowned
|
||||
mob: skeleton
|
||||
nick: <white>Skeleton</white>
|
||||
vector:
|
||||
horizontal: 1
|
||||
vertical: 1.3
|
||||
|
||||
wither_skeleton:
|
||||
show-in-fishfinder: false
|
||||
mob: wither_skeleton
|
||||
nick: <black>Wither Skeleton</black>
|
||||
vector:
|
||||
horizontal: 1.1
|
||||
vertical: 1.2
|
||||
|
||||
magma_cube:
|
||||
show-in-fishfinder: false
|
||||
mob: magma_cube
|
||||
nick: <red>Magma Cube</black>
|
||||
vector:
|
||||
horizontal: 1.1
|
||||
vertical: 1.3
|
||||
|
||||
skeletalknight:
|
||||
show-in-fishfinder: false
|
||||
mob: MythicMobs:SkeletalKnight
|
||||
|
||||
@@ -1,58 +1,141 @@
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
# Vanilla fishing rod properties
|
||||
FISHING_ROD:
|
||||
tag: false
|
||||
material: fishing_rod
|
||||
effects:
|
||||
time_effect:
|
||||
type: hook-time
|
||||
value: 1.5
|
||||
|
||||
# Custom rods
|
||||
wooden_rod:
|
||||
beginner_rod:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: 'Ordinary wooden fishing rod'
|
||||
name: "<b><#EEE9E9>Beginner's Fishing Rod"
|
||||
lore:
|
||||
- '<gray>Its just an ordinary fishing rod'
|
||||
- '<gray>But it''s quite friendly to a starter!'
|
||||
effect:
|
||||
difficulty: -1
|
||||
|
||||
nature_fishing_cane:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: 'Nature Fishing Cane'
|
||||
lore:
|
||||
- '<gray>The wild power makes it easier to be hooked'
|
||||
- '<gray>But also increase the difficulty'
|
||||
custom-model-data: 50001
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray> - Specially designed for those new to the art '
|
||||
- '<gray> - of fishing, the Beginner''s Fishing Rod is a'
|
||||
- '<gray> - novice angler''s best friend.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Increase the hook time'
|
||||
- '<gray> - Reduces the challenge of fishing'
|
||||
effects:
|
||||
hook-time: 0.9
|
||||
difficulty: 1
|
||||
game-time: 3
|
||||
time_effect:
|
||||
type: hook-time
|
||||
value: 2
|
||||
difficulty:
|
||||
type: difficulty
|
||||
value: -10
|
||||
|
||||
silver_fishing_rod:
|
||||
master_rod:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: 'Silver Fishing Rod'
|
||||
name: "<b><#FFFF00>Master's Fishing Rod"
|
||||
lore:
|
||||
- '<gray>Increase the chance of getting silver quality fish'
|
||||
custom-model-data: 50002
|
||||
|
||||
golden_fishing_rod:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: 'Golden Fishing Rod'
|
||||
lore:
|
||||
- '<gray>Increase the chance of getting golden quality fish'
|
||||
custom-model-data: 50003
|
||||
|
||||
star_fishing_rod:
|
||||
material: fishing_rod
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray> - Wielded only by the most skilled of anglers,'
|
||||
- '<gray> - the Master''s Fishing Rod represents the pinnacle'
|
||||
- '<gray> - of fishing craftsmanship. Meticulously crafted '
|
||||
- '<gray> - for precision, it significantly reduces the '
|
||||
- '<gray> - time it takes for a fish to bite.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Reduce the hook time'
|
||||
- '<gray> - Increase the challenge of fishing'
|
||||
- '<gray> - Higher chance of getting quality fish'
|
||||
effects:
|
||||
lava-fishing: true
|
||||
# https://mo-mi.gitbook.io/xiaomomi-plugins/plugin-wiki/customfishing/requirements
|
||||
time_effect:
|
||||
type: hook-time
|
||||
value: 0.8
|
||||
difficulty:
|
||||
type: difficulty
|
||||
value: +20
|
||||
group:
|
||||
type: group-mod
|
||||
value:
|
||||
- silver_star:+7
|
||||
- golden_star:+3
|
||||
|
||||
skeleton_rod:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: "<b><#CD2626>Skeleton Fishing Rod"
|
||||
lore:
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray> - Forged from the bones of age-old skeletons and'
|
||||
- '<gray> - imbued with dark enchantments, the Skeleton Fishing'
|
||||
- '<gray> - Rod is not for the faint-hearted. It allows the '
|
||||
- '<gray> - brave or the mad to fish within the scorching '
|
||||
- '<gray> - confines of lava, defying the usual limitations of'
|
||||
- '<gray> - regular rods.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Fishing in lava'
|
||||
- '<gray> - Sometimes skeleton would grab the hook'
|
||||
effects:
|
||||
lava:
|
||||
type: lava-fishing
|
||||
|
||||
magical_rod:
|
||||
material: fishing_rod
|
||||
display:
|
||||
name: '<b><#7B68EE>Magical Fishing Rod'
|
||||
lore:
|
||||
- ''
|
||||
- '<#7FFFD4>Desciption:'
|
||||
- '<gray> - A product of arcane innovation, this unique'
|
||||
- '<gray> - fishing rod uses enchanted books as bait.'
|
||||
- '<gray> - Its intricate reel mechanism and magical '
|
||||
- '<gray> - allure demand the exp level of its user,'
|
||||
- '<gray> - consuming experience levels upon each cast.'
|
||||
- ''
|
||||
- '<#FFD700>Effects:'
|
||||
- '<gray> - Increase the chance of getting an'
|
||||
- '<gray> enchantment book from fishing.'
|
||||
- ''
|
||||
- '<#CD5C5C>Requirements:'
|
||||
- '<gray> - 1x book bait'
|
||||
- '<gray> - 10 exp levels'
|
||||
custom-model-data: 10000
|
||||
requirements:
|
||||
requirement_1:
|
||||
type: permission
|
||||
value: star_fishing_rod.use
|
||||
type: level
|
||||
value: 10
|
||||
not-met-actions:
|
||||
action_message:
|
||||
type: message
|
||||
value:
|
||||
- 'You don''t have enough levels to control the rod.'
|
||||
requirement_2:
|
||||
type: world
|
||||
type: bait
|
||||
value:
|
||||
- world_nether
|
||||
- BOOK
|
||||
not-met-actions:
|
||||
action_message:
|
||||
type: message
|
||||
value:
|
||||
- 'You have to hold a book as bait.'
|
||||
events:
|
||||
cast:
|
||||
action_level:
|
||||
type: level
|
||||
value: -10
|
||||
effects:
|
||||
weight_effect:
|
||||
type: group-mod-ignore-conditions
|
||||
value:
|
||||
- enchantments:+10
|
||||
time_effect:
|
||||
type: hook-time
|
||||
value: 3
|
||||
@@ -1,11 +0,0 @@
|
||||
# Vanilla blocks should be in capital format
|
||||
# ItemsAdder: namespace:id: 'a'
|
||||
# Oraxen: id: 'a'
|
||||
|
||||
AIR: 'air'
|
||||
|
||||
ANVIL: 'a'
|
||||
CRYING_OBSIDIAN: 'c'
|
||||
PURPUR_STAIRS: 'p'
|
||||
PURPUR_PILLAR: 'pillar'
|
||||
OBSERVER: 'o'
|
||||
@@ -1,3 +1,9 @@
|
||||
# Note: These are the default configurations of the plugin
|
||||
# and do not necessarily mean that players can have a good
|
||||
# gaming experience. We hope that you will create
|
||||
# customized configurations based on your own ideas,
|
||||
# allowing players to experience the uniqueness of your server.
|
||||
|
||||
fishfinder:
|
||||
material: PAPER
|
||||
display:
|
||||
@@ -5,12 +11,14 @@ fishfinder:
|
||||
lore:
|
||||
- '<white>Right click to see what fish can be caught in this place!'
|
||||
custom-model-data: 50000
|
||||
|
||||
water_effect:
|
||||
material: PAPER
|
||||
custom-model-data: 49998
|
||||
lava_effect:
|
||||
material: PAPER
|
||||
custom-model-data: 49999
|
||||
|
||||
fisherman_talismans:
|
||||
material: player_head
|
||||
display:
|
||||
|
||||
@@ -5,10 +5,17 @@ global-group:
|
||||
sub-groups:
|
||||
loots_in_water:
|
||||
conditions:
|
||||
in-lava: false
|
||||
lava-fishing: false
|
||||
world:
|
||||
- world
|
||||
'!rod':
|
||||
- magical_rod
|
||||
list:
|
||||
- vanilla:+50
|
||||
- rubbish:+15
|
||||
- seagrass:+5
|
||||
sub-groups:
|
||||
# parent ocean group
|
||||
ocean_fish:
|
||||
conditions:
|
||||
biome:
|
||||
@@ -22,7 +29,11 @@ global-group:
|
||||
- minecraft:deep_lukewarm_ocean
|
||||
- minecraft:warm_ocean
|
||||
list:
|
||||
# decrease the chance of getting rubbish when fishing in ocean
|
||||
- rubbish:-10
|
||||
- apple_crate:+2
|
||||
- carrot_crate:+2
|
||||
- kelp:+25
|
||||
- tuna_fish:+15
|
||||
- tuna_fish_silver_star:+3
|
||||
- tuna_fish_golden_star:+1
|
||||
@@ -32,7 +43,17 @@ global-group:
|
||||
- sardine_fish:+15
|
||||
- sardine_fish_silver_star:+3
|
||||
- sardine_fish_golden_star:+1
|
||||
- octopus:+10
|
||||
- octopus_silver_star:+2
|
||||
- octopus_golden_star:+1
|
||||
- sunfish:+15
|
||||
- sunfish_silver_star:+3
|
||||
- sunfish_golden_star:+1
|
||||
- red_snapper_fish:+20
|
||||
- red_snapper_fish_silver_star:+5
|
||||
- red_snapper_fish_golden_star:+2
|
||||
sub-groups:
|
||||
# sub warm ocean group
|
||||
warm_ocean_fish:
|
||||
conditions:
|
||||
biome:
|
||||
@@ -49,14 +70,17 @@ global-group:
|
||||
river_fish:
|
||||
conditions:
|
||||
'!biome':
|
||||
- minecraft:ocean
|
||||
- minecraft:river
|
||||
- minecraft:frozen_river
|
||||
- minecraft:frozen_ocean
|
||||
- minecraft:lukewarm_ocean
|
||||
- minecraft:warm_ocean
|
||||
- minecraft:ocean
|
||||
- minecraft:deep_ocean
|
||||
- minecraft:cold_ocean
|
||||
- minecraft:deep_cold_ocean
|
||||
- minecraft:frozen_ocean
|
||||
- minecraft:deep_frozen_ocean
|
||||
- minecraft:lukewarm_ocean
|
||||
- minecraft:deep_lukewarm_ocean
|
||||
- minecraft:warm_ocean
|
||||
list:
|
||||
- rubbish:+5
|
||||
- stick:+15
|
||||
- gold_fish:+15
|
||||
- gold_fish_silver_star:+3
|
||||
- gold_fish_golden_star:+1
|
||||
@@ -69,15 +93,71 @@ global-group:
|
||||
- carp_fish:+25
|
||||
- carp_fish_silver_star:+5
|
||||
- carp_fish_golden_star:+2
|
||||
- cat_fish:+15
|
||||
- cat_fish_silver_star:+3
|
||||
- cat_fish_golden_star:+1
|
||||
sub-groups:
|
||||
swamp_fish:
|
||||
list: []
|
||||
list:
|
||||
- 'woodskip_fish:+30'
|
||||
- 'woodskip_fish_silver_star:+5'
|
||||
- 'woodskip_fish_golden_star:+2'
|
||||
conditions:
|
||||
biome:
|
||||
- minecraft:swamp
|
||||
- minecraft:mangrove_swamp
|
||||
cave_fish:
|
||||
conditions:
|
||||
ypos:
|
||||
- -64~0
|
||||
list:
|
||||
- 'sturgeon_fish:+9'
|
||||
- 'sturgeon_fish_silver_star:+3'
|
||||
- 'sturgeon_fish_golden_star:+1'
|
||||
# Skeletons might appear if player holds the skeleton_rod and fish at night
|
||||
curse_rod:
|
||||
conditions:
|
||||
rod:
|
||||
- skeleton_rod
|
||||
time:
|
||||
- 14000~22000
|
||||
list:
|
||||
- 'skeleton:+30'
|
||||
loots_in_lava:
|
||||
conditions:
|
||||
in-lava: true
|
||||
list:
|
||||
- obsidian:+10
|
||||
lava-fishing: true
|
||||
list: []
|
||||
sub-groups:
|
||||
overworld_loots:
|
||||
conditions:
|
||||
world:
|
||||
- world
|
||||
list:
|
||||
- 'cobblestone:+50'
|
||||
- 'stone:+30'
|
||||
- 'obsidian:+3'
|
||||
- 'diamond:+1'
|
||||
- 'flint:+6'
|
||||
nether_loots:
|
||||
conditions:
|
||||
world:
|
||||
- world_nether
|
||||
list:
|
||||
- 'netherrack:+20'
|
||||
- 'nether_brick:+12'
|
||||
- 'obsidian:+5'
|
||||
- 'gold_ingot:+3'
|
||||
- 'gold_nugget:+8'
|
||||
- 'magma_cube:+3'
|
||||
- 'salmon_void_fish:+15'
|
||||
- 'salmon_void_fish_silver_star:+3'
|
||||
- 'salmon_void_fish_golden_star:+1'
|
||||
sub-groups:
|
||||
curse_rod:
|
||||
conditions:
|
||||
rod:
|
||||
- skeleton_rod
|
||||
time:
|
||||
- 14000~22000
|
||||
list:
|
||||
- 'wither_skeleton:+30'
|
||||
Reference in New Issue
Block a user