mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-11-05 18:33:22 +01:00
d91ac35d76
Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: e59b60b Updated Upstream (Paper) 09f62a7 Rebuild patches b041d11 Merge branch 'master' of https://github.com/Spottedleaf/Tuinity into ver/1.16.2 4468be2 Updated Upstream (Paper)
3211 lines
176 KiB
Diff
3211 lines
176 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Bud Gidiere <sgidiere@gmail.com>
|
|
Date: Thu, 6 Aug 2020 19:47:50 -0500
|
|
Subject: [PATCH] Yatopia-Server-Fixes
|
|
|
|
|
|
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
|
|
index 5dfa0658838c4801cdf260eae8b98163f729e5af..b67f05f290db653cf75a89e85bd3decb5044a1e0 100644
|
|
--- a/src/main/java/co/aikar/timings/TimingsExport.java
|
|
+++ b/src/main/java/co/aikar/timings/TimingsExport.java
|
|
@@ -231,6 +231,7 @@ public class TimingsExport extends Thread {
|
|
pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)),
|
|
pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Tuinity - add config to timings report
|
|
pair("tuinity", mapAsJSON(Bukkit.spigot().getTuinityConfig(), null)) // Tuinity - add config to timings report
|
|
+ , pair("purpur", mapAsJSON(Bukkit.spigot().getPurpurConfig(), null)) // Purpur - add config to timings report
|
|
));
|
|
|
|
new TimingsExport(listeners, parent, history).start();
|
|
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java.rej b/src/main/java/co/aikar/timings/TimingsExport.java.rej
|
|
deleted file mode 100644
|
|
index 572780ca665c0fb254cc7431af3dd7759a94f26c..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/co/aikar/timings/TimingsExport.java.rej
|
|
+++ /dev/null
|
|
@@ -1,9 +0,0 @@
|
|
-diff a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java (rejected hunks)
|
|
-@@ -230,6 +230,7 @@ public class TimingsExport extends Thread {
|
|
- pair("spigot", mapAsJSON(Bukkit.spigot().getSpigotConfig(), null)),
|
|
- pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)),
|
|
- pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null))
|
|
-+ , pair("rainforest", mapAsJSON(Bukkit.spigot().getRainforestConfig(), null)) // Rainforest
|
|
- ));
|
|
-
|
|
- new TimingsExport(listeners, parent, history).start();
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java.rej b/src/main/java/com/destroystokyo/paper/PaperCommand.java.rej
|
|
deleted file mode 100644
|
|
index 8f31dba6a29514aad6e74e265bf000014cd1e3c3..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java.rej
|
|
+++ /dev/null
|
|
@@ -1,26 +0,0 @@
|
|
-diff a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java (rejected hunks)
|
|
-@@ -429,18 +439,18 @@ public class PaperCommand extends Command {
|
|
- ChunkProviderServer chunkProviderServer = world.getChunkProvider();
|
|
-
|
|
- Collection<Entity> entities = world.entitiesById.values();
|
|
-- entities.forEach(e -> {
|
|
-- MinecraftKey key = e.getMinecraftKey();
|
|
-- if (e.shouldBeRemoved) return; // Paper
|
|
-+ for (Entity entity : entities) {
|
|
-+ MinecraftKey key = entity.getMinecraftKey();
|
|
-+ if (entity.shouldBeRemoved) continue;
|
|
-
|
|
- MutablePair<Integer, Map<ChunkCoordIntPair, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
|
|
-- ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.getChunkX(), e.getChunkZ());
|
|
-+ ChunkCoordIntPair chunk = new ChunkCoordIntPair(entity.getChunkX(), entity.getChunkZ());
|
|
- info.left++;
|
|
- info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
|
|
-- if (!chunkProviderServer.isInEntityTickingChunk(e)) {
|
|
-+ if (!chunkProviderServer.isInEntityTickingChunk(entity)) {
|
|
- nonEntityTicking.merge(key, Integer.valueOf(1), Integer::sum);
|
|
- }
|
|
-- });
|
|
-+ }
|
|
-
|
|
- if (names.size() == 1) {
|
|
- MinecraftKey name = names.iterator().next();
|
|
diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
|
index dee9655b89d061ec8218ea2c54660c6003e8548f..253b73cfc597d4c7106d969be7b18c68166128ae 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
|
@@ -295,7 +295,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
|
this.shortScheduledIndex = getNextIndex(this.shortScheduledIndex, SHORT_SCHEDULE_TICK_THRESHOLD);
|
|
|
|
this.timingCleanup.stopTiming();
|
|
- this.world.getMethodProfiler().exitEnter("ticking");
|
|
+ //this.world.getMethodProfiler().exitEnter("ticking"); // Akarin - remove caller
|
|
this.timingTicking.startTiming();
|
|
|
|
for (final NextTickListEntry<T> toTick : this.toTickThisTick) {
|
|
diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java.rej b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java.rej
|
|
deleted file mode 100644
|
|
index c9fa39c5b4b013b56720e339463ffcb5fd3c13f9..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java.rej
|
|
+++ /dev/null
|
|
@@ -1,10 +0,0 @@
|
|
-diff a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java (rejected hunks)
|
|
-@@ -283,7 +283,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
|
- this.nextTick = this.world.getTime() + 1;
|
|
-
|
|
- this.timingCleanup.stopTiming();
|
|
-- this.world.getMethodProfiler().exitEnter("ticking");
|
|
-+ //this.world.getMethodProfiler().exitEnter("ticking"); // Akarin - remove caller
|
|
- this.timingTicking.startTiming();
|
|
-
|
|
- for (final NextTickListEntry<T> toTick : this.toTickThisTick) {
|
|
diff --git a/src/main/java/com/proximyst/rainforest/RainforestConfig.java b/src/main/java/com/proximyst/rainforest/RainforestConfig.java
|
|
index e0af5eb280dfd2ef6c9a80385e1705f7231a5338..f6623032e5d4034c104aa1fc6ff4265169e462ba 100644
|
|
--- a/src/main/java/com/proximyst/rainforest/RainforestConfig.java
|
|
+++ b/src/main/java/com/proximyst/rainforest/RainforestConfig.java
|
|
@@ -195,7 +195,7 @@ public final class RainforestConfig {
|
|
allowSandDuping = getBoolean("allow-sand-duping", allowSandDuping);
|
|
}
|
|
|
|
- public static String brandName = "Rainforest";
|
|
+ public static String brandName = "Yatopia"; // Yatopia
|
|
private static void brandName() {
|
|
brandName = getString("brand-name", brandName);
|
|
}
|
|
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
index fe7330fabe386966c2d203a190a00a785ea21be0..cb344a424bf4c657bb1bbca286a1136c9b21b489 100644
|
|
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
@@ -16,7 +16,7 @@ public final class OrigamiConfig {
|
|
private static final Object[] EMPTY = new Object[0];
|
|
|
|
private static File configFile;
|
|
- private static YamlConfiguration config;
|
|
+ public static YamlConfiguration config; // Yatopia
|
|
private static int configVersion;
|
|
|
|
public static void init(final File file) {
|
|
@@ -112,6 +112,28 @@ public final class OrigamiConfig {
|
|
config.addDefault("worlds.default." + path, Double.valueOf(dfl));
|
|
return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl));
|
|
}
|
|
+
|
|
+ public boolean tickEmptyHoppers = true;
|
|
+ public int fullHopperCooldown = 128;
|
|
+ private void hopperOptimizations() {
|
|
+ tickEmptyHoppers = getBoolean("tick-empty-hoppers", tickEmptyHoppers);
|
|
+ fullHopperCooldown = getInt("ticks-per.full-hopper-cooldown", fullHopperCooldown);
|
|
+ }
|
|
+
|
|
+ public boolean fastFeatureSearchDontLoad = false;
|
|
+ private void fastFeatureSearchDontLoad() {
|
|
+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false);
|
|
+ }
|
|
+
|
|
+ public boolean pigmenDontTargetUnlessHit = false;
|
|
+ private void pigmenDontTargetUnlessHit() {
|
|
+ pigmenDontTargetUnlessHit = getBoolean("pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit);
|
|
+ }
|
|
+
|
|
+ public boolean disableObserverClocks = false;
|
|
+ private void observerClock() {
|
|
+ disableObserverClocks = getBoolean("disable-observer-clocks", disableObserverClocks);
|
|
+ }
|
|
}
|
|
|
|
}
|
|
\ No newline at end of file
|
|
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java.rej b/src/main/java/de/minebench/origami/OrigamiConfig.java.rej
|
|
deleted file mode 100644
|
|
index 02f5ccf54210776770d3215afb7c8e82f750d57e..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java.rej
|
|
+++ /dev/null
|
|
@@ -1,12 +0,0 @@
|
|
-diff a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java (rejected hunks)
|
|
-@@ -153,6 +153,10 @@ public final class OrigamiConfig {
|
|
- public int getTickRate(String type, String typeName, String entityType, int def) {
|
|
- return tickRates.getOrDefault(type + "." + entityType + "." + typeName, tickRates.getOrDefault(type + "." + typeName, def));
|
|
- }
|
|
-+ public boolean pigmenDontTargetUnlessHit = false;
|
|
-+ private void pigmenDontTargetUnlessHit() {
|
|
-+ pigmenDontTargetUnlessHit = getBoolean("pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit);
|
|
-+ }
|
|
- public int pigmenPortalSpawn = 2000;
|
|
- public double pigmenPortalBoost = 0.0;
|
|
- public boolean pigmenFarmsWaterAi = false;
|
|
diff --git a/src/main/java/net/minecraft/server/Behavior.java b/src/main/java/net/minecraft/server/Behavior.java
|
|
index 0490f6bb798b94ce69a40f8a940caaa545c4a3c0..65cbe8ea9551ee804ca35a594680e845eebbacac 100644
|
|
--- a/src/main/java/net/minecraft/server/Behavior.java
|
|
+++ b/src/main/java/net/minecraft/server/Behavior.java
|
|
@@ -11,6 +11,7 @@ public abstract class Behavior<E extends EntityLiving> {
|
|
private long c;
|
|
private final int d;
|
|
private final int e;
|
|
+ co.aikar.timings.Timing timing; // Origami - behavior timing
|
|
|
|
public Behavior(Map<MemoryModuleType<?>, MemoryStatus> map) {
|
|
this(map, 60);
|
|
@@ -25,6 +26,9 @@ public abstract class Behavior<E extends EntityLiving> {
|
|
this.d = i;
|
|
this.e = j;
|
|
this.a = map;
|
|
+ // Origami start - behavior timing
|
|
+ timing = co.aikar.timings.WorldTimingsHandler.getBehaviorTimings(getClass().getSimpleName());
|
|
+ // Origami end
|
|
}
|
|
|
|
public Behavior.Status a() {
|
|
diff --git a/src/main/java/net/minecraft/server/Behavior.java.rej b/src/main/java/net/minecraft/server/Behavior.java.rej
|
|
deleted file mode 100644
|
|
index c3d129452b4f6ff2069bc066e594b1c632ceb0d4..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/Behavior.java.rej
|
|
+++ /dev/null
|
|
@@ -1,19 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/Behavior.java b/src/main/java/net/minecraft/server/Behavior.java (rejected hunks)
|
|
-@@ -15,6 +15,7 @@ public abstract class Behavior<E extends EntityLiving> {
|
|
- private final String configKey;
|
|
- private static final String RATE_TYPE = "behavior";
|
|
- // Origami end
|
|
-+ co.aikar.timings.Timing timing; // Origami - behavior timing
|
|
-
|
|
- public Behavior(Map<MemoryModuleType<?>, MemoryStatus> map) {
|
|
- this(map, 60);
|
|
-@@ -37,6 +38,9 @@ public abstract class Behavior<E extends EntityLiving> {
|
|
- }
|
|
- this.configKey = key;
|
|
- // Origami end
|
|
-+ // Origami start - behavior timing
|
|
-+ timing = co.aikar.timings.WorldTimingsHandler.getBehaviorTimings(key);
|
|
-+ // Origami end
|
|
- }
|
|
-
|
|
- public Behavior.Status a() {
|
|
diff --git a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
|
|
index 685351f11497a33ef4ba99055fa7da3a8de18af2..5c19047bbc464869a6d65ef02e7955eabac92809 100644
|
|
--- a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
|
|
+++ b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
|
|
@@ -127,6 +127,17 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
private static boolean a(WorldServer worldserver, EntityLiving entityliving, BlockPosition blockposition) {
|
|
BehaviorController<?> behaviorcontroller = entityliving.getBehaviorController();
|
|
|
|
+ // Yatopia start - replaced logic
|
|
+ if (!behaviorcontroller.hasMemory(MemoryModuleType.MOBS)) return false;
|
|
+ for (EntityLiving entity : behaviorcontroller.getMemory(MemoryModuleType.MOBS).get()) {
|
|
+ if (entity.getEntityType() == entityliving.getEntityType()
|
|
+ && blockposition.a(entity.getPositionVector(), 2.0D)
|
|
+ && b(worldserver, entity, blockposition)) {
|
|
+ return true;
|
|
+ }
|
|
+ }
|
|
+ return false;
|
|
+ /*
|
|
return !behaviorcontroller.hasMemory(MemoryModuleType.MOBS) ? false : (behaviorcontroller.getMemory(MemoryModuleType.MOBS).get()).stream().filter((entityliving1) -> { // CraftBukkit - decompile error
|
|
return entityliving1.getEntityType() == entityliving.getEntityType();
|
|
}).filter((entityliving1) -> {
|
|
@@ -134,6 +145,7 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
}).anyMatch((entityliving1) -> {
|
|
return b(worldserver, entityliving1, blockposition);
|
|
});
|
|
+ */ // Yatopia end
|
|
}
|
|
|
|
private static boolean b(WorldServer worldserver, EntityLiving entityliving, BlockPosition blockposition) {
|
|
diff --git a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej
|
|
deleted file mode 100644
|
|
index 738aa0c089e2d1f1d8ecb983d3d6351a1d4f690c..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej
|
|
+++ /dev/null
|
|
@@ -1,59 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java (rejected hunks)
|
|
-@@ -2,6 +2,10 @@ package net.minecraft.server;
|
|
-
|
|
- import com.google.common.collect.ImmutableMap;
|
|
- import com.google.common.collect.Sets;
|
|
-+import org.bukkit.craftbukkit.block.CraftBlock;
|
|
-+import org.bukkit.event.entity.EntityInteractEvent;
|
|
-+
|
|
-+import java.util.ArrayList;
|
|
- import java.util.Iterator;
|
|
- import java.util.List;
|
|
- import java.util.Set;
|
|
-@@ -19,9 +23,12 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
- BehaviorController<?> behaviorcontroller = entityliving.getBehaviorController();
|
|
- PathEntity pathentity = (PathEntity) behaviorcontroller.getMemory(MemoryModuleType.PATH).get();
|
|
- List<GlobalPos> list = (List) behaviorcontroller.getMemory(MemoryModuleType.INTERACTABLE_DOORS).get();
|
|
-- List<BlockPosition> list1 = (List) pathentity.d().stream().map((pathpoint) -> {
|
|
-- return new BlockPosition(pathpoint.a, pathpoint.b, pathpoint.c);
|
|
-- }).collect(Collectors.toList());
|
|
-+ List<BlockPosition> result = new ArrayList<>();
|
|
-+ for (PathPoint pathpoint : pathentity.d()) {
|
|
-+ BlockPosition blockPosition = new BlockPosition(pathpoint.a, pathpoint.b, pathpoint.c);
|
|
-+ result.add(blockPosition);
|
|
-+ }
|
|
-+ List<BlockPosition> list1 = (List) result;
|
|
- Set<BlockPosition> set = this.a(worldserver, list, list1);
|
|
- int j = pathentity.f() - 1;
|
|
-
|
|
-@@ -38,7 +45,7 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
- }
|
|
-
|
|
- private void a(WorldServer worldserver, List<BlockPosition> list, Set<BlockPosition> set, int i, EntityLiving entityliving, BehaviorController<?> behaviorcontroller) {
|
|
-- set.forEach((blockposition) -> {
|
|
-+ for (BlockPosition blockposition : set) {
|
|
- int j = list.indexOf(blockposition);
|
|
- IBlockData iblockdata = worldserver.getType(blockposition);
|
|
- Block block = iblockdata.getBlock();
|
|
-@@ -47,10 +54,10 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
- boolean flag = j >= i;
|
|
-
|
|
- // CraftBukkit start - entities opening doors
|
|
-- org.bukkit.event.entity.EntityInteractEvent event = new org.bukkit.event.entity.EntityInteractEvent(entityliving.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(entityliving.world, blockposition));
|
|
-+ EntityInteractEvent event = new EntityInteractEvent(entityliving.getBukkitEntity(), CraftBlock.at(entityliving.world, blockposition));
|
|
- entityliving.world.getServer().getPluginManager().callEvent(event);
|
|
- if (event.isCancelled()) {
|
|
-- return;
|
|
-+ continue;
|
|
- }
|
|
- // CaftBukkit end
|
|
- ((BlockDoor) block).setDoor(worldserver, blockposition, flag);
|
|
-@@ -70,7 +77,7 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
|
|
- }
|
|
- }
|
|
-
|
|
-- });
|
|
-+ }
|
|
- a(worldserver, list, i, entityliving, behaviorcontroller);
|
|
- }
|
|
-
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
index bdbb716a91cd320dd9ab39ed6b7442388c92d074..cc88e8c5f24a0f69b75b341ddc1bc2a38bda383e 100644
|
|
--- a/src/main/java/net/minecraft/server/BiomeBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
@@ -516,7 +516,7 @@ public final class BiomeBase {
|
|
private static final Map<String, BiomeBase.Precipitation> e;
|
|
|
|
static {
|
|
- Map<String, Precipitation> map = new HashMap<>();
|
|
+ Map<String, Precipitation> map = new java.util.HashMap<>(); // Yatopia
|
|
for (Precipitation biomebase_precipitation : values()) {
|
|
if (map.put(biomebase_precipitation.b(), biomebase_precipitation) != null) {
|
|
throw new IllegalStateException("Duplicate key");
|
|
@@ -553,7 +553,7 @@ public final class BiomeBase {
|
|
private static final Map<String, BiomeBase.Geography> s;
|
|
|
|
static {
|
|
- Map<String, Geography> map = new HashMap<>();
|
|
+ Map<String, Geography> map = new java.util.HashMap<>(); // Yatopia
|
|
for (Geography biomebase_geography : values()) {
|
|
if (map.put(biomebase_geography.b(), biomebase_geography) != null) {
|
|
throw new IllegalStateException("Duplicate key");
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java.rej b/src/main/java/net/minecraft/server/BiomeBase.java.rej
|
|
deleted file mode 100644
|
|
index 96bedf79efa73874a67a7ac6c7672497f3f94f67..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/BiomeBase.java.rej
|
|
+++ /dev/null
|
|
@@ -1,74 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java (rejected hunks)
|
|
-@@ -7,15 +7,8 @@ import com.google.common.collect.Sets;
|
|
- import com.mojang.serialization.Codec;
|
|
- import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|
- import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap;
|
|
--import java.util.Arrays;
|
|
--import java.util.Collection;
|
|
--import java.util.Comparator;
|
|
--import java.util.Iterator;
|
|
--import java.util.List;
|
|
--import java.util.Map;
|
|
--import java.util.Optional;
|
|
--import java.util.Random;
|
|
--import java.util.Set;
|
|
-+
|
|
-+import java.util.*;
|
|
- import java.util.function.Function;
|
|
- import java.util.stream.Collectors;
|
|
- import java.util.stream.Stream;
|
|
-@@ -41,7 +34,14 @@ public class BiomeBase {
|
|
- WorldGenSurfaceComposite.a.fieldOf("surface_builder").forGetter(biome -> biome.m),
|
|
- Codec.simpleMap(WorldGenStage.Features.c, WorldGenCarverWrapper.a.listOf().promotePartial(SystemUtils.a("Carver: ", LOGGER::error)), INamable.a(WorldGenStage.Features.values())).fieldOf("carvers").forGetter(biome -> biome.q),
|
|
- Codec.simpleMap((Codec<WorldGenStage.Decoration>) k1, WorldGenFeatureConfigured.b.listOf().promotePartial(SystemUtils.a("Feature: ", LOGGER::error)), INamable.a(WorldGenStage.Decoration.values())).fieldOf("features").forGetter(biome -> biome.r),
|
|
-- StructureFeature.a.listOf().promotePartial(SystemUtils.a("Structure start: ", LOGGER::error)).fieldOf("starts").forGetter(biome -> biome.u.values().stream().sorted(Comparator.comparing(cf -> IRegistry.STRUCTURE_FEATURE.getKey(cf.b))).collect(Collectors.toList())),
|
|
-+ StructureFeature.a.listOf().promotePartial(SystemUtils.a("Structure start: ", LOGGER::error)).fieldOf("starts").forGetter(biome -> {
|
|
-+ List<StructureFeature<?, ?>> list = new ArrayList<>();
|
|
-+ for (StructureFeature<?, ?> structureFeature : biome.u.values()) {
|
|
-+ list.add(structureFeature);
|
|
-+ }
|
|
-+ list.sort(Comparator.comparing(cf -> IRegistry.STRUCTURE_FEATURE.getKey(cf.b)));
|
|
-+ return list;
|
|
-+ }),
|
|
- Codec.simpleMap(EnumCreatureType.g, BiomeMeta.b.listOf().promotePartial(SystemUtils.a("Spawn data: ", LOGGER::error)), INamable.a(EnumCreatureType.values())).fieldOf("spawners").forGetter(biome -> biome.v),
|
|
- d.a.listOf().fieldOf("climate_parameters").forGetter(biome -> biome.x),
|
|
- Codec.STRING.optionalFieldOf("parent").forGetter(biome -> Optional.ofNullable(biome.l))
|
|
-@@ -159,9 +159,13 @@ public class BiomeBase {
|
|
- this.m = worldgensurfacecomposite;
|
|
- this.q = map;
|
|
- this.r = map1;
|
|
-- this.u = (Map) list.stream().collect(Collectors.toMap((structurefeature) -> {
|
|
-- return structurefeature.b;
|
|
-- }, Function.identity()));
|
|
-+ Map<StructureGenerator<?>, StructureFeature<?, ?>> result = new HashMap<>();
|
|
-+ for (StructureFeature<?, ?> structurefeature : list) {
|
|
-+ if (result.put(structurefeature.b, structurefeature) != null) {
|
|
-+ throw new IllegalStateException("Duplicate key");
|
|
-+ }
|
|
-+ }
|
|
-+ this.u = (Map) result;
|
|
- this.v = Maps.newEnumMap(EnumCreatureType.class); this.v.putAll(map2); // Paper
|
|
- this.x = list1;
|
|
- this.l = (String) optional.orElse(null); // Paper - decompile fix
|
|
-@@ -727,9 +749,18 @@ public class BiomeBase {
|
|
-
|
|
- OCEAN("ocean"), COLD("cold"), MEDIUM("medium"), WARM("warm");
|
|
-
|
|
-- private static final Map<String, BiomeBase.EnumTemperature> e = (Map) Arrays.stream(values()).collect(Collectors.toMap(BiomeBase.EnumTemperature::a, (biomebase_enumtemperature) -> {
|
|
-- return biomebase_enumtemperature;
|
|
-- }));
|
|
-+ private static final Map<String, BiomeBase.EnumTemperature> e;
|
|
-+
|
|
-+ static {
|
|
-+ Map<String, EnumTemperature> map = new HashMap<>();
|
|
-+ for (EnumTemperature biomebase_enumtemperature : values()) {
|
|
-+ if (map.put(biomebase_enumtemperature.a(), biomebase_enumtemperature) != null) {
|
|
-+ throw new IllegalStateException("Duplicate key");
|
|
-+ }
|
|
-+ }
|
|
-+ e = (Map) map;
|
|
-+ }
|
|
-+
|
|
- private final String f;
|
|
-
|
|
- private EnumTemperature(String s) {
|
|
diff --git a/src/main/java/net/minecraft/server/Block.java.rej b/src/main/java/net/minecraft/server/Block.java.rej
|
|
deleted file mode 100644
|
|
index 4cc30faacb1ee173cbc546cc57ff4ce032024587..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/Block.java.rej
|
|
+++ /dev/null
|
|
@@ -1,37 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java (rejected hunks)
|
|
-@@ -198,9 +198,9 @@ public class Block extends BlockBase implements IMaterial {
|
|
-
|
|
- public static void c(IBlockData iblockdata, World world, BlockPosition blockposition) {
|
|
- if (world instanceof WorldServer) {
|
|
-- a(iblockdata, (WorldServer) world, blockposition, (TileEntity) null).forEach((itemstack) -> {
|
|
-+ for (ItemStack itemstack : a(iblockdata, (WorldServer) world, blockposition, (TileEntity) null)) {
|
|
- a(world, blockposition, itemstack);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- iblockdata.dropNaturally(world, blockposition, ItemStack.b);
|
|
-@@ -208,9 +208,9 @@ public class Block extends BlockBase implements IMaterial {
|
|
- public static void dropNaturally(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) { a(iblockdata, world, blockposition, tileentity); }
|
|
- public static void a(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) {
|
|
- if (world instanceof WorldServer) {
|
|
-- a(iblockdata, (WorldServer) world, blockposition, tileentity).forEach((itemstack) -> {
|
|
-+ for (ItemStack itemstack : a(iblockdata, (WorldServer) world, blockposition, tileentity)) {
|
|
- a(world, blockposition, itemstack);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- iblockdata.dropNaturally(world, blockposition, ItemStack.b);
|
|
-@@ -218,9 +218,9 @@ public class Block extends BlockBase implements IMaterial {
|
|
-
|
|
- public static void dropItems(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity, Entity entity, ItemStack itemstack) {
|
|
- if (world instanceof WorldServer) {
|
|
-- getDrops(iblockdata, (WorldServer) world, blockposition, tileentity, entity, itemstack).forEach((itemstack1) -> {
|
|
-+ for (ItemStack itemstack1 : getDrops(iblockdata, (WorldServer) world, blockposition, tileentity, entity, itemstack)) {
|
|
- a(world, blockposition, itemstack1);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- iblockdata.dropNaturally(world, blockposition, itemstack);
|
|
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
|
|
index 032f8029d73324dbcb28c1b872280f4e2930efc7..1d02880e5818d22c13d67d3f44844a2cca51c164 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockBase.java
|
|
@@ -721,9 +721,14 @@ public abstract class BlockBase {
|
|
}
|
|
|
|
this.b = block.c(iblockdata, BlockAccessAir.INSTANCE, BlockPosition.ZERO, VoxelShapeCollision.a());
|
|
- this.c = Arrays.stream(EnumDirection.EnumAxis.values()).anyMatch((enumdirection_enumaxis) -> {
|
|
- return this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D;
|
|
- });
|
|
+ boolean result = false;
|
|
+ for (EnumDirection.EnumAxis axis : EnumDirection.EnumAxis.values()) {
|
|
+ if (this.b.b(axis) < 0.0D || this.b.c(axis) > 1.0D) {
|
|
+ result = true;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ this.c = result;
|
|
this.j = new boolean[BlockBase.BlockData.Cache.e.length * BlockBase.BlockData.Cache.f];
|
|
EnumDirection[] aenumdirection1 = BlockBase.BlockData.Cache.e;
|
|
int k = aenumdirection1.length;
|
|
diff --git a/src/main/java/net/minecraft/server/BlockBase.java.rej b/src/main/java/net/minecraft/server/BlockBase.java.rej
|
|
deleted file mode 100644
|
|
index 4e6f3d695d5c1a888fe73ea81e936642f3667f48..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/BlockBase.java.rej
|
|
+++ /dev/null
|
|
@@ -1,19 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java (rejected hunks)
|
|
-@@ -700,9 +700,14 @@ public abstract class BlockBase {
|
|
- }
|
|
-
|
|
- this.b = block.c(iblockdata, BlockAccessAir.INSTANCE, BlockPosition.ZERO, VoxelShapeCollision.a());
|
|
-- this.c = Arrays.stream(EnumDirection.EnumAxis.values()).anyMatch((enumdirection_enumaxis) -> {
|
|
-- return this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D;
|
|
-- });
|
|
-+ boolean result = false;
|
|
-+ for (EnumDirection.EnumAxis enumdirection_enumaxis : EnumDirection.EnumAxis.values()) {
|
|
-+ if (this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D) {
|
|
-+ result = true;
|
|
-+ break;
|
|
-+ }
|
|
-+ }
|
|
-+ this.c = result;
|
|
- this.d = new boolean[6];
|
|
- EnumDirection[] aenumdirection1 = f;
|
|
- int k = aenumdirection1.length;
|
|
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
index 2291135eaef64c403183724cb6e413cd7e472672..6fcc7ed7c129e6a33386d65b37cbba4a44e96f0f 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
@@ -56,6 +56,12 @@ public class BlockPosition extends BaseBlockPosition {
|
|
this(baseblockposition.getX(), baseblockposition.getY(), baseblockposition.getZ());
|
|
}
|
|
|
|
+ // Yatopia start - helper method
|
|
+ public BlockPosition(Entity entity) {
|
|
+ this(entity.locX(), entity.locY(), entity.locZ());
|
|
+ }
|
|
+ // Yatopia end
|
|
+
|
|
public static long getAdjacent(int baseX, int baseY, int baseZ, EnumDirection enumdirection) { return asLong(baseX + enumdirection.getAdjacentX(), baseY + enumdirection.getAdjacentY(), baseZ + enumdirection.getAdjacentZ()); } // Paper
|
|
public static long a(long i, EnumDirection enumdirection) {
|
|
return a(i, enumdirection.getAdjacentX(), enumdirection.getAdjacentY(), enumdirection.getAdjacentZ());
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
index dde38e0222e658b5a841a32af3fc5153ecb02392..5af513cb052382c34e157110265f80a1a2efef15 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
@@ -739,11 +739,11 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
if (this.a(playerchunk, l)) {
|
|
GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler();
|
|
|
|
- gameprofilerfiller.enter("chunkLoad");
|
|
+ //gameprofilerfiller.enter("chunkLoad"); // Akarin - remove caller
|
|
chunkMapDistance.delayDistanceManagerTick = false; // Paper - ensure this is never false
|
|
this.tickDistanceManager();
|
|
playerchunk = this.getChunk(k);
|
|
- gameprofilerfiller.exit();
|
|
+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
if (this.a(playerchunk, l)) {
|
|
this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity
|
|
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("No chunk holder after ticket has been added")));
|
|
@@ -981,11 +981,11 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
player.playerNaturallySpawnedEvent = event;
|
|
}
|
|
// Paper end - optimize isOutisdeRange
|
|
- this.world.getMethodProfiler().enter("pollingChunks");
|
|
+ //this.world.getMethodProfiler().enter("pollingChunks"); // Akarin - remove caller
|
|
int k = this.world.getGameRules().getInt(GameRules.RANDOM_TICK_SPEED);
|
|
boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit
|
|
|
|
- this.world.getMethodProfiler().enter("naturalSpawnCount");
|
|
+ //this.world.getMethodProfiler().enter("naturalSpawnCount"); // Akarin - remove caller
|
|
this.world.timings.countNaturalMobs.startTiming(); // Paper - timings
|
|
int l = this.chunkMapDistance.b();
|
|
// Paper start - per player mob spawning
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej b/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej
|
|
deleted file mode 100644
|
|
index 7dd44fa8dc734862bf87691f1d7f4a5dae53b152..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,29 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java (rejected hunks)
|
|
-@@ -732,11 +732,11 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
- if (this.a(playerchunk, l)) {
|
|
- GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler();
|
|
-
|
|
-- gameprofilerfiller.enter("chunkLoad");
|
|
-+ //gameprofilerfiller.enter("chunkLoad"); // Akarin - remove caller
|
|
- chunkMapDistance.delayDistanceManagerTick = false; // Paper - ensure this is never false
|
|
- this.tickDistanceManager();
|
|
- playerchunk = this.getChunk(k);
|
|
-- gameprofilerfiller.exit();
|
|
-+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
- if (this.a(playerchunk, l)) {
|
|
- this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity
|
|
- throw (IllegalStateException) SystemUtils.c(new IllegalStateException("No chunk holder after ticket has been added"));
|
|
-@@ -971,11 +971,11 @@ public class ChunkProviderServer extends IChunkProvider {
|
|
- player.lastEntitySpawnRadiusSquared = (double)((range << 4) * (range << 4)); // used in isOutsideRange
|
|
- }
|
|
- // Paper end - optimize isOutisdeRange
|
|
-- this.world.getMethodProfiler().enter("pollingChunks");
|
|
-+ //this.world.getMethodProfiler().enter("pollingChunks"); // Akarin - remove caller
|
|
- int k = this.world.getGameRules().getInt(GameRules.RANDOM_TICK_SPEED);
|
|
- boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit
|
|
-
|
|
-- this.world.getMethodProfiler().enter("naturalSpawnCount");
|
|
-+ //this.world.getMethodProfiler().enter("naturalSpawnCount"); // Akarin - remove caller
|
|
- this.world.timings.countNaturalMobs.startTiming(); // Paper - timings
|
|
- int l = this.chunkMapDistance.b();
|
|
- // Paper start - per player mob spawning
|
|
diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java
|
|
index 61ef3adcfb021e222042de62ad06a2e7d808f5b5..f53ff805c5edf6398498aad396144d0fc964c74f 100644
|
|
--- a/src/main/java/net/minecraft/server/ContainerSmithing.java
|
|
+++ b/src/main/java/net/minecraft/server/ContainerSmithing.java
|
|
@@ -73,9 +73,12 @@ public class ContainerSmithing extends ContainerAnvilAbstract {
|
|
|
|
@Override
|
|
protected boolean a(ItemStack itemstack) {
|
|
- return this.i.stream().anyMatch((recipesmithing) -> {
|
|
- return recipesmithing.a(itemstack);
|
|
- });
|
|
+ for (RecipeSmithing recipe : this.i) {
|
|
+ if (recipe.a(itemstack)) {
|
|
+ return true;
|
|
+ }
|
|
+ }
|
|
+ return false;
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java.rej b/src/main/java/net/minecraft/server/ContainerSmithing.java.rej
|
|
deleted file mode 100644
|
|
index 2317638f225d0ccba97020c4e739d7dea99b78db..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/ContainerSmithing.java.rej
|
|
+++ /dev/null
|
|
@@ -1,17 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java (rejected hunks)
|
|
-@@ -70,9 +70,12 @@ public class ContainerSmithing extends ContainerAnvilAbstract {
|
|
-
|
|
- @Override
|
|
- protected boolean a(ItemStack itemstack) {
|
|
-- return this.i.stream().anyMatch((recipesmithing) -> {
|
|
-- return recipesmithing.a(itemstack);
|
|
-- });
|
|
-+ for (RecipeSmithing recipesmithing : this.i) {
|
|
-+ if (recipesmithing.a(itemstack)) {
|
|
-+ return true;
|
|
-+ }
|
|
-+ }
|
|
-+ return false;
|
|
- }
|
|
-
|
|
- // CraftBukkit start
|
|
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
|
|
index b0b49904e9590b91743ebafb7983a392a6c95083..2cbfef98508bcb07db1ad1e5bdafc4cc2bff1393 100644
|
|
--- a/src/main/java/net/minecraft/server/CraftingManager.java
|
|
+++ b/src/main/java/net/minecraft/server/CraftingManager.java
|
|
@@ -124,15 +124,22 @@ public class CraftingManager extends ResourceDataJson {
|
|
}
|
|
|
|
public Optional<? extends IRecipe<?>> getRecipe(MinecraftKey minecraftkey) {
|
|
- return this.recipes.values().stream().map((map) -> {
|
|
- return map.get(minecraftkey); // CraftBukkit - decompile error
|
|
- }).filter(Objects::nonNull).findFirst();
|
|
+ // CraftBukkit - decompile error
|
|
+ for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> map : this.recipes.values()) {
|
|
+ IRecipe<?> iRecipe = map.get(minecraftkey);
|
|
+ if (iRecipe != null) {
|
|
+ return Optional.<IRecipe<?>>of(iRecipe);
|
|
+ }
|
|
+ }
|
|
+ return Optional.empty();
|
|
}
|
|
|
|
public Collection<IRecipe<?>> b() {
|
|
- return (Collection) this.recipes.values().stream().flatMap((map) -> {
|
|
- return map.values().stream();
|
|
- }).collect(Collectors.toSet());
|
|
+ Set<IRecipe<?>> set = new HashSet<>();
|
|
+ for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> map : this.recipes.values()) {
|
|
+ set.addAll(map.values());
|
|
+ }
|
|
+ return set;
|
|
}
|
|
|
|
public Stream<MinecraftKey> d() {
|
|
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java.rej b/src/main/java/net/minecraft/server/CraftingManager.java.rej
|
|
deleted file mode 100644
|
|
index adeca862cc3a3d1001c9d515fa2083acef0520e2..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/CraftingManager.java.rej
|
|
+++ /dev/null
|
|
@@ -1,32 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java (rejected hunks)
|
|
-@@ -127,15 +124,24 @@ public class CraftingManager extends ResourceDataJson {
|
|
- }
|
|
-
|
|
- public Optional<? extends IRecipe<?>> a(MinecraftKey minecraftkey) {
|
|
-- return this.recipes.values().stream().map((map) -> {
|
|
-- return map.get(minecraftkey); // CraftBukkit - decompile error
|
|
-- }).filter(Objects::nonNull).findFirst();
|
|
-+ // CraftBukkit - decompile error
|
|
-+ for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> map : this.recipes.values()) {
|
|
-+ IRecipe<?> iRecipe = map.get(minecraftkey);
|
|
-+ if (iRecipe != null) {
|
|
-+ return Optional.<IRecipe<?>>of(iRecipe);
|
|
-+ }
|
|
-+ }
|
|
-+ return Optional.empty();
|
|
- }
|
|
-
|
|
- public Collection<IRecipe<?>> b() {
|
|
-- return (Collection) this.recipes.values().stream().flatMap((map) -> {
|
|
-- return map.values().stream();
|
|
-- }).collect(Collectors.toSet());
|
|
-+ Set<IRecipe<?>> set = new HashSet<>();
|
|
-+ for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> map : this.recipes.values()) {
|
|
-+ for (IRecipe<?> iRecipe : map.values()) {
|
|
-+ set.add(iRecipe);
|
|
-+ }
|
|
-+ }
|
|
-+ return (Collection) set;
|
|
- }
|
|
-
|
|
- public Stream<MinecraftKey> d() {
|
|
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java.rej b/src/main/java/net/minecraft/server/DedicatedServer.java.rej
|
|
deleted file mode 100644
|
|
index 4c2d5b3e080c925d687733ec40d4fb4b22552c96..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/DedicatedServer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,9 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java (rejected hunks)
|
|
-@@ -170,6 +170,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|
- com.destroystokyo.paper.PaperConfig.registerCommands();
|
|
- com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now
|
|
- // Paper end
|
|
-+ com.proximyst.rainforest.RainforestConfig.init((java.io.File) options.valueOf("rainforest-settings")); // Rainforest
|
|
-
|
|
- this.setPVP(dedicatedserverproperties.pvp);
|
|
- this.setAllowFlight(dedicatedserverproperties.allowFlight);
|
|
diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java.rej b/src/main/java/net/minecraft/server/DispenserRegistry.java.rej
|
|
deleted file mode 100644
|
|
index 8347faf8a7ee62d27cf5eb9f285695fddadfa624..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/DispenserRegistry.java.rej
|
|
+++ /dev/null
|
|
@@ -1,13 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java (rejected hunks)
|
|
-@@ -156,9 +156,9 @@ public class DispenserRegistry {
|
|
- throw new IllegalArgumentException("Not bootstrapped");
|
|
- } else {
|
|
- if (SharedConstants.d) {
|
|
-- b().forEach((s) -> {
|
|
-+ for (String s : b()) {
|
|
- DispenserRegistry.LOGGER.error("Missing translations: " + s);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- AttributeDefaults.a();
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 6219bc3961e124a3db7493d1193e8e7cb034b794..5e4744e856596f1ef234e2c3b1e5d15a3adbd32a 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -442,7 +442,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
public void setPosition(double d0, double d1, double d2) {
|
|
this.setPositionRaw(d0, d1, d2);
|
|
//this.a(this.size.a(d0, d1, d2)); // Paper - move into setPositionRaw
|
|
- if (valid) ((WorldServer) world).chunkCheck(this); // CraftBukkit
|
|
+ if (valid && !dead) ((WorldServer) world).chunkCheck(this); // CraftBukkit // Purpur
|
|
}
|
|
|
|
protected void ae() {
|
|
@@ -525,7 +525,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
}
|
|
|
|
this.justCreated = false;
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
public void resetPortalCooldown() {
|
|
@@ -2377,7 +2377,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
WorldServer worldserver1 = minecraftserver.getWorldServer(resourcekey);
|
|
|
|
if (true && !this.isPassenger() && this.portalTicks++ >= i) { // CraftBukkit
|
|
- this.world.getMethodProfiler().enter("portal");
|
|
+ //this.world.getMethodProfiler().enter("portal"); // Akarin - remove caller
|
|
this.portalTicks = i;
|
|
this.resetPortalCooldown();
|
|
// CraftBukkit start
|
|
@@ -2387,7 +2387,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
this.b(worldserver1);
|
|
}
|
|
// CraftBukkit end
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
this.inPortal = false;
|
|
@@ -2770,14 +2770,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
}
|
|
// Paper end
|
|
if (this.world instanceof WorldServer && !this.dead) {
|
|
- this.world.getMethodProfiler().enter("changeDimension");
|
|
+ //this.world.getMethodProfiler().enter("changeDimension"); // Akarin - remove caller
|
|
// CraftBukkit start
|
|
// this.decouple();
|
|
if (worldserver == null) {
|
|
return null;
|
|
}
|
|
// CraftBukkit end
|
|
- this.world.getMethodProfiler().enter("reposition");
|
|
+ //this.world.getMethodProfiler().enter("reposition"); // Akarin - remove caller
|
|
ShapeDetectorShape shapedetectorshape = (location == null) ? this.a(worldserver) : new ShapeDetectorShape(new Vec3D(location.getX(), location.getY(), location.getZ()), Vec3D.a, this.yaw, this.pitch, worldserver, null); // CraftBukkit
|
|
|
|
if (shapedetectorshape == null) {
|
|
@@ -2810,10 +2810,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
}
|
|
|
|
this.bM();
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
((WorldServer) this.world).resetEmptyTime();
|
|
worldserver.resetEmptyTime();
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
return entity;
|
|
}
|
|
} else {
|
|
@@ -3048,7 +3048,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
entity.a(entity1, Entity::teleportAndSync);
|
|
}
|
|
|
|
- }
|
|
+ }); // Yatopia
|
|
}
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java.rej b/src/main/java/net/minecraft/server/Entity.java.rej
|
|
deleted file mode 100644
|
|
index 4383822bece27e6f165c3c6bdd20458f09da58f5..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/Entity.java.rej
|
|
+++ /dev/null
|
|
@@ -1,10 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java (rejected hunks)
|
|
-@@ -3015,7 +3015,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
- WorldServer worldserver = (WorldServer) this.world;
|
|
-
|
|
- this.setPositionRotation(d0, d1, d2, this.yaw, this.pitch);
|
|
-- this.collectPassengers().forEach((entity) -> { // Akarin - remove stream
|
|
-+ for (Entity entity : this.collectPassengers()) {// Akarin - remove stream
|
|
- worldserver.chunkCheck(entity);
|
|
- entity.aE = true;
|
|
- Iterator iterator = entity.passengers.iterator();
|
|
diff --git a/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/src/main/java/net/minecraft/server/EntityEnderCrystal.java
|
|
index 1942fae27051af79b6eb1d790a219da100bf889e..edad9669c67cab0df88947fa86b467c26deaa5f0 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityEnderCrystal.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityEnderCrystal.java
|
|
@@ -63,7 +63,7 @@ public class EntityEnderCrystal extends Entity {
|
|
}
|
|
|
|
if (targetPhantom == null) {
|
|
- for (EntityPhantom phantom : world.getEntitiesInAABB(EntityPhantom.class, getBoundingBox().grow(world.purpurConfig.phantomAttackedByCrystalRadius))) {
|
|
+ for (EntityPhantom phantom : world.getEntities(EntityPhantom.class, getBoundingBox().grow(world.purpurConfig.phantomAttackedByCrystalRadius), null)) { // Yatopia
|
|
if (phantom.hasLineOfSight(this)) {
|
|
attackPhantom(phantom);
|
|
break;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej b/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej
|
|
deleted file mode 100644
|
|
index 39583978bd58994a70718fd009ae8e57f7c60af8..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej
|
|
+++ /dev/null
|
|
@@ -1,13 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java (rejected hunks)
|
|
-@@ -462,9 +462,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
|
|
- TileEntity tileentity = nmsBlock.isTileEntity() ? this.world.getTileEntity(blockposition) : null;
|
|
- LootTableInfo.Builder loottableinfo_builder = (new LootTableInfo.Builder((WorldServer) this.world)).a(this.world.random).set(LootContextParameters.POSITION, blockposition).set(LootContextParameters.TOOL, ItemStack.b).set(LootContextParameters.EXPLOSION_RADIUS, 1.0F / event.getYield()).setOptional(LootContextParameters.BLOCK_ENTITY, tileentity);
|
|
-
|
|
-- craftBlock.getNMS().a(loottableinfo_builder).forEach((itemstack) -> {
|
|
-+ for (ItemStack itemstack : craftBlock.getNMS().a(loottableinfo_builder)) {
|
|
- Block.a(world, blockposition, itemstack);
|
|
-- });
|
|
-+ }
|
|
- craftBlock.getNMS().dropNaturally(world, blockposition, ItemStack.b);
|
|
- }
|
|
- // Paper start - TNTPrimeEvent
|
|
diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
index e3865a9b4c53656a1e9e1658c678ac6dfdfc55fc..de55acd1cda658a888e728b8aa7f3704a23a7fec 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
@@ -19,6 +19,13 @@ public class EntityEnderSignal extends Entity {
|
|
this.setPosition(d0, d1, d2);
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public void b(ItemStack itemstack) {
|
|
if (true || itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) { // CraftBukkit - always allow item changing
|
|
this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // CraftBukkit - decompile error
|
|
diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej b/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej
|
|
deleted file mode 100644
|
|
index ee4313713c81fd342161fb0b749c5de8b2bff046..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityEnderSignal.java.rej
|
|
+++ /dev/null
|
|
@@ -1,19 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java (rejected hunks)
|
|
-@@ -19,9 +19,16 @@ public class EntityEnderSignal extends Entity {
|
|
- this.setPosition(d0, d1, d2);
|
|
- }
|
|
-
|
|
-+ // Purpur start
|
|
-+ @Override
|
|
-+ public boolean canSaveToDisk() {
|
|
-+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
-+ }
|
|
-+ // Purpur end
|
|
-+
|
|
- public void b(ItemStack itemstack) {
|
|
- if (itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) {
|
|
-- this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a((Object) itemstack.cloneItemStack(), (itemstack1) -> {
|
|
-+ this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // Purpur - decompile error
|
|
- itemstack1.setCount(1);
|
|
- }));
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFox.java.rej b/src/main/java/net/minecraft/server/EntityFox.java.rej
|
|
deleted file mode 100644
|
|
index c3c7738570d3670b50f144f145b61dcc2d35bb85..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityFox.java.rej
|
|
+++ /dev/null
|
|
@@ -1,37 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java (rejected hunks)
|
|
-@@ -1404,12 +1398,29 @@ public class EntityFox extends EntityAnimal {
|
|
-
|
|
- RED(0, "red", new BiomeBase[]{Biomes.TAIGA, Biomes.TAIGA_HILLS, Biomes.TAIGA_MOUNTAINS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_SPRUCE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.GIANT_SPRUCE_TAIGA_HILLS}), SNOW(1, "snow", new BiomeBase[]{Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.SNOWY_TAIGA_MOUNTAINS});
|
|
-
|
|
-- private static final EntityFox.Type[] c = (EntityFox.Type[]) Arrays.stream(values()).sorted(Comparator.comparingInt(EntityFox.Type::c)).toArray((i) -> {
|
|
-- return new EntityFox.Type[i];
|
|
-- });
|
|
-- private static final Map<String, EntityFox.Type> d = (Map) Arrays.stream(values()).collect(Collectors.toMap(EntityFox.Type::a, (entityfox_type) -> {
|
|
-- return entityfox_type;
|
|
-- }));
|
|
-+ private static final EntityFox.Type[] c;
|
|
-+
|
|
-+ static {
|
|
-+ List<Type> list = new ArrayList<>();
|
|
-+ for (Type type : values()) {
|
|
-+ list.add(type);
|
|
-+ }
|
|
-+ list.sort(Comparator.comparingInt(Type::c));
|
|
-+ c = (Type[]) list.toArray(new Type[0]);
|
|
-+ }
|
|
-+
|
|
-+ private static final Map<String, EntityFox.Type> d;
|
|
-+
|
|
-+ static {
|
|
-+ Map<String, Type> map = new HashMap<>();
|
|
-+ for (Type entityfox_type : values()) {
|
|
-+ if (map.put(entityfox_type.a(), entityfox_type) != null) {
|
|
-+ throw new IllegalStateException("Duplicate key");
|
|
-+ }
|
|
-+ }
|
|
-+ d = (Map) map;
|
|
-+ }
|
|
-+
|
|
- private final int e;
|
|
- private final String f;
|
|
- private final List<BiomeBase> g;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java
|
|
index e53d22447b8978a5389f03a438faf260e41bfa0d..8d1cc5d8181af17fdc516da3ce8af3995b5f1b59 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
|
|
@@ -4,8 +4,61 @@ public class EntityGiantZombie extends EntityMonster {
|
|
|
|
public EntityGiantZombie(EntityTypes<? extends EntityGiantZombie> entitytypes, World world) {
|
|
super(entitytypes, world);
|
|
+ // Purpur start
|
|
+ setStepHeight(world.purpurConfig.giantStepHeight);
|
|
+ // Purpur end
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ protected void initPathfinder() {
|
|
+ if (world.purpurConfig.giantHaveAI) {
|
|
+ this.goalSelector.a(0, new PathfinderGoalFloat(this));
|
|
+ this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D));
|
|
+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 16.0F));
|
|
+ this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
|
|
+ this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
|
|
+ if (world.purpurConfig.giantHaveHostileAI) {
|
|
+ this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false));
|
|
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this).a(EntityPigZombie.class));
|
|
+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
|
|
+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false));
|
|
+ this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true));
|
|
+ this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, true));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public GroupDataEntity prepare(WorldAccess worldaccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @javax.annotation.Nullable GroupDataEntity groupdataentity, @javax.annotation.Nullable NBTTagCompound nbttagcompound) {
|
|
+ GroupDataEntity groupData = super.prepare(worldaccess, difficultydamagescaler, enummobspawn, groupdataentity, nbttagcompound);
|
|
+ getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.giantMaxHealth);
|
|
+ getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.giantMovementSpeed);
|
|
+ getAttributeMap().getAttribute(GenericAttributes.ATTACK_DAMAGE).setValue(world.purpurConfig.giantAttackDamage);
|
|
+ if (groupData == null) {
|
|
+ setEquipmentBasedOnDifficulty(difficultydamagescaler);
|
|
+ setEnchantmentBasedOnDifficulty(difficultydamagescaler);
|
|
+ }
|
|
+ return groupData;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected void setEquipmentBasedOnDifficulty(DifficultyDamageScaler difficulty) {
|
|
+ super.setEquipmentBasedOnDifficulty(difficulty);
|
|
+ // TODO make configurable
|
|
+ if (random.nextFloat() < (world.getDifficulty() == EnumDifficulty.HARD ? 0.1F : 0.05F)) {
|
|
+ setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.IRON_SWORD));
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public float getJumpHeight() {
|
|
+ // make giants jump as high as everything else relative to their size
|
|
+ // 1.0 makes bottom of feet about as high as their waist when they jump
|
|
+ return world.purpurConfig.giantJumpHeight;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
@Override
|
|
protected float b(EntityPose entitypose, EntitySize entitysize) {
|
|
return 10.440001F;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java.rej b/src/main/java/net/minecraft/server/EntityGiantZombie.java.rej
|
|
deleted file mode 100644
|
|
index ceb9077935f5405f1c0f07b6d9afc7d64a26ac30..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java.rej
|
|
+++ /dev/null
|
|
@@ -1,71 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java (rejected hunks)
|
|
-@@ -4,9 +4,68 @@ public class EntityGiantZombie extends EntityMonster {
|
|
-
|
|
- public EntityGiantZombie(EntityTypes<? extends EntityGiantZombie> entitytypes, World world) {
|
|
- super(entitytypes, world);
|
|
-- this.safeFallDistance = 10.0F; // Purpur
|
|
-+ // Purpur start
|
|
-+ this.safeFallDistance = 10.0F;
|
|
-+ setStepHeight(world.purpurConfig.giantStepHeight);
|
|
-+ // Purpur end
|
|
- }
|
|
-
|
|
-+ // Purpur start
|
|
-+ @Override
|
|
-+ protected void initPathfinder() {
|
|
-+ if (world.purpurConfig.giantHaveAI) {
|
|
-+ this.goalSelector.a(0, new PathfinderGoalFloat(this));
|
|
-+ this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D));
|
|
-+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 16.0F));
|
|
-+ this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
|
|
-+ this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
|
|
-+ if (world.purpurConfig.giantHaveHostileAI) {
|
|
-+ this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false));
|
|
-+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this).a(EntityPigZombie.class));
|
|
-+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
|
|
-+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false));
|
|
-+ this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true));
|
|
-+ this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, true));
|
|
-+ }
|
|
-+ }
|
|
-+ }
|
|
-+
|
|
-+ @Override
|
|
-+ protected void initAttributes(World world) {
|
|
-+ if (world != null) {
|
|
-+ getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.giantMaxHealth);
|
|
-+ getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.giantMovementSpeed);
|
|
-+ getAttributeMap().getAttribute(GenericAttributes.ATTACK_DAMAGE).setValue(world.purpurConfig.giantAttackDamage);
|
|
-+ }
|
|
-+ }
|
|
-+
|
|
-+ @Override
|
|
-+ public GroupDataEntity prepare(WorldAccess worldaccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @javax.annotation.Nullable GroupDataEntity groupdataentity, @javax.annotation.Nullable NBTTagCompound nbttagcompound) {
|
|
-+ GroupDataEntity groupData = super.prepare(worldaccess, difficultydamagescaler, enummobspawn, groupdataentity, nbttagcompound);
|
|
-+ if (groupData == null) {
|
|
-+ setEquipmentBasedOnDifficulty(difficultydamagescaler);
|
|
-+ setEnchantmentBasedOnDifficulty(difficultydamagescaler);
|
|
-+ }
|
|
-+ return groupData;
|
|
-+ }
|
|
-+
|
|
-+ @Override
|
|
-+ protected void setEquipmentBasedOnDifficulty(DifficultyDamageScaler difficulty) {
|
|
-+ super.setEquipmentBasedOnDifficulty(difficulty);
|
|
-+ // TODO make configurable
|
|
-+ if (random.nextFloat() < (world.getDifficulty() == EnumDifficulty.HARD ? 0.1F : 0.05F)) {
|
|
-+ setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.IRON_SWORD));
|
|
-+ }
|
|
-+ }
|
|
-+
|
|
-+ @Override
|
|
-+ public float getJumpHeight() {
|
|
-+ // make giants jump as high as everything else relative to their size
|
|
-+ // 1.0 makes bottom of feet about as high as their waist when they jump
|
|
-+ return world.purpurConfig.giantJumpHeight;
|
|
-+ }
|
|
-+ // Purpur end
|
|
-+
|
|
- @Override
|
|
- protected float b(EntityPose entitypose, EntitySize entitysize) {
|
|
- return 10.440001F;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java
|
|
index cf64c8ca2c5348782bf65a13f210564856b69311..5e3094198ce5b720a17db704ab295b1cd5a99ce9 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityHoglin.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityHoglin.java
|
|
@@ -13,7 +13,7 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin {
|
|
public int conversionTicks = 0;
|
|
public boolean cannotBeHunted = false;
|
|
protected static final ImmutableList<? extends SensorType<? extends Sensor<? super EntityHoglin>>> bo = ImmutableList.of(SensorType.c, SensorType.d, SensorType.n, SensorType.m);
|
|
- protected static final ImmutableList<? extends MemoryModuleType<?>> bp = ImmutableList.of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED});
|
|
+ protected static final ImmutableList<MemoryModuleType<?>> bp = ImmutableList.of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED}); // Yatopia - decompile fix
|
|
|
|
public EntityHoglin(EntityTypes<? extends EntityHoglin> entitytypes, World world) {
|
|
super(entitytypes, world);
|
|
@@ -77,14 +77,14 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin {
|
|
|
|
@Override
|
|
public BehaviorController<EntityHoglin> getBehaviorController() {
|
|
- return super.getBehaviorController();
|
|
+ return (BehaviorController<EntityHoglin>) super.getBehaviorController(); // Yatopia - decompile fix
|
|
}
|
|
|
|
@Override
|
|
protected void mobTick() {
|
|
- this.world.getMethodProfiler().enter("hoglinBrain");
|
|
- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this);
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().enter("hoglinBrain"); // Akarin - remove caller
|
|
+ this.getBehaviorController().a((WorldServer) this.world, this); // Yatopia - decompile fix
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
HoglinAI.a(this);
|
|
if (this.isConverting()) {
|
|
++this.conversionTicks;
|
|
@@ -259,7 +259,7 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin {
|
|
|
|
@Override
|
|
protected SoundEffect getSoundAmbient() {
|
|
- return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse((Object) null);
|
|
+ return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse(null); // Yatopia - decompile fix
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java.rej b/src/main/java/net/minecraft/server/EntityHoglin.java.rej
|
|
deleted file mode 100644
|
|
index be7a4b07540f6cc29c9ed76668bc1eaf9850013c..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityHoglin.java.rej
|
|
+++ /dev/null
|
|
@@ -1,13 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java (rejected hunks)
|
|
-@@ -83,9 +83,9 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin {
|
|
-
|
|
- @Override
|
|
- protected void mobTick() {
|
|
-- this.world.getMethodProfiler().enter("hoglinBrain");
|
|
-+ //this.world.getMethodProfiler().enter("hoglinBrain"); // Akarin - remove caller
|
|
- this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- HoglinAI.a(this);
|
|
- if (this.eO()) {
|
|
- ++this.bz;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
|
index 66bfebe1c2a803bfed439f4d09f7ffa37fce78a8..1904d493c356f521bbae41ea1fe3a38ad252e744 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
|
@@ -19,17 +19,6 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
|
|
|
|
}
|
|
|
|
- // Purpur start
|
|
- @Override
|
|
- protected void initAttributes(World world) {
|
|
- if (world != null) {
|
|
- getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.illusionerMovementSpeed);
|
|
- getAttributeMap().getAttribute(GenericAttributes.FOLLOW_RANGE).setValue(world.purpurConfig.illusionerFollowRange);
|
|
- getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.illusionerMaxHealth);
|
|
- }
|
|
- }
|
|
- // Purpur end
|
|
-
|
|
@Override
|
|
protected void initPathfinder() {
|
|
super.initPathfinder();
|
|
@@ -54,6 +43,11 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
|
|
@Override
|
|
public GroupDataEntity prepare(WorldAccess worldaccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
|
|
this.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.BOW));
|
|
+ // Purpur start
|
|
+ getAttributeMap().getAttribute(GenericAttributes.MOVEMENT_SPEED).setValue(world.purpurConfig.illusionerMovementSpeed);
|
|
+ getAttributeMap().getAttribute(GenericAttributes.FOLLOW_RANGE).setValue(world.purpurConfig.illusionerFollowRange);
|
|
+ getAttributeMap().getAttribute(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.illusionerMaxHealth);
|
|
+ // Purpur end
|
|
return super.prepare(worldaccess, difficultydamagescaler, enummobspawn, groupdataentity, nbttagcompound);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
index 96c18ddf92fe5784e901dd2f25a059177a89ee35..b66125bcccb9cadc7aaa41627fc560785907e465 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
@@ -242,13 +242,13 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
@Override
|
|
public void entityBaseTick() {
|
|
super.entityBaseTick();
|
|
- this.world.getMethodProfiler().enter("mobBaseTick");
|
|
+ //this.world.getMethodProfiler().enter("mobBaseTick"); // Akarin - remove caller
|
|
if (this.isAlive() && this.random.nextInt(1000) < this.e++) {
|
|
this.m();
|
|
this.F();
|
|
}
|
|
incrementTicksSinceLastInteraction(); // Purpur
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
// Purpur start
|
|
@@ -779,30 +779,30 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
return;
|
|
}
|
|
// Paper end
|
|
- this.world.getMethodProfiler().enter("sensing");
|
|
+ //this.world.getMethodProfiler().enter("sensing"); // Akarin - remove caller
|
|
this.bo.a();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("targetSelector");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("targetSelector"); // Akarin - remove caller
|
|
this.targetSelector.doTick();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("goalSelector");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("goalSelector"); // Akarin - remove caller
|
|
this.goalSelector.doTick();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("navigation");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("navigation"); // Akarin - remove caller
|
|
this.navigation.c();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("mob tick");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("mob tick"); // Akarin - remove caller
|
|
this.mobTick();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("controls");
|
|
- this.world.getMethodProfiler().enter("move");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("controls"); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("move"); // Akarin - remove caller
|
|
this.moveController.a();
|
|
- this.world.getMethodProfiler().exitEnter("look");
|
|
+ //this.world.getMethodProfiler().exitEnter("look"); // Akarin - remove caller
|
|
this.lookController.a();
|
|
- this.world.getMethodProfiler().exitEnter("jump");
|
|
+ //this.world.getMethodProfiler().exitEnter("jump"); // Akarin - remove caller
|
|
this.bi.b();
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
this.M();
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java.rej b/src/main/java/net/minecraft/server/EntityInsentient.java.rej
|
|
deleted file mode 100644
|
|
index bccb7cd89241ca30549f5442a4ef9847cfdb67a9..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java.rej
|
|
+++ /dev/null
|
|
@@ -1,64 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java (rejected hunks)
|
|
-@@ -241,13 +241,13 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
- @Override
|
|
- public void entityBaseTick() {
|
|
- super.entityBaseTick();
|
|
-- this.world.getMethodProfiler().enter("mobBaseTick");
|
|
-+ //this.world.getMethodProfiler().enter("mobBaseTick"); // Akarin - remove caller
|
|
- if (this.isAlive() && this.random.nextInt(1000) < this.e++) {
|
|
- this.eJ();
|
|
- this.F();
|
|
- }
|
|
-
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- }
|
|
-
|
|
- @Override
|
|
-@@ -747,30 +747,30 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
- return;
|
|
- }
|
|
- // Paper end
|
|
-- this.world.getMethodProfiler().enter("sensing");
|
|
-+ //this.world.getMethodProfiler().enter("sensing"); // Akarin - remove caller
|
|
- this.bv.a();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("targetSelector");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("targetSelector"); // Akarin - remove caller
|
|
- this.targetSelector.doTick();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("goalSelector");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("goalSelector"); // Akarin - remove caller
|
|
- this.goalSelector.doTick();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("navigation");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("navigation"); // Akarin - remove caller
|
|
- this.navigation.c();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("mob tick");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("mob tick"); // Akarin - remove caller
|
|
- this.mobTick();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("controls");
|
|
-- this.world.getMethodProfiler().enter("move");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("controls"); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("move"); // Akarin - remove caller
|
|
- this.moveController.a();
|
|
-- this.world.getMethodProfiler().exitEnter("look");
|
|
-+ //this.world.getMethodProfiler().exitEnter("look"); // Akarin - remove caller
|
|
- this.lookController.a();
|
|
-- this.world.getMethodProfiler().exitEnter("jump");
|
|
-+ //this.world.getMethodProfiler().exitEnter("jump"); // Akarin - remove caller
|
|
- this.bp.b();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- this.M();
|
|
- }
|
|
-
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index dc9621174b88c871c3579f04fee6bc1cfd1a3eff..fd3406f3b4457968d1a7cf8c9e9c79ef0c058538 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -366,7 +366,7 @@ public abstract class EntityLiving extends Entity {
|
|
this.aD = this.aC;
|
|
this.lastYaw = this.yaw;
|
|
this.lastPitch = this.pitch;
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
public boolean cM() {
|
|
@@ -2514,10 +2514,10 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
|
|
this.aK += (f3 - this.aK) * 0.3F;
|
|
- this.world.getMethodProfiler().enter("headTurn");
|
|
+ //this.world.getMethodProfiler().enter("headTurn"); // Akarin - remove caller
|
|
f2 = this.f(f1, f2);
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("rangeChecks");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("rangeChecks"); // Akarin - remove caller
|
|
|
|
while (this.yaw - this.lastYaw < -180.0F) {
|
|
this.lastYaw -= 360.0F;
|
|
@@ -2551,7 +2551,7 @@ public abstract class EntityLiving extends Entity {
|
|
this.aD += 360.0F;
|
|
}
|
|
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
this.aL += f2;
|
|
if (this.isGliding()) {
|
|
++this.be;
|
|
@@ -2752,19 +2752,19 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
|
|
this.setMot(d4, d5, d6);
|
|
- this.world.getMethodProfiler().enter("ai");
|
|
+ //this.world.getMethodProfiler().enter("ai"); // Akarin - remove caller
|
|
if (this.isFrozen()) {
|
|
this.jumping = false;
|
|
this.aR = 0.0F;
|
|
this.aT = 0.0F;
|
|
} else if (this.doAITick()) {
|
|
- this.world.getMethodProfiler().enter("newAi");
|
|
+ //this.world.getMethodProfiler().enter("newAi"); // Akarin - remove caller
|
|
this.doTick();
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("jump");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("jump"); // Akarin - remove caller
|
|
if (this.jumping && this.cS()) {
|
|
double d7;
|
|
|
|
@@ -2791,8 +2791,8 @@ public abstract class EntityLiving extends Entity {
|
|
this.jumpTicks = 0;
|
|
}
|
|
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("travel");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("travel"); // Akarin - remove caller
|
|
this.aR *= 0.98F;
|
|
this.aT *= 0.98F;
|
|
this.r();
|
|
@@ -2801,15 +2801,15 @@ public abstract class EntityLiving extends Entity {
|
|
// SpigotTimings.timerEntityAIMove.startTiming(); // Spigot // Paper
|
|
this.g(new Vec3D((double) this.aR, (double) this.aS, (double) this.aT));
|
|
// SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot // Paper
|
|
- this.world.getMethodProfiler().exit();
|
|
- this.world.getMethodProfiler().enter("push");
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //this.world.getMethodProfiler().enter("push"); // Akarin - remove caller
|
|
if (this.bf > 0) {
|
|
--this.bf;
|
|
this.a(axisalignedbb, this.getBoundingBox());
|
|
}
|
|
|
|
this.collideNearby();
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
if (!this.world.isClientSide && this.dN() && this.aF()) {
|
|
this.damageEntity(DamageSource.DROWN, 1.0F);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java.rej b/src/main/java/net/minecraft/server/EntityLiving.java.rej
|
|
deleted file mode 100644
|
|
index 947d12a17358d209be65c828e9dd297c54af91ac..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java.rej
|
|
+++ /dev/null
|
|
@@ -1,87 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java (rejected hunks)
|
|
-@@ -365,7 +365,7 @@ public abstract class EntityLiving extends Entity {
|
|
- this.aK = this.aJ;
|
|
- this.lastYaw = this.yaw;
|
|
- this.lastPitch = this.pitch;
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- }
|
|
-
|
|
- public boolean cM() {
|
|
-@@ -2497,10 +2497,10 @@ public abstract class EntityLiving extends Entity {
|
|
- }
|
|
-
|
|
- this.aR += (f3 - this.aR) * 0.3F;
|
|
-- this.world.getMethodProfiler().enter("headTurn");
|
|
-+ //this.world.getMethodProfiler().enter("headTurn"); // Akarin - remove caller
|
|
- f2 = this.f(f1, f2);
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("rangeChecks");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("rangeChecks"); // Akarin - remove caller
|
|
-
|
|
- while (this.yaw - this.lastYaw < -180.0F) {
|
|
- this.lastYaw -= 360.0F;
|
|
-@@ -2534,7 +2534,7 @@ public abstract class EntityLiving extends Entity {
|
|
- this.aK += 360.0F;
|
|
- }
|
|
-
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- this.aS += f2;
|
|
- if (this.isGliding()) {
|
|
- ++this.bl;
|
|
-@@ -2733,19 +2733,19 @@ public abstract class EntityLiving extends Entity {
|
|
- }
|
|
-
|
|
- this.setMot(d4, d5, d6);
|
|
-- this.world.getMethodProfiler().enter("ai");
|
|
-+ //this.world.getMethodProfiler().enter("ai"); // Akarin - remove caller
|
|
- if (this.isFrozen()) {
|
|
- this.jumping = false;
|
|
- this.aY = 0.0F;
|
|
- this.ba = 0.0F;
|
|
- } else if (this.doAITick()) {
|
|
-- this.world.getMethodProfiler().enter("newAi");
|
|
-+ //this.world.getMethodProfiler().enter("newAi"); // Akarin - remove caller
|
|
- this.doTick();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- }
|
|
-
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("jump");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("jump"); // Akarin - remove caller
|
|
- if (this.jumping && this.cS()) {
|
|
- double d7;
|
|
-
|
|
-@@ -2772,23 +2772,23 @@ public abstract class EntityLiving extends Entity {
|
|
- this.jumpTicks = 0;
|
|
- }
|
|
-
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("travel");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("travel"); // Akarin - remove caller
|
|
- this.aY *= 0.98F;
|
|
- this.ba *= 0.98F;
|
|
- this.t();
|
|
- AxisAlignedBB axisalignedbb = this.getBoundingBox();
|
|
-
|
|
- this.f(new Vec3D((double) this.aY, (double) this.aZ, (double) this.ba));
|
|
-- this.world.getMethodProfiler().exit();
|
|
-- this.world.getMethodProfiler().enter("push");
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
-+ //this.world.getMethodProfiler().enter("push"); // Akarin - remove caller
|
|
- if (this.bm > 0) {
|
|
- --this.bm;
|
|
- this.a(axisalignedbb, this.getBoundingBox());
|
|
- }
|
|
-
|
|
- this.collideNearby();
|
|
-- this.world.getMethodProfiler().exit();
|
|
-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- if (!this.world.isClientSide && this.dN() && this.aC()) {
|
|
- this.damageEntity(DamageSource.DROWN, 1.0F);
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
|
|
index b3616185d285849c51ce1c0d2ac61e61e0fa8d97..d62f15d7bfa9bd1f7ff4f41cbd26150623729692 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
|
|
@@ -240,7 +240,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
|
@Override
|
|
public boolean a() { // shouldExecute
|
|
double range = maxTargetRange();
|
|
- List<EntityEnderCrystal> crystals = world.getEntitiesInAABB(EntityEnderCrystal.class, phantom.getBoundingBox().grow(range));
|
|
+ List<EntityEnderCrystal> crystals = world.getEntities(EntityEnderCrystal.class, phantom.getBoundingBox().grow(range), null); // Yatopia
|
|
if (crystals.isEmpty()) {
|
|
return false;
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
|
|
index b1d96013e38f4ef1af0c1e398795be53fd9d81e5..ad42bc283e5b64cce893b65a101b8220aef9c5c2 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
|
|
@@ -103,15 +103,11 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable {
|
|
double d0 = this.b(GenericAttributes.FOLLOW_RANGE);
|
|
AxisAlignedBB axisalignedbb = AxisAlignedBB.a(this.getPositionVector()).grow(d0, 10.0D, d0);
|
|
|
|
- this.world.b(EntityPigZombie.class, axisalignedbb).stream().filter((entitypigzombie) -> {
|
|
- return entitypigzombie != this;
|
|
- }).filter((entitypigzombie) -> {
|
|
- return entitypigzombie.getGoalTarget() == null;
|
|
- }).filter((entitypigzombie) -> {
|
|
- return !entitypigzombie.r(this.getGoalTarget());
|
|
- }).forEach((entitypigzombie) -> {
|
|
- entitypigzombie.setGoalTarget(this.getGoalTarget(), org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); // CraftBukkit
|
|
- });
|
|
+ for (EntityPigZombie pigZombie : this.world.b(EntityPigZombie.class, axisalignedbb)) {
|
|
+ if (pigZombie != this && pigZombie.getGoalTarget() == null && !pigZombie.r(this.getGoalTarget())) {
|
|
+ pigZombie.setGoalTarget(this.getGoalTarget(), EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true);
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
private void fa() {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java.rej b/src/main/java/net/minecraft/server/EntityPigZombie.java.rej
|
|
deleted file mode 100644
|
|
index 39ea87798a00d40a1512c337b74d10c41330cc99..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java.rej
|
|
+++ /dev/null
|
|
@@ -1,27 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java (rejected hunks)
|
|
-@@ -101,15 +103,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable {
|
|
- double d0 = this.b(GenericAttributes.FOLLOW_RANGE);
|
|
- AxisAlignedBB axisalignedbb = AxisAlignedBB.a(this.getPositionVector()).grow(d0, 10.0D, d0);
|
|
-
|
|
-- this.world.b(EntityPigZombie.class, axisalignedbb).stream().filter((entitypigzombie) -> {
|
|
-- return entitypigzombie != this;
|
|
-- }).filter((entitypigzombie) -> {
|
|
-- return entitypigzombie.getGoalTarget() == null;
|
|
-- }).filter((entitypigzombie) -> {
|
|
-- return !entitypigzombie.r(this.getGoalTarget());
|
|
-- }).forEach((entitypigzombie) -> {
|
|
-- entitypigzombie.setGoalTarget(this.getGoalTarget(), org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); // CraftBukkit
|
|
-- });
|
|
-+ // CraftBukkit
|
|
-+ for (EntityPigZombie entitypigzombie : this.world.b(EntityPigZombie.class, axisalignedbb)) {
|
|
-+ if (entitypigzombie != this) {
|
|
-+ if (entitypigzombie.getGoalTarget() == null) {
|
|
-+ if (!entitypigzombie.r(this.getGoalTarget())) {
|
|
-+ entitypigzombie.setGoalTarget(this.getGoalTarget(), EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true);
|
|
-+ }
|
|
-+ }
|
|
-+ }
|
|
-+ }
|
|
- }
|
|
-
|
|
- private void fb() {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java
|
|
index e1b4330074cf3c3de31dbfcd9e1b99feb7baf669..2581c6da77c3fcec5a18f5fcacf30a36bf6b5ee6 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPiglin.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPiglin.java
|
|
@@ -143,7 +143,7 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow {
|
|
|
|
@Override
|
|
public BehaviorController<EntityPiglin> getBehaviorController() {
|
|
- return super.getBehaviorController();
|
|
+ return (BehaviorController<EntityPiglin>) super.getBehaviorController(); // Yatopia - decompile fix
|
|
}
|
|
|
|
@Override
|
|
@@ -201,9 +201,9 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow {
|
|
|
|
@Override
|
|
protected void mobTick() {
|
|
- this.world.getMethodProfiler().enter("piglinBrain");
|
|
- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this);
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().enter("piglinBrain"); // Akarin - remove caller
|
|
+ this.getBehaviorController().a((WorldServer) this.world, this); // Yatopia - decompile fix
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
PiglinAI.b(this);
|
|
super.mobTick();
|
|
}
|
|
@@ -341,7 +341,7 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow {
|
|
|
|
@Override
|
|
protected SoundEffect getSoundAmbient() {
|
|
- return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse((Object) null);
|
|
+ return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse(null); // Yatopia - decompile fix
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java.rej b/src/main/java/net/minecraft/server/EntityPiglin.java.rej
|
|
deleted file mode 100644
|
|
index d1016d22fbb2dd15042fd6ccdf2ee7848351e518..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityPiglin.java.rej
|
|
+++ /dev/null
|
|
@@ -1,23 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java (rejected hunks)
|
|
-@@ -63,7 +63,9 @@ public class EntityPiglin extends EntityMonster implements ICrossbow {
|
|
- @Override
|
|
- protected void dropDeathLoot(DamageSource damagesource, int i, boolean flag) {
|
|
- super.dropDeathLoot(damagesource, i, flag);
|
|
-- this.bB.f().forEach(this::a);
|
|
-+ for (ItemStack itemStack : this.bB.f()) {
|
|
-+ a(itemStack);
|
|
-+ }
|
|
- }
|
|
-
|
|
- protected ItemStack k(ItemStack itemstack) {
|
|
-@@ -259,7 +261,9 @@ public class EntityPiglin extends EntityMonster implements ICrossbow {
|
|
-
|
|
- private void b(WorldServer worldserver) {
|
|
- PiglinAI.c(this);
|
|
-- this.bB.f().forEach(this::a);
|
|
-+ for (ItemStack itemStack : this.bB.f()) {
|
|
-+ a(itemStack);
|
|
-+ }
|
|
- EntityPigZombie entitypigzombie = (EntityPigZombie) this.b(EntityTypes.ZOMBIFIED_PIGLIN);
|
|
-
|
|
- entitypigzombie.addEffect(new MobEffect(MobEffects.CONFUSION, 200, 0));
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
index 5e0285023676c0e99880f126a456cd84713fb065..0e84f43a5001fbad8acd5677a1f1e26968766bde 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
@@ -765,11 +765,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
private void eV() {
|
|
AxisAlignedBB axisalignedbb = (new AxisAlignedBB(this.getChunkCoordinates())).grow(32.0D, 10.0D, 32.0D);
|
|
|
|
- this.world.b(EntityInsentient.class, axisalignedbb).stream().filter((entityinsentient) -> {
|
|
- return entityinsentient instanceof IEntityAngerable;
|
|
- }).forEach((entityinsentient) -> {
|
|
- ((IEntityAngerable) entityinsentient).b(this);
|
|
- });
|
|
+ for (EntityInsentient entityinsentient : this.world.b(EntityInsentient.class, axisalignedbb)) {
|
|
+ if (entityinsentient instanceof IEntityAngerable) {
|
|
+ ((IEntityAngerable) entityinsentient).b(this);
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
@Override
|
|
@@ -920,7 +920,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
ShapeDetectorShape shapedetectorshape = this.a(worldserver);
|
|
|
|
if (shapedetectorshape != null) {
|
|
- worldserver1.getMethodProfiler().enter("moving");
|
|
+ //worldserver1.getMethodProfiler().enter("moving"); // Akarin - remove caller
|
|
worldserver = shapedetectorshape.world; // CraftBukkit
|
|
if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event
|
|
if (resourcekey == DimensionManager.OVERWORLD && worldserver.getTypeKey() == DimensionManager.THE_NETHER) { // CraftBukkit
|
|
@@ -943,8 +943,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
worldserver = ((CraftWorld) exit.getWorld()).getHandle();
|
|
// CraftBukkit end
|
|
|
|
- worldserver1.getMethodProfiler().exit();
|
|
- worldserver1.getMethodProfiler().enter("placing");
|
|
+ //worldserver1.getMethodProfiler().exit(); // Akarin - remove caller
|
|
+ //worldserver1.getMethodProfiler().enter("placing"); // Akarin - remove caller
|
|
if (true) { // CraftBukkit
|
|
this.worldChangeInvuln = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds
|
|
|
|
@@ -961,7 +961,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
worldserver.addPlayerPortal(this);
|
|
this.playerConnection.teleport(exit); // CraftBukkit - use internal teleport without event
|
|
this.playerConnection.syncPosition(); // CraftBukkit - sync position after changing it (from PortalTravelAgent#findAndteleport)
|
|
- worldserver1.getMethodProfiler().exit();
|
|
+ //worldserver1.getMethodProfiler().exit(); // Akarin - remove caller
|
|
this.triggerDimensionAdvancements(worldserver1);
|
|
this.playerInteractManager.a(worldserver);
|
|
this.playerConnection.sendPacket(new PacketPlayOutAbilities(this.abilities));
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java.rej b/src/main/java/net/minecraft/server/EntityPlayer.java.rej
|
|
deleted file mode 100644
|
|
index f9b99b3e7e041b2b9d538de1afe0de30560a569e..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,18 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java (rejected hunks)
|
|
-@@ -756,11 +756,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
- private void eW() {
|
|
- AxisAlignedBB axisalignedbb = (new AxisAlignedBB(this.getChunkCoordinates())).grow(32.0D, 10.0D, 32.0D);
|
|
-
|
|
-- this.world.b(EntityInsentient.class, axisalignedbb).stream().filter((entityinsentient) -> {
|
|
-- return entityinsentient instanceof IEntityAngerable;
|
|
-- }).forEach((entityinsentient) -> {
|
|
-- ((IEntityAngerable) entityinsentient).b((EntityHuman) this);
|
|
-- });
|
|
-+ for (EntityInsentient entityinsentient : this.world.b(EntityInsentient.class, axisalignedbb)) {
|
|
-+ if (entityinsentient instanceof IEntityAngerable) {
|
|
-+ ((IEntityAngerable) entityinsentient).b(this);
|
|
-+ }
|
|
-+ }
|
|
- }
|
|
-
|
|
- @Override
|
|
diff --git a/src/main/java/net/minecraft/server/EntitySheep.java.rej b/src/main/java/net/minecraft/server/EntitySheep.java.rej
|
|
deleted file mode 100644
|
|
index 1137eb4819b638cd04d630ec1692b67ec40c740f..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntitySheep.java.rej
|
|
+++ /dev/null
|
|
@@ -1,23 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java (rejected hunks)
|
|
-@@ -35,9 +33,18 @@ public class EntitySheep extends EntityAnimal implements IShearable {
|
|
- enummap.put(EnumColor.RED, Blocks.RED_WOOL);
|
|
- enummap.put(EnumColor.BLACK, Blocks.BLACK_WOOL);
|
|
- });
|
|
-- private static final Map<EnumColor, float[]> bx = Maps.newEnumMap((Map) Arrays.stream(EnumColor.values()).collect(Collectors.toMap((enumcolor) -> {
|
|
-- return enumcolor;
|
|
-- }, EntitySheep::c)));
|
|
-+ private static final Map<EnumColor, float[]> bx;
|
|
-+
|
|
-+ static {
|
|
-+ Map<EnumColor, float[]> map = new HashMap<>();
|
|
-+ for (EnumColor enumcolor : EnumColor.values()) {
|
|
-+ if (map.put(enumcolor, c(enumcolor)) != null) {
|
|
-+ throw new IllegalStateException("Duplicate key");
|
|
-+ }
|
|
-+ }
|
|
-+ bx = Maps.newEnumMap((Map) map);
|
|
-+ }
|
|
-+
|
|
- private int by;
|
|
- private PathfinderGoalEatTile bz;
|
|
-
|
|
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
|
|
index c245f66dea9f751423311034b3216385f142c1cc..1104196cf6dc448dada2e190e5e9e27c9f18d2dc 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityVillager.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
|
|
@@ -175,13 +175,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
|
@Override
|
|
protected void mobTick() { mobTick(false); }
|
|
protected void mobTick(boolean inactive) {
|
|
- this.world.getMethodProfiler().enter("villagerBrain");
|
|
+ //this.world.getMethodProfiler().enter("villagerBrain"); // Akarin - remove caller
|
|
// Purpur start
|
|
boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0;
|
|
if (((WorldServer) world).getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick)
|
|
// Purpur end
|
|
if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper
|
|
- this.world.getMethodProfiler().exit();
|
|
+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller
|
|
if (this.bF) {
|
|
this.bF = false;
|
|
}
|
|
@@ -827,9 +827,12 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
|
private int fv() {
|
|
InventorySubcontainer inventorysubcontainer = this.getInventory();
|
|
|
|
- return EntityVillager.bp.entrySet().stream().mapToInt((entry) -> {
|
|
- return inventorysubcontainer.a((Item) entry.getKey()) * (Integer) entry.getValue();
|
|
- }).sum();
|
|
+ int sum = 0;
|
|
+ for (Map.Entry<Item, Integer> entry : EntityVillager.bp.entrySet()) {
|
|
+ int i1 = inventorysubcontainer.a(entry.getKey()) * entry.getValue();
|
|
+ sum += i1;
|
|
+ }
|
|
+ return sum;
|
|
}
|
|
|
|
public boolean canPlant() {
|
|
@@ -877,9 +880,14 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
|
if (this.a(i)) {
|
|
AxisAlignedBB axisalignedbb = this.getBoundingBox().grow(10.0D, 10.0D, 10.0D);
|
|
List<EntityVillager> list = worldserver.a(EntityVillager.class, axisalignedbb);
|
|
- List<EntityVillager> list1 = (List) list.stream().filter((entityvillager) -> {
|
|
- return entityvillager.a(i);
|
|
- }).limit(5L).collect(Collectors.toList());
|
|
+ List<EntityVillager> list1 = new ArrayList<>();
|
|
+ long limit = 5L;
|
|
+ for (EntityVillager villager : list) {
|
|
+ if (villager.a(i)) {
|
|
+ if (limit-- == 0) break;
|
|
+ list1.add(villager);
|
|
+ }
|
|
+ }
|
|
|
|
if (list1.size() >= j) {
|
|
EntityIronGolem entityirongolem = this.d(worldserver);
|
|
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java.rej b/src/main/java/net/minecraft/server/EntityVillager.java.rej
|
|
deleted file mode 100644
|
|
index a40eff6d66cb3518d1773856dfdf2da816c52470..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/EntityVillager.java.rej
|
|
+++ /dev/null
|
|
@@ -1,46 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java (rejected hunks)
|
|
-@@ -807,9 +803,12 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
|
- private int fu() {
|
|
- InventorySubcontainer inventorysubcontainer = this.getInventory();
|
|
-
|
|
-- return EntityVillager.bw.entrySet().stream().mapToInt((entry) -> {
|
|
-- return inventorysubcontainer.a((Item) entry.getKey()) * (Integer) entry.getValue();
|
|
-- }).sum();
|
|
-+ int sum = 0;
|
|
-+ for (Map.Entry<Item, Integer> entry : EntityVillager.bw.entrySet()) {
|
|
-+ int i1 = inventorysubcontainer.a(entry.getKey()) * entry.getValue();
|
|
-+ sum += i1;
|
|
-+ }
|
|
-+ return sum;
|
|
- }
|
|
-
|
|
- public boolean canPlant() {
|
|
-@@ -857,17 +856,23 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
|
- if (this.a(i)) {
|
|
- AxisAlignedBB axisalignedbb = this.getBoundingBox().grow(10.0D, 10.0D, 10.0D);
|
|
- List<EntityVillager> list = this.world.a(EntityVillager.class, axisalignedbb);
|
|
-- List<EntityVillager> list1 = (List) list.stream().filter((entityvillager) -> {
|
|
-- return entityvillager.a(i);
|
|
-- }).limit(5L).collect(Collectors.toList());
|
|
-+ List<EntityVillager> result = new ArrayList<>();
|
|
-+ long limit = 5L;
|
|
-+ for (EntityVillager entityVillager : list) {
|
|
-+ if (entityVillager.a(i)) {
|
|
-+ if (limit-- == 0) break;
|
|
-+ result.add(entityVillager);
|
|
-+ }
|
|
-+ }
|
|
-+ List<EntityVillager> list1 = (List) result;
|
|
-
|
|
- if (list1.size() >= j) {
|
|
- EntityIronGolem entityirongolem = this.fw();
|
|
-
|
|
- if (entityirongolem != null) {
|
|
-- list.forEach((entityvillager) -> {
|
|
-+ for (EntityVillager entityvillager : list) {
|
|
- entityvillager.b(i);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
- }
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
|
|
index 755931841fa5f9c9f4672a281623a8a3e9ecfe9c..3aee7b444ef16d4d30744efdee1f6b071ccaaecb 100644
|
|
--- a/src/main/java/net/minecraft/server/Explosion.java
|
|
+++ b/src/main/java/net/minecraft/server/Explosion.java
|
|
@@ -291,7 +291,7 @@ public class Explosion {
|
|
if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper
|
|
BlockPosition blockposition1 = blockposition.immutableCopy();
|
|
|
|
- this.world.getMethodProfiler().enter("explosion_blocks");
|
|
+ //this.world.getMethodProfiler().enter("explosion_blocks"); // Akarin - remove caller
|
|
if (block.a(this) && this.world instanceof WorldServer) {
|
|
TileEntity tileentity = block.isTileEntity() ? this.world.getTileEntity(blockposition) : null;
|
|
LootTableInfo.Builder loottableinfo_builder = (new LootTableInfo.Builder((WorldServer) this.world)).a(this.world.random).set(LootContextParameters.ORIGIN, Vec3D.a((BaseBlockPosition) blockposition)).set(LootContextParameters.TOOL, ItemStack.b).setOptional(LootContextParameters.BLOCK_ENTITY, tileentity).setOptional(LootContextParameters.THIS_ENTITY, this.source);
|
|
diff --git a/src/main/java/net/minecraft/server/Explosion.java.rej b/src/main/java/net/minecraft/server/Explosion.java.rej
|
|
deleted file mode 100644
|
|
index 98a910fa6bfc9542b1d1cb56b6621809acd6b279..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/Explosion.java.rej
|
|
+++ /dev/null
|
|
@@ -1,10 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java (rejected hunks)
|
|
-@@ -281,7 +281,7 @@ public class Explosion {
|
|
- if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper
|
|
- BlockPosition blockposition1 = blockposition.immutableCopy();
|
|
-
|
|
-- this.world.getMethodProfiler().enter("explosion_blocks");
|
|
-+ //this.world.getMethodProfiler().enter("explosion_blocks"); // Akarin - remove caller
|
|
- if (block.a(this) && this.world instanceof WorldServer) {
|
|
- TileEntity tileentity = block.isTileEntity() ? this.world.getTileEntity(blockposition) : null;
|
|
- LootTableInfo.Builder loottableinfo_builder = (new LootTableInfo.Builder((WorldServer) this.world)).a(this.world.random).set(LootContextParameters.POSITION, blockposition).set(LootContextParameters.TOOL, ItemStack.b).setOptional(LootContextParameters.BLOCK_ENTITY, tileentity).setOptional(LootContextParameters.THIS_ENTITY, this.source);
|
|
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
|
|
index 0bac6b0506dc35c5117f13db0e9c67b1a0d3154e..4a62043f9b2b9a3bf4ab9a18070a61124cb98348 100644
|
|
--- a/src/main/java/net/minecraft/server/IProjectile.java
|
|
+++ b/src/main/java/net/minecraft/server/IProjectile.java
|
|
@@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity {
|
|
private UUID shooter;
|
|
private int c;
|
|
private boolean d;
|
|
+ public int despawnCounter; // Purpur - moved from EntityArrow
|
|
|
|
IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) {
|
|
super(entitytypes, world);
|
|
@@ -79,7 +80,22 @@ public abstract class IProjectile extends Entity {
|
|
}
|
|
|
|
super.tick();
|
|
+
|
|
+ // Purpur start
|
|
+ if (!(this instanceof EntityArrow)) {
|
|
+ if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds
|
|
+ }
|
|
+ // Purpur end
|
|
+ }
|
|
+
|
|
+ // Purpur start - copied from EntityArrow
|
|
+ protected void tickDespawnCounter() {
|
|
+ ++this.despawnCounter;
|
|
+ if (this.despawnCounter >= world.spigotConfig.arrowDespawnRate) {
|
|
+ this.die();
|
|
+ }
|
|
}
|
|
+ // Purpur end
|
|
|
|
private boolean h() {
|
|
Entity entity = this.getShooter();
|
|
diff --git a/src/main/java/net/minecraft/server/IProjectile.java.rej b/src/main/java/net/minecraft/server/IProjectile.java.rej
|
|
deleted file mode 100644
|
|
index 33186fa6911f0396adfc5e650034daba5b950143..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/IProjectile.java.rej
|
|
+++ /dev/null
|
|
@@ -1,32 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java (rejected hunks)
|
|
-@@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity {
|
|
- private UUID shooter;
|
|
- private int c;
|
|
- private boolean d; public boolean leftOwner() { return d; } public void setLeftOwner(boolean leftOwner) { this.d = leftOwner; } // Purpur - OBFHELPER
|
|
-+ public int despawnCounter; // Purpur - moved from EntityArrow
|
|
-
|
|
- IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) {
|
|
- super(entitytypes, world);
|
|
-@@ -79,7 +80,22 @@ public abstract class IProjectile extends Entity {
|
|
- }
|
|
-
|
|
- super.tick();
|
|
-+
|
|
-+ // Purpur start
|
|
-+ if (!(this instanceof EntityArrow)) {
|
|
-+ if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds
|
|
-+ }
|
|
-+ // Purpur end
|
|
-+ }
|
|
-+
|
|
-+ // Purpur start - copied from EntityArrow
|
|
-+ protected void tickDespawnCounter() {
|
|
-+ ++this.despawnCounter;
|
|
-+ if (this.despawnCounter >= world.spigotConfig.arrowDespawnRate) {
|
|
-+ this.die();
|
|
-+ }
|
|
- }
|
|
-+ // Purpur end
|
|
-
|
|
- public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER
|
|
- private boolean h() {
|
|
diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej b/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej
|
|
deleted file mode 100644
|
|
index 74d10212e547adf96762155adb03c0158df00a16..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej
|
|
+++ /dev/null
|
|
@@ -1,18 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java (rejected hunks)
|
|
-@@ -288,10 +288,14 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
|
- int i = Math.min(queue.size(), 4);
|
|
- boolean ran = false;
|
|
- while (i-- > 0 && queue.poll(pre, post)) {
|
|
-- pre.forEach(Runnable::run);
|
|
-+ for (Runnable runnable1 : pre) {
|
|
-+ runnable1.run();
|
|
-+ }
|
|
- pre.clear();
|
|
- super.a(Integer.MAX_VALUE, true, true);
|
|
-- post.forEach(Runnable::run);
|
|
-+ for (Runnable runnable : post) {
|
|
-+ runnable.run();
|
|
-+ }
|
|
- post.clear();
|
|
- ran = true;
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 7a7ba8047d3c9cde4b7a0bf6e921a5f4795ef9cc..8005f7eb073270a46f38601705ca4e89899015b1 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -999,7 +999,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
this.a(this::canSleepForTick);
|
|
//this.methodProfiler.exitEnter("nextTickWait"); // Akarin - remove caller
|
|
this.X = true;
|
|
- this.W = Math.max(SystemUtils.getMonotonicMillis() + 50L, this.nextTick);
|
|
+ // Purpur start - tps catchup
|
|
+ if (net.pl3x.purpur.PurpurConfig.tpsCatchup) {
|
|
+ this.W = Math.max(SystemUtils.getMonotonicMillis() + 50L, this.nextTick);
|
|
+ } else {
|
|
+ this.W = this.nextTick = curTime / 1000000L + 50L;
|
|
+ }
|
|
+ // Purpur end - tps catchup
|
|
this.sleepForTick();
|
|
//this.methodProfiler.exit(); // Akarin - remove caller
|
|
//this.methodProfiler.b(); // Akarin - remove caller
|
|
@@ -1288,7 +1294,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
playerSaveInterval = autosavePeriod;
|
|
}
|
|
// Paper end
|
|
- this.methodProfiler.enter("save");
|
|
+ //this.methodProfiler.enter("save"); // Akarin - remove caller
|
|
if (playerSaveInterval > 0) { // Paper
|
|
this.playerList.savePlayers(playerSaveInterval); // Paper
|
|
}// Paper
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java.rej b/src/main/java/net/minecraft/server/MinecraftServer.java.rej
|
|
deleted file mode 100644
|
|
index 33ba20cb8dc21b5a0fbb05acc78e4bc6819d4b1a..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,16 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java (rejected hunks)
|
|
-@@ -1001,7 +1001,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
- this.a(this::canSleepForTick);
|
|
- this.methodProfiler.exitEnter("nextTickWait");
|
|
- this.X = true;
|
|
-- this.W = Math.max(SystemUtils.getMonotonicMillis() + 50L, this.nextTick);
|
|
-+ // Purpur start - tps catchup
|
|
-+ if (net.pl3x.purpur.PurpurConfig.tpsCatchup) {
|
|
-+ this.W = Math.max(SystemUtils.getMonotonicMillis() + 50L, this.nextTick);
|
|
-+ } else {
|
|
-+ this.W = this.nextTick = curTime / 1000000L + 50L;
|
|
-+ }
|
|
-+ // Purpur end - tps catchup
|
|
- this.sleepForTick();
|
|
- this.methodProfiler.exit();
|
|
- this.methodProfiler.b();
|
|
diff --git a/src/main/java/net/minecraft/server/PiglinAI.java b/src/main/java/net/minecraft/server/PiglinAI.java
|
|
index 0407fa1751d89a037da8cb01f5ceef9b9833dd18..65abc7fbddf78662c4eb2a918848f775a0cd2eb0 100644
|
|
--- a/src/main/java/net/minecraft/server/PiglinAI.java
|
|
+++ b/src/main/java/net/minecraft/server/PiglinAI.java
|
|
@@ -359,16 +359,17 @@ public class PiglinAI {
|
|
public static void a(EntityHuman entityhuman, boolean flag) {
|
|
List<EntityPiglinAbstract> list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D)); // CraftBukkit - decompile error
|
|
|
|
- list.stream().filter(PiglinAI::d).filter((entitypiglin) -> {
|
|
- return !flag || BehaviorUtil.c(entitypiglin, entityhuman);
|
|
- }).forEach((entitypiglin) -> {
|
|
- if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) {
|
|
- d((EntityPiglinAbstract) entitypiglin, (EntityLiving) entityhuman);
|
|
- } else {
|
|
- c((EntityPiglinAbstract) entitypiglin, (EntityLiving) entityhuman);
|
|
+ for (EntityPiglinAbstract entitypiglin : list) {
|
|
+ if (d(entitypiglin)) {
|
|
+ if (!flag || BehaviorUtil.c(entitypiglin, entityhuman)) {
|
|
+ if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) {
|
|
+ d(entitypiglin, entityhuman);
|
|
+ } else {
|
|
+ c(entitypiglin, entityhuman);
|
|
+ }
|
|
+ }
|
|
}
|
|
-
|
|
- });
|
|
+ }
|
|
}
|
|
|
|
public static EnumInteractionResult a(EntityPiglin entitypiglin, EntityHuman entityhuman, EnumHand enumhand) {
|
|
@@ -460,9 +461,13 @@ public class PiglinAI {
|
|
}
|
|
|
|
protected static boolean e(EntityPiglin entitypiglin) {
|
|
- return entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY) || m(entitypiglin).stream().anyMatch((entitypiglinabstract) -> {
|
|
- return entitypiglinabstract.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY);
|
|
- });
|
|
+ if (entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) return true;
|
|
+ for (EntityPiglinAbstract entitypiglin1 : m(entitypiglin)) {
|
|
+ if (entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) {
|
|
+ return true;
|
|
+ }
|
|
+ }
|
|
+ return false;
|
|
}
|
|
|
|
private static List<EntityPiglinAbstract> m(EntityPiglin entitypiglin) {
|
|
diff --git a/src/main/java/net/minecraft/server/PiglinAI.java.rej b/src/main/java/net/minecraft/server/PiglinAI.java.rej
|
|
deleted file mode 100644
|
|
index c15111ef7bbb8f71d1b5e5ce812f4526746a3651..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/PiglinAI.java.rej
|
|
+++ /dev/null
|
|
@@ -1,90 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/PiglinAI.java b/src/main/java/net/minecraft/server/PiglinAI.java (rejected hunks)
|
|
-@@ -358,16 +358,18 @@ public class PiglinAI {
|
|
- public static void a(EntityHuman entityhuman, boolean flag) {
|
|
- List<EntityPiglin> list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D));
|
|
-
|
|
-- list.stream().filter(PiglinAI::k).filter((entitypiglin) -> {
|
|
-- return !flag || BehaviorUtil.c(entitypiglin, entityhuman);
|
|
-- }).forEach((entitypiglin) -> {
|
|
-- if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) {
|
|
-- f(entitypiglin, entityhuman);
|
|
-- } else {
|
|
-- c(entitypiglin, (EntityLiving) entityhuman);
|
|
-- }
|
|
-+ for (EntityPiglin entitypiglin : list) {
|
|
-+ if (k(entitypiglin)) {
|
|
-+ if (!flag || BehaviorUtil.c(entitypiglin, entityhuman)) {
|
|
-+ if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) {
|
|
-+ f(entitypiglin, entityhuman);
|
|
-+ } else {
|
|
-+ c(entitypiglin, entityhuman);
|
|
-+ }
|
|
-
|
|
-- });
|
|
-+ }
|
|
-+ }
|
|
-+ }
|
|
- }
|
|
-
|
|
- public static EnumInteractionResult a(EntityPiglin entitypiglin, EntityHuman entityhuman, EnumHand enumhand) {
|
|
-@@ -459,9 +461,13 @@ public class PiglinAI {
|
|
- }
|
|
-
|
|
- protected static boolean e(EntityPiglin entitypiglin) {
|
|
-- return entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY) || q(entitypiglin).stream().anyMatch((entitypiglin1) -> {
|
|
-- return entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY);
|
|
-- });
|
|
-+ if (entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) return true;
|
|
-+ for (EntityPiglin entitypiglin1 : q(entitypiglin)) {
|
|
-+ if (entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) {
|
|
-+ return true;
|
|
-+ }
|
|
-+ }
|
|
-+ return false;
|
|
- }
|
|
-
|
|
- private static List<EntityPiglin> q(EntityPiglin entitypiglin) {
|
|
-@@ -501,23 +507,25 @@ public class PiglinAI {
|
|
- }
|
|
-
|
|
- protected static void b(EntityPiglin entitypiglin, EntityLiving entityliving) {
|
|
-- r(entitypiglin).forEach((entitypiglin1) -> {
|
|
-+ for (EntityPiglin entitypiglin1 : r(entitypiglin)) {
|
|
- if (entityliving.getEntityType() != EntityTypes.HOGLIN || entitypiglin1.eN() && ((EntityHoglin) entityliving).eP()) {
|
|
- g(entitypiglin1, entityliving);
|
|
- }
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- protected static void f(EntityPiglin entitypiglin) {
|
|
-- r(entitypiglin).forEach((entitypiglin1) -> {
|
|
-+ for (EntityPiglin entitypiglin1 : r(entitypiglin)) {
|
|
- i(entitypiglin1).ifPresent((entityhuman) -> {
|
|
-- c(entitypiglin1, (EntityLiving) entityhuman);
|
|
-+ c(entitypiglin1, entityhuman);
|
|
- });
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- protected static void g(EntityPiglin entitypiglin) {
|
|
-- q(entitypiglin).forEach(PiglinAI::j);
|
|
-+ for (EntityPiglin entityPiglin : q(entitypiglin)) {
|
|
-+ j(entityPiglin);
|
|
-+ }
|
|
- }
|
|
-
|
|
- protected static void c(EntityPiglin entitypiglin, EntityLiving entityliving) {
|
|
-@@ -568,9 +576,9 @@ public class PiglinAI {
|
|
- }
|
|
-
|
|
- private static void h(EntityPiglin entitypiglin, EntityLiving entityliving) {
|
|
-- q(entitypiglin).forEach((entitypiglin1) -> {
|
|
-+ for (EntityPiglin entitypiglin1 : q(entitypiglin)) {
|
|
- i(entitypiglin1, entityliving);
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- private static void i(EntityPiglin entitypiglin, EntityLiving entityliving) {
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java.rej b/src/main/java/net/minecraft/server/PlayerChunk.java.rej
|
|
deleted file mode 100644
|
|
index fce02f5fcef5179e63997c0b06277601c911ecb7..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunk.java.rej
|
|
+++ /dev/null
|
|
@@ -1,22 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java (rejected hunks)
|
|
-@@ -2,6 +2,7 @@ package net.minecraft.server;
|
|
-
|
|
- import com.mojang.datafixers.util.Either;
|
|
- import java.util.List;
|
|
-+import java.util.Map;
|
|
- import java.util.Optional;
|
|
- import java.util.concurrent.CompletableFuture;
|
|
- import java.util.concurrent.atomic.AtomicReferenceArray;
|
|
-@@ -745,7 +746,11 @@ public class PlayerChunk {
|
|
- if (getCurrentPriority() != priority) {
|
|
- this.v.a(this.location, this::getCurrentPriority, priority, this::setPriority); // use preferred priority
|
|
- int neighborsPriority = getNeighborsPriority();
|
|
-- this.neighbors.forEach((neighbor, neighborDesired) -> neighbor.setNeighborPriority(this, neighborsPriority));
|
|
-+ for (Map.Entry<PlayerChunk, ChunkStatus> entry : this.neighbors.entrySet()) {
|
|
-+ PlayerChunk neighbor = entry.getKey();
|
|
-+ ChunkStatus neighborDesired = entry.getValue();
|
|
-+ neighbor.setNeighborPriority(this, neighborsPriority);
|
|
-+ }
|
|
- }
|
|
- // Paper end
|
|
- this.oldTicketLevel = this.ticketLevel;
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej b/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej
|
|
deleted file mode 100644
|
|
index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej
|
|
+++ /dev/null
|
|
@@ -1,84 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java (rejected hunks)
|
|
-@@ -480,53 +471,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
- double playerChunkZ = MathHelper.floor(player.locZ()) >> 4;
|
|
- pos.setValues(player.locX(), 0, player.locZ());
|
|
- double twoThirdModifier = 2D / 3D;
|
|
-- MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance)).forEach(coord -> {
|
|
-- if (shouldSkipPrioritization(coord)) return;
|
|
-+ for (ChunkCoordIntPair coordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance))) {
|
|
-+ if (shouldSkipPrioritization(coordIntPair)) continue;
|
|
-
|
|
-- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z);
|
|
-+ double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coordIntPair.x, 0, coordIntPair.z);
|
|
- // Prioritize immediate
|
|
- if (dist <= 4 * 4) {
|
|
-- updateChunkPriorityMap(priorities, coord.pair(), (int) (27 - Math.sqrt(dist)));
|
|
-- return;
|
|
-+ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (27 - Math.sqrt(dist)));
|
|
-+ continue;
|
|
- }
|
|
-
|
|
- // Prioritize nearby chunks
|
|
-- updateChunkPriorityMap(priorities, coord.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier));
|
|
-- });
|
|
-+ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier));
|
|
-+ }
|
|
-
|
|
- // Prioritize Frustum near 3
|
|
- ChunkCoordIntPair front3 = player.getChunkInFront(3);
|
|
- pos.setValues(front3.x << 4, 0, front3.z << 4);
|
|
-- MCUtil.getSpiralOutChunks(pos, Math.min(5, viewDistance)).forEach(coord -> {
|
|
-- if (shouldSkipPrioritization(coord)) return;
|
|
-+ for (ChunkCoordIntPair chunkCoordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(5, viewDistance))) {
|
|
-+ if (shouldSkipPrioritization(chunkCoordIntPair)) continue;
|
|
-
|
|
-- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z);
|
|
-- updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier));
|
|
-- });
|
|
-+ double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, chunkCoordIntPair.x, 0, chunkCoordIntPair.z);
|
|
-+ updateChunkPriorityMap(priorities, chunkCoordIntPair.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier));
|
|
-+ }
|
|
-
|
|
- // Prioritize Frustum near 5
|
|
- if (viewDistance > 4) {
|
|
- ChunkCoordIntPair front5 = player.getChunkInFront(5);
|
|
- pos.setValues(front5.x << 4, 0, front5.z << 4);
|
|
-- MCUtil.getSpiralOutChunks(pos, 4).forEach(coord -> {
|
|
-- if (shouldSkipPrioritization(coord)) return;
|
|
-+ for (ChunkCoordIntPair coord : MCUtil.getSpiralOutChunks(pos, 4)) {
|
|
-+ if (shouldSkipPrioritization(coord)) continue;
|
|
-
|
|
- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z);
|
|
- updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier));
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- // Prioritize Frustum far 7
|
|
- if (viewDistance > 6) {
|
|
- ChunkCoordIntPair front7 = player.getChunkInFront(7);
|
|
- pos.setValues(front7.x << 4, 0, front7.z << 4);
|
|
-- MCUtil.getSpiralOutChunks(pos, 3).forEach(coord -> {
|
|
-+ for (ChunkCoordIntPair coord : MCUtil.getSpiralOutChunks(pos, 3)) {
|
|
- if (shouldSkipPrioritization(coord)) {
|
|
-- return;
|
|
-+ continue;
|
|
- }
|
|
- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z);
|
|
- updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier));
|
|
-- });
|
|
-+ }
|
|
- }
|
|
-
|
|
- pos.close();
|
|
-@@ -1122,7 +1131,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
- if (ioThrowable != null) {
|
|
- com.destroystokyo.paper.util.SneakyThrow.sneaky(ioThrowable);
|
|
- }
|
|
-- chunkHolder.tasks.forEach(Runnable::run);
|
|
-+ for (Runnable task : chunkHolder.tasks) {
|
|
-+ task.run();
|
|
-+ }
|
|
- // Paper end
|
|
-
|
|
- if (chunkHolder.protoChunk != null) {try (Timing ignored2 = this.world.timings.chunkLoadLevelTimer.startTimingIfSync()) { // Paper start - timings // Paper - chunk is created async
|
|
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
index 205f3f697e9c31674a4ac8db38467bb2e61cfe6b..6b2465bfe540af5d609160e6d232564b1d6c0617 100644
|
|
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
@@ -23,15 +23,17 @@ public class PortalTravelAgent {
|
|
// CraftBukkit end
|
|
|
|
villageplace.a(this.world, blockposition, i);
|
|
- Optional<VillagePlaceRecord> optional = villageplace.b((villageplacetype) -> {
|
|
- return villageplacetype == VillagePlaceType.v;
|
|
- }, blockposition, i, VillagePlace.Occupancy.ANY).sorted(Comparator.comparingDouble((VillagePlaceRecord villageplacerecord) -> { // CraftBukkit - decompile error
|
|
+ Comparator<VillagePlaceRecord> comparator = Comparator.comparingDouble((VillagePlaceRecord villageplacerecord) -> { // CraftBukkit - decompile error
|
|
return villageplacerecord.f().j(blockposition);
|
|
}).thenComparingInt((villageplacerecord) -> {
|
|
return villageplacerecord.f().getY();
|
|
- })).filter((villageplacerecord) -> {
|
|
- return this.world.getType(villageplacerecord.f()).b(BlockProperties.E);
|
|
- }).findFirst();
|
|
+ });
|
|
+ java.util.List<VillagePlaceRecord> list = villageplace.b(type -> type == VillagePlaceType.v, blockposition, i, VillagePlace.Occupancy.ANY).collect(java.util.stream.Collectors.toList());
|
|
+ Optional<VillagePlaceRecord> optional = Optional.empty();
|
|
+ if (!list.isEmpty()) {
|
|
+ list.sort(comparator);
|
|
+ optional = Optional.of(list.get(0));
|
|
+ }
|
|
|
|
return optional.map((villageplacerecord) -> {
|
|
BlockPosition blockposition1 = villageplacerecord.f();
|
|
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej b/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej
|
|
deleted file mode 100644
|
|
index e8002e718bce73e4cfedcab7636a85a773dfb099..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej
|
|
+++ /dev/null
|
|
@@ -1,24 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java (rejected hunks)
|
|
-@@ -57,11 +57,20 @@ public class PortalTravelAgent {
|
|
- List<VillagePlaceRecord> list = (List) villageplace.b((villageplacetype) -> {
|
|
- return villageplacetype == VillagePlaceType.v;
|
|
- }, blockposition, searchRadius, VillagePlace.Occupancy.ANY).collect(Collectors.toList()); // CraftBukkit - searchRadius
|
|
-- Optional<VillagePlaceRecord> optional = list.stream().min(Comparator.<VillagePlaceRecord>comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error
|
|
-+ boolean seen = false;
|
|
-+ VillagePlaceRecord best = null;
|
|
-+ Comparator<VillagePlaceRecord> comparator = Comparator.<VillagePlaceRecord>comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error
|
|
- return villageplacerecord.f().j(blockposition);
|
|
- }).thenComparingInt((villageplacerecord) -> {
|
|
- return villageplacerecord.f().getY();
|
|
-- }));
|
|
-+ });
|
|
-+ for (VillagePlaceRecord villagePlaceRecord : list) {
|
|
-+ if (!seen || comparator.compare(villagePlaceRecord, best) < 0) {
|
|
-+ seen = true;
|
|
-+ best = villagePlaceRecord;
|
|
-+ }
|
|
-+ }
|
|
-+ Optional<VillagePlaceRecord> optional = seen ? Optional.of(best) : Optional.empty();
|
|
-
|
|
- return (ShapeDetector.Shape) optional.map((villageplacerecord) -> {
|
|
- BlockPosition blockposition1 = villageplacerecord.f();
|
|
diff --git a/src/main/java/net/minecraft/server/RegistryMaterials.java.rej b/src/main/java/net/minecraft/server/RegistryMaterials.java.rej
|
|
deleted file mode 100644
|
|
index c29a9979eb97870b2b13c4b5fa68395aa40e8059..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/RegistryMaterials.java.rej
|
|
+++ /dev/null
|
|
@@ -1,29 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/RegistryMaterials.java b/src/main/java/net/minecraft/server/RegistryMaterials.java (rejected hunks)
|
|
-@@ -181,17 +181,22 @@ public class RegistryMaterials<T> extends IRegistryWritable<T> {
|
|
- return Codec.unboundedMap(MinecraftKey.a.xmap(ResourceKey.a(resourcekey), ResourceKey::a), mapcodec.codec()).xmap((map) -> {
|
|
- RegistryMaterials<T> registrymaterials = new RegistryMaterials<>(resourcekey, lifecycle);
|
|
-
|
|
-- map.forEach((resourcekey1, object) -> {
|
|
-+ for (Entry<ResourceKey<T>, T> entry : map.entrySet()) {
|
|
-+ ResourceKey<T> resourcekey1 = entry.getKey();
|
|
-+ T object = entry.getValue();
|
|
- registrymaterials.a(registrymaterials.bd, resourcekey1, object);
|
|
- registrymaterials.d(resourcekey1);
|
|
-- });
|
|
-+ }
|
|
- return registrymaterials;
|
|
- }, (registrymaterials) -> {
|
|
- com.google.common.collect.ImmutableMap.Builder<ResourceKey<T>, T> com_google_common_collect_immutablemap_builder = ImmutableMap.builder();
|
|
-
|
|
-- registrymaterials.bb.entrySet().stream().filter((entry) -> {
|
|
-- return registrymaterials.c((ResourceKey) entry.getKey());
|
|
-- }).forEach(entry1 -> com_google_common_collect_immutablemap_builder.put((java.util.Map.Entry<? extends net.minecraft.server.ResourceKey<T>,? extends T>) entry1)); // Paper - compiler fix (expand method reference + add cast)
|
|
-+ // Paper - compiler fix (expand method reference + add cast)
|
|
-+ for (Entry<ResourceKey<T>, T> entry : registrymaterials.bb.entrySet()) {
|
|
-+ if (registrymaterials.c(entry.getKey())) {
|
|
-+ com_google_common_collect_immutablemap_builder.put(entry);
|
|
-+ }
|
|
-+ }
|
|
- return com_google_common_collect_immutablemap_builder.build();
|
|
- });
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
index c3bd58069d8dbdf36f70f1dafd7c24000f31708b..f915cb4e1110e39178527903ae93508f9459d7ca 100644
|
|
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
+++ b/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
@@ -143,6 +143,11 @@ public abstract class StructureGenerator<C extends WorldGenFeatureConfiguration>
|
|
int j2 = i1 + k * l1;
|
|
ChunkCoordIntPair chunkcoordintpair = this.a(structuresettingsfeature, j, seededrandom, i2, j2);
|
|
if (!iworldreader.getWorldBorder().isChunkInBounds(chunkcoordintpair.x, chunkcoordintpair.z)) { continue; } // Paper
|
|
+ // Origami start - seed based feature search doesn't load
|
|
+ if (iworldreader instanceof World && ((World) iworldreader).origamiConfig.fastFeatureSearchDontLoad) {
|
|
+ return chunkcoordintpair.l();
|
|
+ }
|
|
+ // Origami end
|
|
IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS);
|
|
StructureStart<?> structurestart = structuremanager.a(SectionPosition.a(ichunkaccess.getPos(), 0), this, ichunkaccess);
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java.rej b/src/main/java/net/minecraft/server/StructureGenerator.java.rej
|
|
deleted file mode 100644
|
|
index 2ae4a20ca763c60c9661661d2ae558bd5b6f79a1..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/StructureGenerator.java.rej
|
|
+++ /dev/null
|
|
@@ -1,13 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java (rejected hunks)
|
|
-@@ -143,6 +143,11 @@ public abstract class StructureGenerator<C extends WorldGenFeatureConfiguration>
|
|
- int j2 = i1 + k * l1;
|
|
- ChunkCoordIntPair chunkcoordintpair = this.a(structuresettingsfeature, j, seededrandom, i2, j2);
|
|
- if (!iworldreader.getWorldBorder().isChunkInBounds(chunkcoordintpair.x, chunkcoordintpair.z)) { continue; } // Paper
|
|
-+ // Origami start - seed based feature search doesn't load
|
|
-+ if (iworldreader instanceof World && ((World) iworldreader).origamiConfig.fastFeatureSearchDontLoad) {
|
|
-+ return chunkcoordintpair.l();
|
|
-+ }
|
|
-+ // Origami end
|
|
- // Origami start - option to only find generated features to not generate new chunks
|
|
- IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS, !(iworldreader instanceof World) || !((World) iworldreader).origamiConfig.onlyFindGeneratedFeatures);
|
|
- if (ichunkaccess == null) {
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
index c310444d6d952eab69250c43b30348dce6393f90..1042923536120e59ecbc015293744da2b7909018 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
@@ -514,6 +514,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
|
|
entityitem = (EntityItem) iterator.next();
|
|
} while (!a((IInventory) ihopper, entityitem));
|
|
|
|
+ if (ihopper instanceof TileEntityHopper) ((TileEntityHopper) ihopper).shouldTick = true; // Origami - don't tick empty hoppers
|
|
return true;
|
|
}
|
|
return false; // EMC
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java.rej b/src/main/java/net/minecraft/server/TileEntityHopper.java.rej
|
|
deleted file mode 100644
|
|
index cc8866ec1ccbc131e8491c50eda4f85590bb667b..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java.rej
|
|
+++ /dev/null
|
|
@@ -1,9 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java (rejected hunks)
|
|
-@@ -466,6 +497,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
|
|
- entityitem = (EntityItem) iterator.next();
|
|
- } while (!a((IInventory) ihopper, entityitem));
|
|
-
|
|
-+ if (ihopper instanceof TileEntityHopper) ((TileEntityHopper) ihopper).shouldTick = true; // Origami - don't tick empty hoppers
|
|
- return true;
|
|
- }
|
|
- }
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java.rej b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java.rej
|
|
deleted file mode 100644
|
|
index bada470cba41cce9beb9eb04227b42c1d489d731..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java.rej
|
|
+++ /dev/null
|
|
@@ -1,22 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java (rejected hunks)
|
|
-@@ -10,7 +11,19 @@ import org.bukkit.entity.HumanEntity;
|
|
-
|
|
- public class TileEntityShulkerBox extends TileEntityLootable implements IWorldInventory, ITickable {
|
|
-
|
|
-- private static final int[] a = IntStream.range(0, 27).toArray();
|
|
-+ private static final int[] a;
|
|
-+
|
|
-+ static {
|
|
-+ int[] arr = new int[10];
|
|
-+ int count = 0;
|
|
-+ for (int i1 = 0; i1 < 27; i1++) {
|
|
-+ if (arr.length == count) arr = Arrays.copyOf(arr, count * 2);
|
|
-+ arr[count++] = i1;
|
|
-+ }
|
|
-+ arr = Arrays.copyOfRange(arr, 0, count);
|
|
-+ a = arr;
|
|
-+ }
|
|
-+
|
|
- private NonNullList<ItemStack> contents;
|
|
- private int c;
|
|
- private TileEntityShulkerBox.AnimationPhase i;
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index c95bc3bcf8d9545cb87f1b2130cfd393c2ed77b4..3c852d008737415337ef778d988d81ad633b201d 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
|
|
public final com.tuinity.tuinity.config.TuinityConfig.WorldConfig tuinityConfig; // Tuinity - Server Config
|
|
public final net.pl3x.purpur.PurpurWorldConfig purpurConfig; // Purpur
|
|
+ public final de.minebench.origami.OrigamiConfig.WorldConfig origamiConfig; // Origami - World config
|
|
+ public final RainforestWorldConfig rainforestConfig; // Rainforest
|
|
|
|
public final co.aikar.timings.WorldTimingsHandler timings; // Paper
|
|
public static BlockPosition lastPhysicsProblem; // Spigot
|
|
@@ -130,6 +132,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig((((WorldDataServer)worlddatamutable).getName()), this.spigotConfig); // Paper
|
|
this.tuinityConfig = new com.tuinity.tuinity.config.TuinityConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Tuinity - Server Config
|
|
this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((((WorldDataServer)worlddatamutable).getName())); // Purpur
|
|
+ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Origami
|
|
+ this.rainforestConfig = new RainforestWorldConfig(((WorldDataServer)worlddatamutable).getName(), paperConfig); // Rainforest
|
|
this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray
|
|
this.generator = gen;
|
|
this.world = new CraftWorld((WorldServer) this, gen, env);
|
|
@@ -422,9 +426,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
IBlockData iblockdata2 = this.getType(blockposition);
|
|
|
|
if ((i & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.b((IBlockAccess) this, blockposition) != iblockdata1.b((IBlockAccess) this, blockposition) || iblockdata2.f() != iblockdata1.f() || iblockdata2.e() || iblockdata1.e())) {
|
|
- this.getMethodProfiler().enter("queueCheckLight");
|
|
+ //this.getMethodProfiler().enter("queueCheckLight"); // Akarin - remove caller
|
|
this.getChunkProvider().getLightEngine().a(blockposition);
|
|
- this.getMethodProfiler().exit();
|
|
+ //this.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
|
|
/*
|
|
diff --git a/src/main/java/net/minecraft/server/World.java.rej b/src/main/java/net/minecraft/server/World.java.rej
|
|
deleted file mode 100644
|
|
index 055f1e52a39a9a4c8406adc6f313f4ef67ee3d39..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/World.java.rej
|
|
+++ /dev/null
|
|
@@ -1,18 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java (rejected hunks)
|
|
-@@ -94,6 +95,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
- public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper
|
|
- public final ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
|
|
-
|
|
-+ public final RainforestWorldConfig rainforestConfig; // Rainforest
|
|
-+
|
|
- public final co.aikar.timings.WorldTimingsHandler timings; // Paper
|
|
- public static BlockPosition lastPhysicsProblem; // Spigot
|
|
- private org.spigotmc.TickLimiter entityLimiter;
|
|
-@@ -125,6 +128,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
|
- this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((WorldDataServer) worlddatamutable).getName()); // Spigot
|
|
- this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig((((WorldDataServer)worlddatamutable).getName()), this.spigotConfig); // Paper
|
|
- this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray
|
|
-+ this.rainforestConfig = new RainforestWorldConfig((((WorldDataServer)worlddatamutable).getName()), this.paperConfig); // Rainforest
|
|
- this.generator = gen;
|
|
- this.world = new CraftWorld((WorldServer) this, gen, env);
|
|
- this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
|
|
diff --git a/src/main/java/net/minecraft/server/WorldDataServer.java b/src/main/java/net/minecraft/server/WorldDataServer.java
|
|
index a7e623044aece1f46e2d039cd2dcf710120ac267..dbcee8f22389e8a1ce58539cd8839bcc4fc3c720 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldDataServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldDataServer.java
|
|
@@ -122,7 +122,10 @@ public class WorldDataServer implements IWorldDataServer, SaveData {
|
|
private void a(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) {
|
|
NBTTagList nbttaglist = new NBTTagList();
|
|
|
|
- this.C.stream().map(NBTTagString::a).forEach(nbttaglist::add);
|
|
+ for (String s : C) {
|
|
+ NBTTagString a = NBTTagString.a(s);
|
|
+ nbttaglist.add(a);
|
|
+ }
|
|
nbttagcompound.set("ServerBrands", nbttaglist);
|
|
nbttagcompound.setBoolean("WasModded", this.D);
|
|
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
|
|
diff --git a/src/main/java/net/minecraft/server/WorldDataServer.java.rej b/src/main/java/net/minecraft/server/WorldDataServer.java.rej
|
|
deleted file mode 100644
|
|
index ce6a0e3807550ef3652d4e1ab8695f7afe9fc8f8..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/WorldDataServer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,13 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/WorldDataServer.java b/src/main/java/net/minecraft/server/WorldDataServer.java (rejected hunks)
|
|
-@@ -120,7 +120,10 @@ public class WorldDataServer implements IWorldDataServer, SaveData {
|
|
- private void a(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) {
|
|
- NBTTagList nbttaglist = new NBTTagList();
|
|
-
|
|
-- this.B.stream().map(NBTTagString::a).forEach(nbttaglist::add);
|
|
-+ for (String s : this.B) {
|
|
-+ NBTTagString a = NBTTagString.a(s);
|
|
-+ nbttaglist.add(a);
|
|
-+ }
|
|
- nbttagcompound.set("ServerBrands", nbttaglist);
|
|
- nbttagcompound.setBoolean("WasModded", this.C);
|
|
- NBTTagCompound nbttagcompound2 = new NBTTagCompound();
|
|
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
|
index d627a25830646d8808950238f451fa0adbab4ec6..a959672f5857b987001252c3fd7ace9e83e07c9b 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
|
@@ -61,7 +61,7 @@ public class WorldNBTStorage {
|
|
}
|
|
// Spigot End
|
|
|
|
- if (file.exists() && file.isFile()) {
|
|
+ if (normalFile) { // Akarin - avoid double I/O operation
|
|
nbttagcompound = NBTCompressedStreamTools.a(file);
|
|
}
|
|
// Spigot Start
|
|
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej b/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej
|
|
deleted file mode 100644
|
|
index 3a35169eaf680c45fe42922eb5f0014fa422c31c..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej
|
|
+++ /dev/null
|
|
@@ -1,10 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java (rejected hunks)
|
|
-@@ -62,7 +63,7 @@ public class WorldNBTStorage {
|
|
- }
|
|
- // Spigot End
|
|
-
|
|
-- if (file.exists() && file.isFile()) {
|
|
-+ if (normalFile) { // Akarin - avoid double I/O operation
|
|
- nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file)));
|
|
- }
|
|
- // Spigot Start
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 302932f69213b9c0b60c8ace3efa27f1d1f900ed..6aaa3e6b7e0919b85fbfbb0b70a647a18aeebfd7 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -869,11 +869,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
|
|
this.P();
|
|
this.b();
|
|
- gameprofilerfiller.exitEnter("chunkSource");
|
|
+ //gameprofilerfiller.exitEnter("chunkSource"); // Akarin - remove caller
|
|
this.timings.chunkProviderTick.startTiming(); // Paper - timings
|
|
this.getChunkProvider().tick(booleansupplier);
|
|
this.timings.chunkProviderTick.stopTiming(); // Paper - timings
|
|
- gameprofilerfiller.exitEnter("tickPending");
|
|
+ //gameprofilerfiller.exitEnter("tickPending"); // Akarin - remove caller
|
|
timings.scheduledBlocks.startTiming(); // Paper
|
|
if (!this.isDebugWorld()) {
|
|
this.nextTickListBlock.b();
|
|
@@ -882,17 +882,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
timings.scheduledBlocks.stopTiming(); // Paper
|
|
|
|
// Tuinity - replace logic
|
|
- gameprofilerfiller.exitEnter("raid");
|
|
+ //gameprofilerfiller.exitEnter("raid"); // Akarin - remove caller
|
|
this.timings.raids.startTiming(); // Paper - timings
|
|
this.persistentRaid.a();
|
|
this.timings.raids.stopTiming(); // Paper - timings
|
|
- gameprofilerfiller.exitEnter("blockEvents");
|
|
+ //gameprofilerfiller.exitEnter("blockEvents"); // Akarin - remove caller
|
|
timings.doSounds.startTiming(); // Spigot
|
|
this.aj();
|
|
timings.doSounds.stopTiming(); // Spigot
|
|
// Tuinity - replace logic
|
|
this.ticking = false;
|
|
- gameprofilerfiller.exitEnter("entities");
|
|
+ //gameprofilerfiller.exitEnter("entities"); // Akarin - remove caller
|
|
boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
|
|
|
|
if (flag3) {
|
|
@@ -924,7 +924,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
}
|
|
// CraftBukkit end */
|
|
|
|
- gameprofilerfiller.enter("checkDespawn");
|
|
+ //gameprofilerfiller.enter("checkDespawn"); // Akarin - remove caller
|
|
if (!entity.dead) {
|
|
entity.checkDespawn();
|
|
// Tuinity start - optimise notify()
|
|
@@ -936,7 +936,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
// Tuinity end - optimise notify()
|
|
}
|
|
|
|
- gameprofilerfiller.exit();
|
|
+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
if (entity1 != null) {
|
|
if (!entity1.dead && entity1.w(entity)) {
|
|
continue;
|
|
@@ -945,13 +945,13 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
entity.stopRiding();
|
|
}
|
|
|
|
- gameprofilerfiller.enter("tick");
|
|
+ //gameprofilerfiller.enter("tick"); // Akarin - remove caller
|
|
if (!entity.dead && !(entity instanceof EntityComplexPart)) {
|
|
this.a(this::entityJoinedWorld, entity);
|
|
}
|
|
|
|
- gameprofilerfiller.exit();
|
|
- gameprofilerfiller.enter("remove");
|
|
+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
+ //gameprofilerfiller.enter("remove"); // Akarin - remove caller
|
|
if (entity.dead) {
|
|
this.removeEntityFromChunk(entity);
|
|
this.entitiesById.remove(entity.getId()); // Tuinity
|
|
@@ -963,7 +963,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
}
|
|
// Tuinity end - optimise notify()
|
|
|
|
- gameprofilerfiller.exit();
|
|
+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
}
|
|
timings.entityTick.stopTiming(); // Spigot
|
|
|
|
@@ -1050,7 +1050,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
int k = chunkcoordintpair.e();
|
|
GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();
|
|
|
|
- gameprofilerfiller.enter("thunder");
|
|
+ //gameprofilerfiller.enter("thunder"); // Akarin - remove caller
|
|
final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
|
|
|
|
if (!this.paperConfig.disableThunder && flag && this.V() && this.random.nextInt(100000) == 0) { // Paper - Disable thunder
|
|
@@ -1401,7 +1401,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
// Tuinity end
|
|
}
|
|
|
|
- this.getMethodProfiler().exit();
|
|
+ //this.getMethodProfiler().exit(); // Akarin - remove caller
|
|
}
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java.rej b/src/main/java/net/minecraft/server/WorldServer.java.rej
|
|
deleted file mode 100644
|
|
index 6b024f18ebc32034d1d81ef98f7117944bc0cd0a..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java.rej
|
|
+++ /dev/null
|
|
@@ -1,94 +0,0 @@
|
|
-diff a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java (rejected hunks)
|
|
-@@ -887,11 +887,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
-
|
|
- this.N();
|
|
- this.b();
|
|
-- gameprofilerfiller.exitEnter("chunkSource");
|
|
-+ //gameprofilerfiller.exitEnter("chunkSource"); // Akarin - remove caller
|
|
- this.timings.chunkProviderTick.startTiming(); // Paper - timings
|
|
- this.getChunkProvider().tick(booleansupplier);
|
|
- this.timings.chunkProviderTick.stopTiming(); // Paper - timings
|
|
-- gameprofilerfiller.exitEnter("tickPending");
|
|
-+ //gameprofilerfiller.exitEnter("tickPending"); // Akarin - remove caller
|
|
- timings.scheduledBlocks.startTiming(); // Paper
|
|
- if (!this.isDebugWorld()) {
|
|
- this.nextTickListBlock.b();
|
|
-@@ -900,17 +900,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
- timings.scheduledBlocks.stopTiming(); // Paper
|
|
-
|
|
- // Tuinity - replace logic
|
|
-- gameprofilerfiller.exitEnter("raid");
|
|
-+ //gameprofilerfiller.exitEnter("raid"); // Akarin - remove caller
|
|
- this.timings.raids.startTiming(); // Paper - timings
|
|
- this.persistentRaid.a();
|
|
- this.timings.raids.stopTiming(); // Paper - timings
|
|
-- gameprofilerfiller.exitEnter("blockEvents");
|
|
-+ //gameprofilerfiller.exitEnter("blockEvents"); // Akarin - remove caller
|
|
- timings.doSounds.startTiming(); // Spigot
|
|
- this.ah();
|
|
- timings.doSounds.stopTiming(); // Spigot
|
|
- // Tuinity - replace logic
|
|
- this.ticking = false;
|
|
-- gameprofilerfiller.exitEnter("entities");
|
|
-+ //gameprofilerfiller.exitEnter("entities"); // Akarin - remove caller
|
|
- boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
|
|
-
|
|
- if (flag3) {
|
|
-@@ -943,12 +943,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
- }
|
|
- // CraftBukkit end */
|
|
-
|
|
-- gameprofilerfiller.enter("checkDespawn");
|
|
-+ //gameprofilerfiller.enter("checkDespawn"); // Akarin - remove caller
|
|
- if (!entity.dead) {
|
|
- entity.checkDespawn();
|
|
- }
|
|
-
|
|
-- gameprofilerfiller.exit();
|
|
-+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
- if (entity1 != null) {
|
|
- if (!entity1.dead && entity1.w(entity)) {
|
|
- continue;
|
|
-@@ -957,20 +957,20 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
- entity.stopRiding();
|
|
- }
|
|
-
|
|
-- gameprofilerfiller.enter("tick");
|
|
-+ //gameprofilerfiller.enter("tick"); // Akarin - remove caller
|
|
- if (!entity.dead && !(entity instanceof EntityComplexPart)) {
|
|
- this.a(this::entityJoinedWorld, entity);
|
|
- }
|
|
-
|
|
-- gameprofilerfiller.exit();
|
|
-- gameprofilerfiller.enter("remove");
|
|
-+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
-+ //gameprofilerfiller.enter("remove"); // Akarin - remove caller
|
|
- if (entity.dead) {
|
|
- this.removeEntityFromChunk(entity);
|
|
- this.entitiesById.remove(entity.getId()); // Tuinity
|
|
- this.unregisterEntity(entity);
|
|
- }
|
|
-
|
|
-- gameprofilerfiller.exit();
|
|
-+ //gameprofilerfiller.exit(); // Akarin - remove caller
|
|
- }
|
|
- timings.entityTick.stopTiming(); // Spigot
|
|
-
|
|
-@@ -1049,7 +1049,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
- int k = chunkcoordintpair.e();
|
|
- GameProfilerFiller gameprofilerfiller = this.getMethodProfiler();
|
|
-
|
|
-- gameprofilerfiller.enter("thunder");
|
|
-+ //gameprofilerfiller.enter("thunder"); // Akarin - remove caller
|
|
- final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
|
|
-
|
|
- if (!this.paperConfig.disableThunder && flag && this.T() && this.random.nextInt(100000) == 0) { // Paper - Disable thunder
|
|
-@@ -1377,7 +1377,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
- }
|
|
- }
|
|
-
|
|
-- this.getMethodProfiler().exit();
|
|
-+ //this.getMethodProfiler().exit(); // Akarin - remove caller
|
|
- }
|
|
- }
|
|
-
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
index 4a7285bd8e9ba3b7ad94c67c1880cc216cea5bc9..b7000990cfbf8116e9c3e98ea8e84e6541a989c8 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -129,11 +129,6 @@ public class PurpurConfig {
|
|
return config.getString(path, config.getString(path));
|
|
}
|
|
|
|
- public static String timingsUrl = "https://timings.pl3x.net";
|
|
- private static void timingsSettings() {
|
|
- timingsUrl = getString("settings.timings.url", timingsUrl);
|
|
- }
|
|
-
|
|
public static double laggingThreshold = 19.0D;
|
|
private static void tickLoopSettings() {
|
|
laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold);
|
|
@@ -172,4 +167,9 @@ public class PurpurConfig {
|
|
private static void fixItemPositionDesync() {
|
|
fixItemPositionDesync = getBoolean("settings.fix-item-position-desync", fixItemPositionDesync);
|
|
}
|
|
+
|
|
+ public static boolean tpsCatchup = true;
|
|
+ private static void tpsCatchup() {
|
|
+ tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej b/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej
|
|
deleted file mode 100644
|
|
index ff05ff6aef1e0f61eb4437253020632745ee2bd2..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej
|
|
+++ /dev/null
|
|
@@ -1,11 +0,0 @@
|
|
-diff a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java (rejected hunks)
|
|
-@@ -194,4 +194,9 @@ public class PurpurConfig {
|
|
- loggerSuppressInitLegacyMaterialError = getBoolean("settings.logger.suppress-init-legacy-material-errors", loggerSuppressInitLegacyMaterialError);
|
|
- loggerSuppressIgnoredAdvancementWarnings = getBoolean("settings.logger.suppress-ignored-advancement-warnings", loggerSuppressIgnoredAdvancementWarnings);
|
|
- }
|
|
-+
|
|
-+ public static boolean tpsCatchup = true;
|
|
-+ private static void tpsCatchup() {
|
|
-+ tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup);
|
|
-+ }
|
|
- }
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index 361f7857e461578e90cb71e15027dadaf794cb69..ba6969a1ac8506d230e468cb39586d199978871a 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -1,7 +1,18 @@
|
|
package net.pl3x.purpur;
|
|
|
|
+import java.util.ArrayList;
|
|
+import java.util.HashSet;
|
|
import org.bukkit.configuration.ConfigurationSection;
|
|
import java.util.List;
|
|
+import java.util.Set;
|
|
+import java.util.logging.Level;
|
|
+import net.minecraft.server.Block;
|
|
+import net.minecraft.server.Explosion;
|
|
+import net.minecraft.server.IRegistry;
|
|
+import net.minecraft.server.Item;
|
|
+import net.minecraft.server.Items;
|
|
+import net.minecraft.server.MinecraftKey;
|
|
+
|
|
import static net.pl3x.purpur.PurpurConfig.log;
|
|
|
|
public class PurpurWorldConfig {
|
|
@@ -56,4 +67,189 @@ public class PurpurWorldConfig {
|
|
PurpurConfig.config.addDefault("world-settings.default." + path, def);
|
|
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
|
|
}
|
|
+
|
|
+ public int villagerBrainTicks = 1;
|
|
+ public boolean villagerUseBrainTicksOnlyWhenLagging = true;
|
|
+ public boolean villagerFollowEmeraldBlock = false;
|
|
+ public boolean villagerCanBeLeashed = false;
|
|
+ private void villagerSettings() {
|
|
+ villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
|
|
+ villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
|
|
+ villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
|
|
+ villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
|
|
+ }
|
|
+
|
|
+ public boolean villagerTraderFollowEmeraldBlock = false;
|
|
+ public boolean villagerTraderCanBeLeashed = false;
|
|
+ private void villagerTraderSettings() {
|
|
+ villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed);
|
|
+ villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock);
|
|
+ }
|
|
+
|
|
+ public boolean saveProjectilesToDisk = true;
|
|
+ public boolean milkCuresBadOmen = true;
|
|
+ private void miscGameplayMechanicsSettings() {
|
|
+ saveProjectilesToDisk = getBoolean("gameplay-mechanics.save-projectiles-to-disk", saveProjectilesToDisk);
|
|
+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
|
+ }
|
|
+
|
|
+ public boolean anvilAllowColors = false;
|
|
+ private void anvilSettings() {
|
|
+ anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors);
|
|
+ }
|
|
+
|
|
+ public boolean foxTypeChangesWithTulips = false;
|
|
+ private void foxSettings() {
|
|
+ foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
|
|
+ }
|
|
+
|
|
+ public float giantStepHeight = 2.0F;
|
|
+ public float giantJumpHeight = 1.0F;
|
|
+ public double giantMaxHealth = 100.0D;
|
|
+ public double giantMovementSpeed = 0.5D;
|
|
+ public double giantAttackDamage = 50.0D;
|
|
+ public boolean giantHaveAI = false;
|
|
+ public boolean giantHaveHostileAI = false;
|
|
+ private void giantSettings() {
|
|
+ giantStepHeight = (float) getDouble("mobs.giant.step-height", giantStepHeight);
|
|
+ giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight);
|
|
+ giantMaxHealth = getDouble("mobs.giant.max-health", giantMaxHealth);
|
|
+ giantMovementSpeed = getDouble("mobs.giant.movement-speed", giantMovementSpeed);
|
|
+ giantAttackDamage = getDouble("mobs.giant.attack-damage", giantAttackDamage);
|
|
+ giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI);
|
|
+ giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
|
|
+ }
|
|
+
|
|
+ public double illusionerMaxHealth = 32.0D;
|
|
+ public double illusionerMovementSpeed = 0.5D;
|
|
+ public double illusionerFollowRange = 18.0D;
|
|
+ private void illusionerSettings() {
|
|
+ illusionerMaxHealth = getDouble("mobs.illusioner.max-health", illusionerMaxHealth);
|
|
+ illusionerMovementSpeed = getDouble("mobs.illusioner.movement-speed", illusionerMovementSpeed);
|
|
+ illusionerFollowRange = getDouble("mobs.illusioner.follow-range", illusionerFollowRange);
|
|
+ }
|
|
+
|
|
+ public double zombieHorseSpawnChance = 0.0D;
|
|
+ private void zombieHorseSettings() {
|
|
+ zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
|
|
+ }
|
|
+
|
|
+ public double creeperChargedChance = 0.0D;
|
|
+ private void creeperSettings() {
|
|
+ creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
|
+ }
|
|
+
|
|
+ public double rabbitNaturalToast = 0.0D;
|
|
+ public double rabbitNaturalKiller = 0.0D;
|
|
+ private void rabbitSettings() {
|
|
+ rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
|
|
+ rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
|
|
+ }
|
|
+
|
|
+ public int cowFeedMushrooms = 0;
|
|
+ private void cowSettings() {
|
|
+ cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
|
|
+ }
|
|
+
|
|
+ public boolean snowGolemDropsPumpkin = false;
|
|
+ public boolean snowGolemPutPumpkinBack = false;
|
|
+ private void snowGolemSettings() {
|
|
+ snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
|
|
+ snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
|
|
+ }
|
|
+
|
|
+ public boolean farmlandGetsMoistFromBelow = false;
|
|
+ private void farmlandSettings() {
|
|
+ farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
|
+ }
|
|
+
|
|
+ public boolean respawnAnchorExplode = true;
|
|
+ public double respawnAnchorExplosionPower = 5.0D;
|
|
+ public boolean respawnAnchorExplosionFire = true;
|
|
+ public Explosion.Effect respawnAnchorExplosionEffect = Explosion.Effect.DESTROY;
|
|
+ private void respawnAnchorSettings() {
|
|
+ respawnAnchorExplode = getBoolean("blocks.respawn_anchor.explode", respawnAnchorExplode);
|
|
+ respawnAnchorExplosionPower = getDouble("blocks.respawn_anchor.explosion-power", respawnAnchorExplosionPower);
|
|
+ respawnAnchorExplosionFire = getBoolean("blocks.respawn_anchor.explosion-fire", respawnAnchorExplosionFire);
|
|
+ try {
|
|
+ respawnAnchorExplosionEffect = Explosion.Effect.valueOf(getString("blocks.respawn_anchor.explosion-effect", respawnAnchorExplosionEffect.name()));
|
|
+ } catch (IllegalArgumentException e) {
|
|
+ log(Level.SEVERE, "Unknown value for `blocks.respawn_anchor.explosion-effect`! Using default of `DESTROY`");
|
|
+ respawnAnchorExplosionEffect = Explosion.Effect.DESTROY;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public boolean bedExplode = true;
|
|
+ public double bedExplosionPower = 5.0D;
|
|
+ public boolean bedExplosionFire = true;
|
|
+ public Explosion.Effect bedExplosionEffect = Explosion.Effect.DESTROY;
|
|
+ private void bedSettings() {
|
|
+ bedExplode = getBoolean("blocks.bed.explode", bedExplode);
|
|
+ bedExplosionPower = getDouble("blocks.bed.explosion-power", bedExplosionPower);
|
|
+ bedExplosionFire = getBoolean("blocks.bed.explosion-fire", bedExplosionFire);
|
|
+ try {
|
|
+ bedExplosionEffect = Explosion.Effect.valueOf(getString("blocks.bed.explosion-effect", bedExplosionEffect.name()));
|
|
+ } catch (IllegalArgumentException e) {
|
|
+ log(Level.SEVERE, "Unknown value for `blocks.bed.explosion-effect`! Using default of `DESTROY`");
|
|
+ bedExplosionEffect = Explosion.Effect.DESTROY;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public int entityLifeSpan = 0;
|
|
+ private void entitySettings() {
|
|
+ entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan);
|
|
+ }
|
|
+
|
|
+ public boolean spawnerDeactivateByRedstone = false;
|
|
+ private void spawnerSettings() {
|
|
+ spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
|
|
+ }
|
|
+
|
|
+ public String polarBearBreedableItemString = "";
|
|
+ public Item polarBearBreedableItem = null;
|
|
+ private void polarBearSettings() {
|
|
+ polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
|
|
+ Item item = IRegistry.ITEM.get(new MinecraftKey(polarBearBreedableItemString));
|
|
+ if (item != Items.AIR) polarBearBreedableItem = item;
|
|
+ }
|
|
+
|
|
+ public double phantomAttackedByCrystalRadius = 0.0D;
|
|
+ public float phantomAttackedByCrystalDamage = 1.0F;
|
|
+ public double phantomOrbitCrystalRadius = 0.0D;
|
|
+ private void phantomSettings() {
|
|
+ phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);
|
|
+ phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
|
|
+ phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius);
|
|
+ }
|
|
+
|
|
+ public boolean squidImmuneToEAR = true;
|
|
+ public double squidOffsetWaterCheck = 0.0D;
|
|
+ private void squidSettings() {
|
|
+ squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
|
|
+ squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
|
|
+ }
|
|
+
|
|
+ public Set<Block> noTickBlocks = new HashSet<>();
|
|
+ private void noTickBlocks() {
|
|
+ getList("blocks.no-tick", new ArrayList<>()).forEach(key -> {
|
|
+ Block block = IRegistry.BLOCK.get(new MinecraftKey(key.toString()));
|
|
+ if (!block.getBlockData().isAir()) {
|
|
+ noTickBlocks.add(block);
|
|
+ }
|
|
+ });
|
|
+ }
|
|
+
|
|
+ public boolean dolphinDisableTreasureSearching = false;
|
|
+ private void dolphinSettings() {
|
|
+ dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
|
|
+ }
|
|
+
|
|
+ public boolean turtleEggsBreakFromExpOrbs = true;
|
|
+ public boolean turtleEggsBreakFromItems = true;
|
|
+ public boolean turtleEggsBreakFromMinecarts = true;
|
|
+ private void turtleEggSettings() {
|
|
+ turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs);
|
|
+ turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems);
|
|
+ turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej
|
|
deleted file mode 100644
|
|
index 12ee96c0bb54227dbfab7240d8b114577e0b78f3..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej
|
|
+++ /dev/null
|
|
@@ -1,12 +0,0 @@
|
|
-diff a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java (rejected hunks)
|
|
-@@ -483,8 +483,10 @@ public class PurpurWorldConfig {
|
|
- }
|
|
-
|
|
- public boolean squidImmuneToEAR = true;
|
|
-+ public double squidOffsetWaterCheck = 0.0D;
|
|
- private void squidSettings() {
|
|
- squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
|
|
-+ squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
|
|
- }
|
|
-
|
|
- public int villagerBrainTicks = 1;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index ad868f6f49e36bcb7d62d31bccb89404098a0cfc..510e82002ed6ada5c2f4b14e01021068806a98e8 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -842,6 +842,8 @@ public final class CraftServer implements Server {
|
|
com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper
|
|
com.tuinity.tuinity.config.TuinityConfig.init((File) console.options.valueOf("tuinity-settings")); // Tuinity - Server Config
|
|
net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur
|
|
+ com.proximyst.rainforest.RainforestConfig.init((File) console.options.valueOf("rainforest-settings")); // Rainforest
|
|
+ de.minebench.origami.OrigamiConfig.init((File) console.options.valueOf("origami-settings")); // Origami
|
|
for (WorldServer world : console.getWorlds()) {
|
|
world.worldDataServer.setDifficulty(config.difficulty);
|
|
world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals);
|
|
@@ -878,6 +880,8 @@ public final class CraftServer implements Server {
|
|
world.paperConfig.init(); // Paper
|
|
world.tuinityConfig.init(); // Tuinity - Server Config
|
|
world.purpurConfig.init(); // Purpur
|
|
+ world.rainforestConfig.init(); // Rainforest
|
|
+ world.origamiConfig.init(); // Origami
|
|
}
|
|
|
|
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
|
|
@@ -2254,6 +2258,19 @@ public final class CraftServer implements Server {
|
|
}
|
|
// Purpur end
|
|
|
|
+ // Rainforest start
|
|
+ @Override
|
|
+ public YamlConfiguration getRainforestConfig() {
|
|
+ return com.proximyst.rainforest.RainforestConfig.config;
|
|
+ }
|
|
+ // Rainforest end
|
|
+ // Origami start
|
|
+ @Override
|
|
+ public YamlConfiguration getOrigamiConfig() {
|
|
+ return de.minebench.origami.OrigamiConfig.config;
|
|
+ }
|
|
+ // Origami end
|
|
+
|
|
@Override
|
|
public void restart() {
|
|
org.spigotmc.RestartCommand.restart();
|
|
@@ -2393,4 +2410,11 @@ public final class CraftServer implements Server {
|
|
return mobGoals;
|
|
}
|
|
// Paper end
|
|
+
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean isLagging() {
|
|
+ return getServer().lagging;
|
|
+ }
|
|
+ // Purpur end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
index b2e2fcad2637e73cd69e14ac186c37c628da2761..132ad379242d9aa2defc639f79764050b73c572d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
@@ -154,6 +154,21 @@ public class Main {
|
|
.describedAs("Yml file");
|
|
// Purpur end
|
|
|
|
+ // Rainforest start
|
|
+ acceptsAll(asList("rainforest", "rainforest-settings"), "File for rainforest settings")
|
|
+ .withRequiredArg()
|
|
+ .ofType(File.class)
|
|
+ .defaultsTo(new File("rainforest.yml"))
|
|
+ .describedAs("Yml file");
|
|
+ // Rainforest end
|
|
+ // Origami start
|
|
+ acceptsAll(asList("origami", "origami-settings"), "File for origami settings")
|
|
+ .withRequiredArg()
|
|
+ .ofType(File.class)
|
|
+ .defaultsTo(new File("origami.yml"))
|
|
+ .describedAs("Yml file");
|
|
+ // Origami end
|
|
+
|
|
// Paper start
|
|
acceptsAll(asList("server-name"), "Name of the server")
|
|
.withRequiredArg()
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java.rej b/src/main/java/org/bukkit/craftbukkit/Main.java.rej
|
|
deleted file mode 100644
|
|
index 916603085d652444027e4513b77293ece84a6c4f..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java.rej
|
|
+++ /dev/null
|
|
@@ -1,16 +0,0 @@
|
|
-diff a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java (rejected hunks)
|
|
-@@ -139,6 +139,14 @@ public class Main {
|
|
- .describedAs("Yml file");
|
|
- // Paper end
|
|
-
|
|
-+ // Rainforest start
|
|
-+ acceptsAll(asList("rainforest", "rainforest-settings"), "File for rainforest settings")
|
|
-+ .withRequiredArg()
|
|
-+ .ofType(File.class)
|
|
-+ .defaultsTo(new File("rainforest.yml"))
|
|
-+ .describedAs("Yml file");
|
|
-+ // Rainforest end
|
|
-+
|
|
- // Paper start
|
|
- acceptsAll(asList("server-name"), "Name of the server")
|
|
- .withRequiredArg()
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
index de574ae92a8c055195c8919be4aec848489baa86..981327f6ff5f18bf5c0b56859370d867506f4417 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
@@ -682,8 +682,12 @@ public class CraftBlock implements Block {
|
|
|
|
// Modelled off EntityHuman#hasBlock
|
|
if (item == null || !iblockdata.isRequiresSpecialTool() || nms.canDestroySpecialBlock(iblockdata)) {
|
|
- return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)
|
|
- .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList());
|
|
+ List<ItemStack> list = new ArrayList<>();
|
|
+ for (net.minecraft.server.ItemStack itemStack : net.minecraft.server.Block.getDrops(iblockdata, world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)) {
|
|
+ ItemStack stack = CraftItemStack.asBukkitCopy(itemStack);
|
|
+ list.add(stack);
|
|
+ }
|
|
+ return list;
|
|
} else {
|
|
return Collections.emptyList();
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej
|
|
deleted file mode 100644
|
|
index a0c4f6c35175538d82f4019f306aeca122522e20..0000000000000000000000000000000000000000
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej
|
|
+++ /dev/null
|
|
@@ -1,16 +0,0 @@
|
|
-diff a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java (rejected hunks)
|
|
-@@ -675,8 +677,12 @@ public class CraftBlock implements Block {
|
|
-
|
|
- // Modelled off EntityHuman#hasBlock
|
|
- if (item == null || !iblockdata.isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) {
|
|
-- return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)
|
|
-- .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList());
|
|
-+ List<ItemStack> list = new ArrayList<>();
|
|
-+ for (net.minecraft.server.ItemStack itemStack : net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)) {
|
|
-+ ItemStack stack = CraftItemStack.asBukkitCopy(itemStack);
|
|
-+ list.add(stack);
|
|
-+ }
|
|
-+ return list;
|
|
- } else {
|
|
- return Collections.emptyList();
|
|
- }
|