intelligence pvp thing done

This commit is contained in:
batchprogrammer314
2021-07-24 23:34:07 -05:00
parent 8dc4dcf8c9
commit d86a42eab6
22 changed files with 1045 additions and 117 deletions

View File

@@ -1,5 +1,6 @@
package net.nuggetmc.ai.utils;
import net.minecraft.server.v1_16_R3.EntityLiving;
import net.nuggetmc.ai.TerminatorPlus;
import net.nuggetmc.ai.bot.Bot;
import net.nuggetmc.ai.bot.agent.Agent;
@@ -10,11 +11,13 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.permissions.ServerOperator;
import org.bukkit.util.Vector;
import java.beans.Statement;
import java.util.*;
import java.util.stream.Collectors;
public class Debugger {
@@ -191,7 +194,7 @@ public class Debugger {
}
public void item() {
TerminatorPlus.getInstance().getManager().fetch().forEach(b -> b.item = true);
TerminatorPlus.getInstance().getManager().fetch().forEach(b -> b.setDefaultItem(new ItemStack(Material.IRON_SWORD)));
}
public void j(boolean b) {
@@ -215,7 +218,7 @@ public class Debugger {
}
public void tp() {
Bot bot = MathUtils.getRandomSetElement(TerminatorPlus.getInstance().getManager().fetch());
Bot bot = MathUtils.getRandomSetElement(TerminatorPlus.getInstance().getManager().fetch().stream().filter(EntityLiving::isAlive).collect(Collectors.toSet()));
if (bot == null) {
print("Failed to locate a bot.");

View File

@@ -0,0 +1,59 @@
package net.nuggetmc.ai.utils;
import org.bukkit.inventory.ItemStack;
public class ItemUtils {
public static double getLegacyAttackDamage(ItemStack item) {
switch (item.getType()) {
default:
return 0.25;
case WOODEN_SHOVEL:
case GOLDEN_SHOVEL:
case WOODEN_HOE:
case GOLDEN_HOE:
case STONE_HOE:
case IRON_HOE:
case DIAMOND_HOE:
case NETHERITE_HOE:
return 1;
case WOODEN_PICKAXE:
case GOLDEN_PICKAXE:
case STONE_SHOVEL:
return 2;
case WOODEN_AXE:
case GOLDEN_AXE:
case STONE_PICKAXE:
case IRON_SHOVEL:
return 3;
case WOODEN_SWORD:
case GOLDEN_SWORD:
case STONE_AXE:
case IRON_PICKAXE:
case DIAMOND_SHOVEL:
return 4;
case STONE_SWORD:
case IRON_AXE:
case DIAMOND_PICKAXE:
case NETHERITE_SHOVEL:
return 5;
case IRON_SWORD:
case DIAMOND_AXE:
case NETHERITE_PICKAXE:
return 6;
case DIAMOND_SWORD:
case NETHERITE_AXE:
return 7;
case NETHERITE_SWORD:
return 8;
}
}
}

View File

@@ -1,11 +1,12 @@
package net.nuggetmc.ai.utils;
import net.nuggetmc.ai.bot.Bot;
import org.bukkit.util.NumberConversions;
import org.bukkit.util.Vector;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
public class MathUtils {
@@ -90,4 +91,93 @@ public class MathUtils {
public static String round2Dec(double n) {
return FORMATTER_2.format(n);
}
public static List<Map.Entry<Bot, Integer>> sortByValue(HashMap<Bot, Integer> hm) {
List<Map.Entry<Bot, Integer>> list = new LinkedList<>(hm.entrySet());
list.sort(Map.Entry.comparingByValue());
Collections.reverse(list);
return list;
}
public static double generateConnectionValue(List<Double> list, double mutationSize) {
double[] bounds = getBounds(list, mutationSize);
return random(bounds[0], bounds[1]);
}
public static double generateConnectionValue(List<Double> list) {
return generateConnectionValue(list, 0);
}
public static double random(double low, double high) {
return Math.random() * (high - low) + low;
}
public static double sum(List<Double> list) {
return list.stream().mapToDouble(n -> n).sum();
}
public static double min(List<Double> list) {
if (list.isEmpty()) {
return 0;
}
double min = Double.MAX_VALUE;
for (double n : list) {
if (n < min) {
min = n;
}
}
return min;
}
public static double max(List<Double> list) {
if (list.isEmpty()) {
return 0;
}
double max = 0;
for (double n : list) {
if (n > max) {
max = n;
}
}
return max;
}
public static double getMidValue(List<Double> list) {
return (min(list) + max(list)) / 2D;
}
public static double distribution(List<Double> list, double mid) {
return Math.sqrt(sum(list.stream().map(n -> Math.pow(n - mid, 2)).collect(Collectors.toList())) / list.size());
}
public static double[] getBounds(List<Double> list, double mutationSize) {
double mid = getMidValue(list);
double dist = distribution(list, mid);
double p = mutationSize * dist / Math.sqrt(list.size());
return new double[] {
mid - p,
mid + p
};
}
public static double getMutationSize(int generation) {
int shift = 4;
if (generation <= shift + 1) {
return 7.38905609893;
}
double a = 0.8;
double b = -8.5 - shift;
double c = 2;
return Math.pow(a, generation + b) + c;
}
}

View File

@@ -2,6 +2,7 @@ package net.nuggetmc.ai.utils;
import net.nuggetmc.ai.TerminatorPlus;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
@@ -49,4 +50,21 @@ public class PlayerUtils {
Debugger.log("Failed to fetch from the usercache.");
}
}
public static Location findAbove(Location loc, int amount) {
boolean check = false;
for (int i = 0; i <= amount; i++) {
if (loc.clone().add(0, i, 0).getBlock().getType().isSolid()) {
check = true;
break;
}
}
if (check) {
return loc;
} else {
return loc.clone().add(0, amount, 0);
}
}
}