Files
AkarinMC/patches/server/0019-Remove-Streams-using-IntelliJ-IDEA.patch
ㄗㄠˋ ㄑㄧˊ d7466e342f Updated Upstream (Tuinity)
Upstream has released updates that appears to apply and compile correctly
Tuinity Changes:
db8a861 Updated Upstream (Paper)
cb75b52 Updated Upstream (Paper)
98e9d5b Updated Upstream (Paper)
1aa9097 Updated Upstream (Paper)
126d3cc Fix abnormally high cpu usage caused by lighting
9a88f39 Fix skull NPE
eedc3fc Updated Upstream (Paper)
d0e617d Updated Upstream (Paper)
15c661b Updated Upstream (Paper)
2020-07-01 21:44:23 +08:00

2904 lines
146 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=84=97=E3=84=A0=CB=8B=20=E3=84=91=E3=84=A7=CB=8A?=
<tsao-chi@the-lingo.org>
Date: Fri, 19 Jun 2020 19:56:08 +0800
Subject: [PATCH] Remove Streams using IntelliJ IDEA
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
index 10b72083322b7f8e3e14525b3e834f5374ec369d..c48f05815f7b5166b522107d576eb70058444333 100644
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
@@ -51,8 +51,15 @@ public class PaperCommand extends Command {
case "entity":
if (args.length == 2)
return getListMatchingLast(args, "help", "list");
- if (args.length == 3)
- return getListMatchingLast(args, EntityTypes.getEntityNameList().stream().map(MinecraftKey::toString).sorted().toArray(String[]::new));
+ if (args.length == 3) {
+ List<String> list = new ArrayList<>();
+ for (MinecraftKey minecraftKey : EntityTypes.getEntityNameList()) {
+ String toString = minecraftKey.toString();
+ list.add(toString);
+ }
+ list.sort(null);
+ return getListMatchingLast(args, list.toArray(new String[0]));
+ }
break;
case "debug":
if (args.length == 2) {
@@ -377,9 +384,12 @@ public class PaperCommand extends Command {
filter = args[2];
}
final String cleanfilter = filter.replace("?", ".?").replace("*", ".*?");
- Set<MinecraftKey> names = EntityTypes.getEntityNameList().stream()
- .filter(n -> n.toString().matches(cleanfilter))
- .collect(Collectors.toSet());
+ Set<MinecraftKey> names = new HashSet<>();
+ for (MinecraftKey n : EntityTypes.getEntityNameList()) {
+ if (n.toString().matches(cleanfilter)) {
+ names.add(n);
+ }
+ }
if (names.isEmpty()) {
sender.sendMessage(ChatColor.RED + "Invalid filter, does not match any entities. Use /paper entity list for a proper list");
@@ -409,18 +419,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();
@@ -431,28 +441,46 @@ public class PaperCommand extends Command {
return;
}
sender.sendMessage("Entity: " + name + " Total Ticking: " + (info.getLeft() - nonTicking) + ", Total Non-Ticking: " + nonTicking);
- info.getRight().entrySet().stream()
- .sorted((a, b) -> !a.getValue().equals(b.getValue()) ? b.getValue() - a.getValue() : a.getKey().toString().compareTo(b.getKey().toString()))
- .limit(10).forEach(e -> sender.sendMessage(" " + e.getValue() + ": " + e.getKey().x + ", " + e.getKey().z + (chunkProviderServer.isEntityTickingChunk(e.getKey()) ? " (Ticking)" : " (Non-Ticking)")));
+ List<Map.Entry<ChunkCoordIntPair, Integer>> toSort = new ArrayList<>();
+ for (Map.Entry<ChunkCoordIntPair, Integer> e : info.getRight().entrySet()) {
+ toSort.add(e);
+ }
+ toSort.sort((a, b) -> !a.getValue().equals(b.getValue()) ? b.getValue() - a.getValue() : a.getKey().toString().compareTo(b.getKey().toString()));
+ long limit = 10;
+ for (Map.Entry<ChunkCoordIntPair, Integer> e : toSort) {
+ if (limit-- == 0) break;
+ sender.sendMessage(" " + e.getValue() + ": " + e.getKey().x + ", " + e.getKey().z + (chunkProviderServer.isEntityTickingChunk(e.getKey()) ? " (Ticking)" : " (Non-Ticking)"));
+ }
} else {
- List<Pair<MinecraftKey, Integer>> info = list.entrySet().stream()
- .filter(e -> names.contains(e.getKey()))
- .map(e -> Pair.of(e.getKey(), e.getValue().left))
- .sorted((a, b) -> !a.getRight().equals(b.getRight()) ? b.getRight() - a.getRight() : a.getKey().toString().compareTo(b.getKey().toString()))
- .collect(Collectors.toList());
+ List<Pair<MinecraftKey, Integer>> info = new ArrayList<>();
+ for (Map.Entry<MinecraftKey, MutablePair<Integer, Map<ChunkCoordIntPair, Integer>>> minecraftKeyMutablePairEntry : list.entrySet()) {
+ if (names.contains(minecraftKeyMutablePairEntry.getKey())) {
+ Pair<MinecraftKey, Integer> of = Pair.of(minecraftKeyMutablePairEntry.getKey(), minecraftKeyMutablePairEntry.getValue().left);
+ info.add(of);
+ }
+ }
+ info.sort((a, b) -> !a.getRight().equals(b.getRight()) ? b.getRight() - a.getRight() : a.getKey().toString().compareTo(b.getKey().toString()));
if (info == null || info.size() == 0) {
sender.sendMessage(ChatColor.RED + "No entities found.");
return;
}
- int count = info.stream().mapToInt(Pair::getRight).sum();
- int nonTickingCount = nonEntityTicking.values().stream().mapToInt(Integer::intValue).sum();
+ int count = 0;
+ for (Pair<MinecraftKey, Integer> minecraftKeyIntegerPair : info) {
+ int right = minecraftKeyIntegerPair.getRight();
+ count += right;
+ }
+ int nonTickingCount = 0;
+ for (Integer integer : nonEntityTicking.values()) {
+ int intValue = integer.intValue();
+ nonTickingCount += intValue;
+ }
sender.sendMessage("Total Ticking: " + (count - nonTickingCount) + ", Total Non-Ticking: " + nonTickingCount);
- info.forEach(e -> {
+ for (Pair<MinecraftKey, Integer> e : info) {
int nonTicking = nonEntityTicking.getOrDefault(e.getKey(), Integer.valueOf(0)).intValue();
sender.sendMessage(" " + (e.getValue() - nonTicking) + " (" + nonTicking + ") " + ": " + e.getKey());
- });
+ }
sender.sendMessage("* First number is ticking entities, second number is non-ticking entities");
}
break;
diff --git a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java
index 59aec103295f747793fdc0a52eb45f4121aba921..cee2cc4c5ec3dd0627b28bfb19f38127ba8e4576 100644
--- a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java
+++ b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java
@@ -71,9 +71,11 @@ public class SyncLoadFinder {
final List<Pair<ThrowableWithEquals, SyncLoadInformation>> data = new ArrayList<>();
- entry.getValue().forEach((ThrowableWithEquals stacktrace, SyncLoadInformation times) -> {
- data.add(new Pair<>(stacktrace, times));
- });
+ for (Map.Entry<ThrowableWithEquals, SyncLoadInformation> e : entry.getValue().entrySet()) {
+ ThrowableWithEquals k = e.getKey();
+ SyncLoadInformation value = e.getValue();
+ data.add(new Pair<>(k, value));
+ }
data.sort((Pair<ThrowableWithEquals, SyncLoadInformation> pair1, Pair<ThrowableWithEquals, SyncLoadInformation> pair2) -> {
return Integer.compare(pair2.getSecond().times, pair1.getSecond().times); // reverse order
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
index 293b73f4747f48dbf8b6a8453d3fc777de11588d..8a18dfcda3c785e9c8bd134f88515e077dbef7dc 100644
--- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
@@ -91,7 +91,9 @@ public class CraftPlayerProfile implements PlayerProfile {
@Override
public void setProperties(Collection<ProfileProperty> properties) {
- properties.forEach(this::setProperty);
+ for (ProfileProperty property : properties) {
+ setProperty(property);
+ }
}
@Override
diff --git a/src/main/java/net/minecraft/server/AdvancementDataWorld.java b/src/main/java/net/minecraft/server/AdvancementDataWorld.java
index a395b111c882485b92840081ca4d8742019bd2ee..f916144bb7fb2891d8a3d423503edd4324cf503a 100644
--- a/src/main/java/net/minecraft/server/AdvancementDataWorld.java
+++ b/src/main/java/net/minecraft/server/AdvancementDataWorld.java
@@ -14,6 +14,7 @@ import java.util.Map;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.spigotmc.SpigotConfig;
public class AdvancementDataWorld extends ResourceDataJson {
@@ -32,22 +33,24 @@ public class AdvancementDataWorld extends ResourceDataJson {
protected void a(Map<MinecraftKey, JsonObject> map, IResourceManager iresourcemanager, GameProfilerFiller gameprofilerfiller) {
Map<MinecraftKey, Advancement.SerializedAdvancement> map1 = Maps.newHashMap();
- map.forEach((minecraftkey, jsonobject) -> {
- // Spigot start
- if (org.spigotmc.SpigotConfig.disabledAdvancements != null && (org.spigotmc.SpigotConfig.disabledAdvancements.contains("*") || org.spigotmc.SpigotConfig.disabledAdvancements.contains(minecraftkey.toString()))) {
- return;
+ for (Map.Entry<MinecraftKey, JsonObject> entry : map.entrySet()) {
+ MinecraftKey minecraftkey = entry.getKey();
+ JsonObject jsonobject = entry.getValue();
+// Spigot start
+ if (SpigotConfig.disabledAdvancements != null && (SpigotConfig.disabledAdvancements.contains("*") || SpigotConfig.disabledAdvancements.contains(minecraftkey.toString()))) {
+ continue;
}
// Spigot end
try {
- Advancement.SerializedAdvancement advancement_serializedadvancement = (Advancement.SerializedAdvancement) AdvancementDataWorld.DESERIALIZER.fromJson(jsonobject, Advancement.SerializedAdvancement.class);
+ Advancement.SerializedAdvancement advancement_serializedadvancement = AdvancementDataWorld.DESERIALIZER.fromJson(jsonobject, Advancement.SerializedAdvancement.class);
map1.put(minecraftkey, advancement_serializedadvancement);
} catch (IllegalArgumentException | JsonParseException jsonparseexception) {
AdvancementDataWorld.LOGGER.error("Parsing error loading custom advancement {}: {}", minecraftkey, jsonparseexception.getMessage());
}
- });
+ }
Advancements advancements = new Advancements();
advancements.a((Map) map1);
diff --git a/src/main/java/net/minecraft/server/BehaviorController.java b/src/main/java/net/minecraft/server/BehaviorController.java
index 396b64ea0fc8a04d9e0aac289033d3d82385b86e..80b418b126015658daac56a1ab7376df62e3c527 100644
--- a/src/main/java/net/minecraft/server/BehaviorController.java
+++ b/src/main/java/net/minecraft/server/BehaviorController.java
@@ -8,11 +8,8 @@ import com.google.common.collect.Sets;
import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.types.DynamicOps;
import com.mojang.datafixers.util.Pair;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+
+import java.util.*;
import java.util.Map.Entry;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -152,13 +149,13 @@ public class BehaviorController<E extends EntityLiving> implements MinecraftSeri
public void a(Activity activity, ImmutableList<Pair<Integer, ? extends Behavior<? super E>>> immutablelist, Set<Pair<MemoryModuleType<?>, MemoryStatus>> set) {
this.e.put(activity, set);
- immutablelist.forEach((pair) -> {
+ for (Pair<Integer, ? extends Behavior<? super E>> pair : immutablelist) {
((Set) ((Map) this.c.computeIfAbsent(pair.getFirst(), (integer) -> {
return Maps.newHashMap();
})).computeIfAbsent(activity, (activity1) -> {
return Sets.newLinkedHashSet();
})).add(pair.getSecond());
- });
+ }
}
public boolean hasActivity(Activity activity) { return c(activity); } // Paper - OBFHELPER
@@ -195,19 +192,25 @@ public class BehaviorController<E extends EntityLiving> implements MinecraftSeri
@Override
public <T> T a(DynamicOps<T> dynamicops) {
- T t0 = dynamicops.createMap(this.memories.entrySet().stream().filter((entry) -> { // Paper - decompile fix
- return ((MemoryModuleType) entry.getKey()).getSerializer().isPresent() && ((Optional) entry.getValue()).isPresent();
- }).map((entry) -> {
- return Pair.of(dynamicops.createString(IRegistry.MEMORY_MODULE_TYPE.getKey(entry.getKey()).toString()), ((MinecraftSerializable) ((Optional) entry.getValue()).get()).a(dynamicops));
- }).collect(Collectors.toMap(Pair::getFirst, Pair::getSecond)));
+ // Paper - decompile fix
+ Map<T, T> map = new HashMap<>();
+ for (Entry<MemoryModuleType<?>, Optional<?>> entry : this.memories.entrySet()) {
+ if (((MemoryModuleType) entry.getKey()).getSerializer().isPresent() && entry.getValue().isPresent()) {
+ Pair<T, T> of = Pair.of(dynamicops.createString(IRegistry.MEMORY_MODULE_TYPE.getKey(entry.getKey()).toString()), ((MinecraftSerializable) ((Optional) entry.getValue()).get()).a(dynamicops));
+ if (map.put(of.getFirst(), of.getSecond()) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ }
+ T t0 = dynamicops.createMap(map);
return dynamicops.createMap(ImmutableMap.of(dynamicops.createString("memories"), t0));
}
private void c(WorldServer worldserver, E e0) {
- this.sensors.values().forEach((sensor) -> {
+ for (Sensor<? super E> sensor : this.sensors.values()) {
sensor.b(worldserver, e0);
- });
+ }
}
private void d(WorldServer worldserver, E e0) {
diff --git a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
index 3db22c5f4df6fe68474839c3889ffbe5440f54dc..28f5782bfe720a9f4c021f279ff4b56d9339ff9d 100644
--- a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
+++ b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java
@@ -4,6 +4,9 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import io.akarin.server.IndexedBlockPosition;
+import org.bukkit.craftbukkit.block.CraftBlock;
+import org.bukkit.event.entity.EntityInteractEvent;
+
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -70,7 +73,7 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
}
private void a(WorldServer worldserver, java.util.Map<BlockPosition, Integer> list, Set<io.akarin.server.IndexedBlockPosition> set, int i, EntityLiving entityliving, BehaviorController<?> behaviorcontroller) { // Akarin - List -> Map, IndexedBlockPosition
- set.forEach((indexedblockposition) -> { // Akarin - IndexedBlockPosition
+ for (IndexedBlockPosition indexedblockposition : set) {// Akarin - IndexedBlockPosition
BlockPosition blockposition = indexedblockposition.get(); // Akarin - IndexedBlockPosition
// int j = list.indexOf(blockposition); // Akarin - IndexedBlockPosition
IBlockData iblockdata = worldserver.getType(blockposition);
@@ -80,10 +83,10 @@ public class BehaviorInteractDoor extends Behavior<EntityLiving> {
boolean flag = indexedblockposition.index() >= i; // Akarin - IndexedBlockPosition
// 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);
@@ -103,7 +106,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 ef6c85557c217f1cb7f78ffbd87c094a7fd77482..a071a1da72fba6efb5684149774404555c821c6e 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -4,12 +4,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
+
+import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
@@ -478,9 +474,18 @@ public abstract class BiomeBase {
NONE("none"), RAIN("rain"), SNOW("snow");
- private static final Map<String, BiomeBase.Precipitation> d = (Map) Arrays.stream(values()).collect(Collectors.toMap(BiomeBase.Precipitation::a, (biomebase_precipitation) -> {
- return biomebase_precipitation;
- }));
+ private static final Map<String, BiomeBase.Precipitation> d;
+
+ static {
+ Map<String, Precipitation> map = new HashMap<>();
+ for (Precipitation biomebase_precipitation : values()) {
+ if (map.put(biomebase_precipitation.a(), biomebase_precipitation) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ d = (Map) map;
+ }
+
private final String e;
private Precipitation(String s) {
@@ -496,9 +501,18 @@ public abstract class BiomeBase {
NONE("none"), TAIGA("taiga"), EXTREME_HILLS("extreme_hills"), JUNGLE("jungle"), MESA("mesa"), PLAINS("plains"), SAVANNA("savanna"), ICY("icy"), THEEND("the_end"), BEACH("beach"), FOREST("forest"), OCEAN("ocean"), DESERT("desert"), RIVER("river"), SWAMP("swamp"), MUSHROOM("mushroom"), NETHER("nether");
- private static final Map<String, BiomeBase.Geography> r = (Map) Arrays.stream(values()).collect(Collectors.toMap(BiomeBase.Geography::a, (biomebase_geography) -> {
- return biomebase_geography;
- }));
+ private static final Map<String, BiomeBase.Geography> r;
+
+ static {
+ Map<String, Geography> map = new HashMap<>();
+ for (Geography biomebase_geography : values()) {
+ if (map.put(biomebase_geography.a(), biomebase_geography) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ r = (Map) map;
+ }
+
private final String s;
private Geography(String s) {
@@ -514,9 +528,18 @@ public abstract 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 b/src/main/java/net/minecraft/server/Block.java
index 66244a9d0e253b3709df4ae2adcd21e44ebbfc90..c8109cef9db68230ee6aab3e1caaf3c95ca3044f 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -474,9 +474,9 @@ public class Block 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.a);
@@ -484,9 +484,9 @@ public class Block 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.a);
@@ -494,9 +494,9 @@ public class Block 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/BlockDataAbstract.java b/src/main/java/net/minecraft/server/BlockDataAbstract.java
index 2040f183490d515b913df048ae8ab07bbecaa9a4..cf0d7be22678de8866e160588e34071a769cc599 100644
--- a/src/main/java/net/minecraft/server/BlockDataAbstract.java
+++ b/src/main/java/net/minecraft/server/BlockDataAbstract.java
@@ -6,10 +6,8 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Table;
import com.google.common.collect.UnmodifiableIterator;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
+
+import java.util.*;
import java.util.Map.Entry;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -67,7 +65,12 @@ public abstract class BlockDataAbstract<O, S> implements IBlockDataHolder<S> {
stringbuilder.append(this.a);
if (!this.getStateMap().isEmpty()) {
stringbuilder.append('[');
- stringbuilder.append((String) this.getStateMap().entrySet().stream().map(BlockDataAbstract.STATE_TO_VALUE).collect(Collectors.joining(",")));
+ StringJoiner joiner = new StringJoiner(",");
+ for (Entry<IBlockState<?>, Comparable<?>> iBlockStateComparableEntry : this.getStateMap().entrySet()) {
+ String s = BlockDataAbstract.STATE_TO_VALUE.apply(iBlockStateComparableEntry);
+ joiner.add(s);
+ }
+ stringbuilder.append((String) joiner.toString());
stringbuilder.append(']');
}
diff --git a/src/main/java/net/minecraft/server/BlockStateEnum.java b/src/main/java/net/minecraft/server/BlockStateEnum.java
index 7cdadc6b6abd069f9a1bc000a8f116f73b90e029..fc5f6e064fb6bb766d6f693f5e4bd7859abb15a8 100644
--- a/src/main/java/net/minecraft/server/BlockStateEnum.java
+++ b/src/main/java/net/minecraft/server/BlockStateEnum.java
@@ -4,11 +4,8 @@ import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Optional;
+
+import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -75,7 +72,13 @@ public class BlockStateEnum<T extends Enum<T> & INamable> extends BlockState<T>
}
public static <T extends Enum<T> & INamable> BlockStateEnum<T> a(String s, Class<T> oclass, Predicate<T> predicate) {
- return a(s, oclass, (Collection) Arrays.stream(oclass.getEnumConstants()).filter(predicate).collect(Collectors.toList()));
+ List<T> list = new ArrayList<>();
+ for (T t : oclass.getEnumConstants()) {
+ if (predicate.test(t)) {
+ list.add(t);
+ }
+ }
+ return a(s, oclass, (Collection) list);
}
public static <T extends Enum<T> & INamable> BlockStateEnum<T> of(String s, Class<T> oclass, T... at) {
diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
index e70f4928f81a06d3c15862fc7bdc43dc5fba928e..a26989ecca7c56a23e5cede45abb48c5af489d48 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
@@ -296,18 +296,18 @@ public abstract class ChunkMapDistance {
delayDistanceManagerTick = true;
priority = Math.min(URGENT_PRIORITY - 1, Math.max(1, priority));
int finalPriority = priority;
- MCUtil.getSpiralOutChunks(center.asPosition(), radius).forEach(coords -> {
+ for (ChunkCoordIntPair coords : MCUtil.getSpiralOutChunks(center.asPosition(), radius)) {
addPriorityTicket(coords, TicketType.PRIORITY, finalPriority);
- });
+ }
delayDistanceManagerTick = false;
chunkMap.world.getChunkProvider().tickDistanceManager();
}
public void clearAreaPriorityTickets(ChunkCoordIntPair center, int radius) {
delayDistanceManagerTick = true;
- MCUtil.getSpiralOutChunks(center.asPosition(), radius).forEach(coords -> {
- this.removeTicket(coords.pair(), new Ticket<ChunkCoordIntPair>(TicketType.PRIORITY, PRIORITY_TICKET_LEVEL, coords));
- });
+ for (ChunkCoordIntPair coords : MCUtil.getSpiralOutChunks(center.asPosition(), radius)) {
+ this.removeTicket(coords.pair(), new Ticket<>(TicketType.PRIORITY, PRIORITY_TICKET_LEVEL, coords));
+ }
delayDistanceManagerTick = false;
chunkMap.world.getChunkProvider().tickDistanceManager();
}
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 20b6b58bdee872a4aaa18e3507aef2c8afd5d26e..5afbd870b2388249565659c5e759026ae5138a4b 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -54,7 +54,9 @@ public class ChunkRegionLoader {
public static ProtoChunk loadChunk(WorldServer worldserver, DefinedStructureManager definedstructuremanager, VillagePlace villageplace, ChunkCoordIntPair chunkcoordintpair, NBTTagCompound nbttagcompound) {
InProgressChunkHolder holder = loadChunk(worldserver, definedstructuremanager, villageplace, chunkcoordintpair, nbttagcompound, true);
- holder.tasks.forEach(Runnable::run);
+ for (Runnable task : holder.tasks) {
+ task.run();
+ }
return holder.protoChunk;
}
@@ -404,9 +406,14 @@ public class ChunkRegionLoader {
for (int i = -1; i < 17; ++i) { // Paper - conflict on loop parameter change
int finalI = i;
- ChunkSection chunksection = (ChunkSection) Arrays.stream(achunksection).filter((chunksection1) -> {
- return chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI;
- }).findFirst().orElse(Chunk.a);
+ ChunkSection found = Chunk.a;
+ for (ChunkSection chunksection1 : achunksection) {
+ if (chunksection1 != null && chunksection1.getYPosition() >> 4 == finalI) {
+ found = chunksection1;
+ break;
+ }
+ }
+ ChunkSection chunksection = (ChunkSection) found;
// Paper start - async chunk save for unload
NibbleArray nibblearray; // block light
NibbleArray nibblearray1; // sky light
diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java
index 83cb0cd64c81eb35fa49eecff93b40f08e0a5606..4b0ac9ba44a4e09f8d3f8cdd3597d036fc2263ee 100644
--- a/src/main/java/net/minecraft/server/ContainerGrindstone.java
+++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java
@@ -1,5 +1,6 @@
package net.minecraft.server;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
@@ -243,9 +244,15 @@ public class ContainerGrindstone extends Container {
}
itemstack1.setCount(j);
- Map<Enchantment, Integer> map = (Map) EnchantmentManager.a(itemstack).entrySet().stream().filter((entry) -> {
- return ((Enchantment) entry.getKey()).c();
- }).collect(Collectors.toMap(Entry::getKey, Entry::getValue));
+ Map<Enchantment, Integer> result = new HashMap<>();
+ for (Entry<Enchantment, Integer> entry : EnchantmentManager.a(itemstack).entrySet()) {
+ if (entry.getKey().c()) {
+ if (result.put(entry.getKey(), entry.getValue()) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ }
+ Map<Enchantment, Integer> map = (Map) result;
EnchantmentManager.a(map, itemstack1);
itemstack1.setRepairCost(0);
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
index f0d7a91fa06632d5731e277a9199aa9804d3a96a..784cc2bb837df4585992679e877bbb4dac897a8b 100644
--- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/src/main/java/net/minecraft/server/CraftingManager.java
@@ -8,14 +8,8 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSyntaxException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
+
+import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -120,15 +114,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> c() {
diff --git a/src/main/java/net/minecraft/server/CrashReport.java b/src/main/java/net/minecraft/server/CrashReport.java
index c7dc8787cc3456c5540d6a00a6ff051533edc25a..78b758a11c1b7f1b132bd13604c18f171312fcea 100644
--- a/src/main/java/net/minecraft/server/CrashReport.java
+++ b/src/main/java/net/minecraft/server/CrashReport.java
@@ -11,6 +11,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.StringJoiner;
import java.util.concurrent.CompletionException;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
@@ -66,7 +67,11 @@ public class CrashReport {
this.d.a("JVM Flags", () -> {
List<String> list = (List) SystemUtils.h().collect(Collectors.toList());
- return String.format("%d total; %s", list.size(), list.stream().collect(Collectors.joining(" ")));
+ StringJoiner joiner = new StringJoiner(" ");
+ for (String s : list) {
+ joiner.add(s);
+ }
+ return String.format("%d total; %s", list.size(), joiner.toString());
});
this.d.a("CraftBukkit Information", (CrashReportCallable) new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
}
diff --git a/src/main/java/net/minecraft/server/DataConverterFlatten.java b/src/main/java/net/minecraft/server/DataConverterFlatten.java
index 548df54075a2b13787f2254cbf1d544afa3f4984..fefbe22401e86f113be5d1b691516ff5cea0af2a 100644
--- a/src/main/java/net/minecraft/server/DataConverterFlatten.java
+++ b/src/main/java/net/minecraft/server/DataConverterFlatten.java
@@ -12,10 +12,8 @@ import com.mojang.datafixers.Typed;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.datafixers.types.Type;
import com.mojang.datafixers.util.Pair;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+
+import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -343,9 +341,17 @@ public class DataConverterFlatten extends DataFix {
hashmap.put("minecraft:record_wait.0", "minecraft:music_disc_wait");
hashmap.put("minecraft:record_ward.0", "minecraft:music_disc_ward");
});
- private static final Set<String> b = (Set) DataConverterFlatten.a.keySet().stream().map((s) -> {
- return s.substring(0, s.indexOf(46));
- }).collect(Collectors.toSet());
+ private static final Set<String> b;
+
+ static {
+ Set<String> set = new HashSet<>();
+ for (String s : DataConverterFlatten.a.keySet()) {
+ String substring = s.substring(0, s.indexOf(46));
+ set.add(substring);
+ }
+ b = (Set) set;
+ }
+
private static final Set<String> c = Sets.newHashSet(new String[]{"minecraft:bow", "minecraft:carrot_on_a_stick", "minecraft:chainmail_boots", "minecraft:chainmail_chestplate", "minecraft:chainmail_helmet", "minecraft:chainmail_leggings", "minecraft:diamond_axe", "minecraft:diamond_boots", "minecraft:diamond_chestplate", "minecraft:diamond_helmet", "minecraft:diamond_hoe", "minecraft:diamond_leggings", "minecraft:diamond_pickaxe", "minecraft:diamond_shovel", "minecraft:diamond_sword", "minecraft:elytra", "minecraft:fishing_rod", "minecraft:flint_and_steel", "minecraft:golden_axe", "minecraft:golden_boots", "minecraft:golden_chestplate", "minecraft:golden_helmet", "minecraft:golden_hoe", "minecraft:golden_leggings", "minecraft:golden_pickaxe", "minecraft:golden_shovel", "minecraft:golden_sword", "minecraft:iron_axe", "minecraft:iron_boots", "minecraft:iron_chestplate", "minecraft:iron_helmet", "minecraft:iron_hoe", "minecraft:iron_leggings", "minecraft:iron_pickaxe", "minecraft:iron_shovel", "minecraft:iron_sword", "minecraft:leather_boots", "minecraft:leather_chestplate", "minecraft:leather_helmet", "minecraft:leather_leggings", "minecraft:shears", "minecraft:shield", "minecraft:stone_axe", "minecraft:stone_hoe", "minecraft:stone_pickaxe", "minecraft:stone_shovel", "minecraft:stone_sword", "minecraft:wooden_axe", "minecraft:wooden_hoe", "minecraft:wooden_pickaxe", "minecraft:wooden_shovel", "minecraft:wooden_sword"});
public DataConverterFlatten(Schema schema, boolean flag) {
diff --git a/src/main/java/net/minecraft/server/DataPaletteBlock.java b/src/main/java/net/minecraft/server/DataPaletteBlock.java
index 599ce8062a68041bd874f80cb40d71db6fd509c5..cf3e0fdfa832819e9fd22b3e404cd39f2fabd209 100644
--- a/src/main/java/net/minecraft/server/DataPaletteBlock.java
+++ b/src/main/java/net/minecraft/server/DataPaletteBlock.java
@@ -274,9 +274,9 @@ public class DataPaletteBlock<T> implements DataPaletteExpandable<T> {
this.a.a((i) -> {
int2intopenhashmap.put(i, int2intopenhashmap.get(i) + 1);
});
- int2intopenhashmap.int2IntEntrySet().forEach((entry) -> {
+ for (Entry entry : int2intopenhashmap.int2IntEntrySet()) {
datapaletteblock_a.accept(this.h.a(entry.getIntKey()), entry.getIntValue());
- });
+ }
}
// Paper start
diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java
index 6bdd9eba98d44320e35a211fddc1d77c9dab20d2..821f03ac74ab6b262a926373e7a1b3052760c790 100644
--- a/src/main/java/net/minecraft/server/DispenserRegistry.java
+++ b/src/main/java/net/minecraft/server/DispenserRegistry.java
@@ -140,9 +140,9 @@ public class DispenserRegistry {
throw new IllegalArgumentException("Not bootstrapped");
} else {
if (SharedConstants.b) {
- b().forEach((s) -> {
+ for (String s : b()) {
DispenserRegistry.LOGGER.error("Missing translations: " + s);
- });
+ }
}
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 33b456d4348c503cc94557d623c537a8aed8f9ec..e8ec27ad54e1540ea97841d1b598428e37944ebc 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2756,9 +2756,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
private static void c(IChatBaseComponent ichatbasecomponent) {
- ichatbasecomponent.a((chatmodifier) -> {
- chatmodifier.setChatClickable((ChatClickable) null);
- }).getSiblings().forEach(Entity::c);
+ for (IChatBaseComponent iChatBaseComponent : ichatbasecomponent.a((chatmodifier) -> {
+ chatmodifier.setChatClickable(null);
+ }).getSiblings()) {
+ c(iChatBaseComponent);
+ }
}
@Override
@@ -3092,11 +3094,11 @@ 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.aF = true;
entity.a(Entity::teleportAndSync);
- });
+ }
}
}
diff --git a/src/main/java/net/minecraft/server/EntityDragonFireball.java b/src/main/java/net/minecraft/server/EntityDragonFireball.java
index db43ac1cc4ae959a432eedd3efee891b4e141c7f..480c930714328c2789a3641d947611070711cff0 100644
--- a/src/main/java/net/minecraft/server/EntityDragonFireball.java
+++ b/src/main/java/net/minecraft/server/EntityDragonFireball.java
@@ -1,5 +1,9 @@
package net.minecraft.server;
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
+import org.bukkit.entity.LivingEntity;
+
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -41,7 +45,12 @@ public class EntityDragonFireball extends EntityFireball {
}
}
- if (new com.destroystokyo.paper.event.entity.EnderDragonFireballHitEvent((org.bukkit.entity.DragonFireball) this.getBukkitEntity(), list.stream().map(EntityLiving::getBukkitLivingEntity).collect(java.util.stream.Collectors.toList()), (org.bukkit.entity.AreaEffectCloud) entityareaeffectcloud.getBukkitEntity()).callEvent()) { // Paper
+ List<LivingEntity> result = new ArrayList<>();
+ for (EntityLiving entityLiving : list) {
+ CraftLivingEntity bukkitLivingEntity = entityLiving.getBukkitLivingEntity();
+ result.add(bukkitLivingEntity);
+ }
+ if (new com.destroystokyo.paper.event.entity.EnderDragonFireballHitEvent((org.bukkit.entity.DragonFireball) this.getBukkitEntity(), result, (org.bukkit.entity.AreaEffectCloud) entityareaeffectcloud.getBukkitEntity()).callEvent()) { // Paper
this.world.triggerEffect(2006, new BlockPosition(this), 0);
this.world.addEntity(entityareaeffectcloud);
} else entityareaeffectcloud.die(); // Paper
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
index 7daebfdab5c6e258d3e426643c0dbd374774ff5d..e87f9d6f27835635dd9307a1661af2aceef0f4c6 100644
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
@@ -464,9 +464,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.a).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.a);
}
// Paper start - TNTPrimeEvent
diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java
index 82a32d5dbf162b8c67c701d0c9647ddca103ddef..6058335a9a698b80215fa45dfe3c9646245ef9aa 100644
--- a/src/main/java/net/minecraft/server/EntityFox.java
+++ b/src/main/java/net/minecraft/server/EntityFox.java
@@ -1,14 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Lists;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.EnumSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
+
+import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -1401,12 +1395,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/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java
index f50ed19080257b9199bf1b8b846877a2ba1cafbb..bf21ec155e564f845f342de82fb2f6b5b786039c 100644
--- a/src/main/java/net/minecraft/server/EntityPanda.java
+++ b/src/main/java/net/minecraft/server/EntityPanda.java
@@ -1,11 +1,6 @@
package net.minecraft.server;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.EnumSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
import java.util.function.Predicate;
import javax.annotation.Nullable;
@@ -1002,9 +997,17 @@ public class EntityPanda extends EntityAnimal {
NORMAL(0, "normal", false), LAZY(1, "lazy", false), WORRIED(2, "worried", false), PLAYFUL(3, "playful", false), BROWN(4, "brown", true), WEAK(5, "weak", true), AGGRESSIVE(6, "aggressive", false);
- private static final EntityPanda.Gene[] h = (EntityPanda.Gene[]) Arrays.stream(values()).sorted(Comparator.comparingInt(EntityPanda.Gene::a)).toArray((i) -> {
- return new EntityPanda.Gene[i];
- });
+ private static final EntityPanda.Gene[] h;
+
+ static {
+ List<Gene> list = new ArrayList<>();
+ for (Gene gene : values()) {
+ list.add(gene);
+ }
+ list.sort(Comparator.comparingInt(Gene::a));
+ h = (Gene[]) list.toArray(new Gene[0]);
+ }
+
private final int i;
private final String j;
private final boolean k;
diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java
index bb46247f2f1bba51d25c70584f29d34c31b7d39c..ca4272c71de8f00b2cd7abb0867137514c750974 100644
--- a/src/main/java/net/minecraft/server/EntitySheep.java
+++ b/src/main/java/net/minecraft/server/EntitySheep.java
@@ -1,11 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Maps;
-import java.util.Arrays;
-import java.util.EnumMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Random;
+
+import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -36,9 +33,18 @@ public class EntitySheep extends EntityAnimal {
enummap.put(EnumColor.RED, Blocks.RED_WOOL);
enummap.put(EnumColor.BLACK, Blocks.BLACK_WOOL);
});
- private static final Map<EnumColor, float[]> by = Maps.newEnumMap((Map) Arrays.stream(EnumColor.values()).collect(Collectors.toMap((enumcolor) -> {
- return enumcolor;
- }, EntitySheep::c)));
+ private static final Map<EnumColor, float[]> by;
+
+ static {
+ Map<EnumColor, float[]> map = new HashMap<>();
+ for (EnumColor enumcolor : EnumColor.values()) {
+ if (map.put(enumcolor, c(enumcolor)) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ by = Maps.newEnumMap((Map) map);
+ }
+
private int bz;
private PathfinderGoalEatTile bA;
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index a904434211ac6c4645b996294e5018945d266a1f..7a3bea7462071634edcba43c54ef9ac2ca612793 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -7,11 +7,8 @@ import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.types.DynamicOps;
import com.mojang.datafixers.util.Pair;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+
+import java.util.*;
import java.util.Map.Entry;
import java.util.function.BiPredicate;
import java.util.stream.Collectors;
@@ -788,9 +785,12 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
private int eY() {
InventorySubcontainer inventorysubcontainer = this.getInventory();
- return EntityVillager.bx.entrySet().stream().mapToInt((entry) -> {
- return inventorysubcontainer.a((Item) entry.getKey()) * (Integer) entry.getValue();
- }).sum();
+ int sum = 0;
+ for (Entry<Item, Integer> entry : EntityVillager.bx.entrySet()) {
+ int i1 = inventorysubcontainer.a(entry.getKey()) * entry.getValue();
+ sum += i1;
+ }
+ return sum;
}
private void eZ() {
@@ -858,17 +858,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.fb();
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 00b70d7447e0db11c09f3b751e089ea0b73710fc..85c6ffed60bd116efc836875ce5856bfe394f934 100644
--- a/src/main/java/net/minecraft/server/Explosion.java
+++ b/src/main/java/net/minecraft/server/Explosion.java
@@ -295,9 +295,9 @@ public class Explosion {
loottableinfo_builder.set(LootContextParameters.EXPLOSION_RADIUS, 1.0F / yield); // CraftBukkit - add yield
}
- iblockdata.a(loottableinfo_builder).forEach((itemstack) -> {
+ for (ItemStack itemstack : iblockdata.a(loottableinfo_builder)) {
a(objectarraylist, itemstack, blockposition1);
- });
+ }
}
this.world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 3);
diff --git a/src/main/java/net/minecraft/server/Fluid.java b/src/main/java/net/minecraft/server/Fluid.java
index 7c9ba128620f54c9cd691d350d1ee225d867fe70..c5721b013a05860b8f1e59783b01dd3e7b407726 100644
--- a/src/main/java/net/minecraft/server/Fluid.java
+++ b/src/main/java/net/minecraft/server/Fluid.java
@@ -4,10 +4,8 @@ import com.google.common.collect.ImmutableMap;
import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.types.DynamicOps;
import com.mojang.datafixers.util.Pair;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Random;
+
+import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
@@ -74,9 +72,15 @@ public interface Fluid extends IBlockDataHolder<Fluid> {
if (immutablemap.isEmpty()) {
object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.FLUID.getKey(fluid.getType()).toString())));
} else {
- object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.FLUID.getKey(fluid.getType()).toString()), dynamicops.createString("Properties"), dynamicops.createMap(immutablemap.entrySet().stream().map((entry) -> { // Paper - decompile fix
- return Pair.of(dynamicops.createString(((IBlockState) entry.getKey()).a()), dynamicops.createString(IBlockDataHolder.b((IBlockState) entry.getKey(), (Comparable) entry.getValue())));
- }).collect(Collectors.toMap(Pair::getFirst, Pair::getSecond)))));
+ // Paper - decompile fix
+ Map<T, T> map = new HashMap<>();
+ for (Entry<IBlockState<?>, Comparable<?>> entry : immutablemap.entrySet()) {
+ Pair<T, T> of = Pair.of(dynamicops.createString(entry.getKey().a()), dynamicops.createString(IBlockDataHolder.b(entry.getKey(), entry.getValue())));
+ if (map.put(of.getFirst(), of.getSecond()) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.FLUID.getKey(fluid.getType()).toString()), dynamicops.createString("Properties"), dynamicops.createMap(map)));
}
return new Dynamic(dynamicops, object);
diff --git a/src/main/java/net/minecraft/server/GameRules.java b/src/main/java/net/minecraft/server/GameRules.java
index 9609387dbe18567a0e1b058409cded58e0ab0b04..c38894b87f4a3d65bb177aabfaaab8c6855458dc 100644
--- a/src/main/java/net/minecraft/server/GameRules.java
+++ b/src/main/java/net/minecraft/server/GameRules.java
@@ -100,25 +100,31 @@ public class GameRules {
public NBTTagCompound a() {
NBTTagCompound nbttagcompound = new NBTTagCompound();
- this.H.forEach((gamerules_gamerulekey, gamerules_gamerulevalue) -> {
+ for (Entry<GameRuleKey<?>, GameRuleValue<?>> entry : this.H.entrySet()) {
+ GameRuleKey<?> gamerules_gamerulekey = entry.getKey();
+ GameRuleValue<?> gamerules_gamerulevalue = entry.getValue();
nbttagcompound.setString(gamerules_gamerulekey.a, gamerules_gamerulevalue.getValue());
- });
+ }
return nbttagcompound;
}
public void a(NBTTagCompound nbttagcompound) {
- this.H.forEach((gamerules_gamerulekey, gamerules_gamerulevalue) -> {
+ for (Entry<GameRuleKey<?>, GameRuleValue<?>> entry : this.H.entrySet()) {
+ GameRuleKey<?> gamerules_gamerulekey = entry.getKey();
+ GameRuleValue<?> gamerules_gamerulevalue = entry.getValue();
if (nbttagcompound.hasKey(gamerules_gamerulekey.a)) {
gamerules_gamerulevalue.setValue(nbttagcompound.getString(gamerules_gamerulekey.a));
}
- });
+ }
}
public static void a(GameRules.GameRuleVisitor gamerules_gamerulevisitor) {
- GameRules.G.forEach((gamerules_gamerulekey, gamerules_gameruledefinition) -> {
+ for (Entry<GameRuleKey<?>, GameRuleDefinition<?>> entry : GameRules.G.entrySet()) {
+ GameRuleKey<?> gamerules_gamerulekey = entry.getKey();
+ GameRuleDefinition<?> gamerules_gameruledefinition = entry.getValue();
a(gamerules_gamerulevisitor, gamerules_gamerulekey, gamerules_gameruledefinition);
- });
+ }
}
private static <T extends GameRules.GameRuleValue<T>> void a(GameRules.GameRuleVisitor gamerules_gamerulevisitor, GameRules.GameRuleKey<?> gamerules_gamerulekey, GameRules.GameRuleDefinition<?> gamerules_gameruledefinition) {
diff --git a/src/main/java/net/minecraft/server/IBlockData.java b/src/main/java/net/minecraft/server/IBlockData.java
index 41cac274111efa5ba42ac9c4acb547295f7f4bb5..b2c05bcf559749e87d109f9e23e4243a134989d1 100644
--- a/src/main/java/net/minecraft/server/IBlockData.java
+++ b/src/main/java/net/minecraft/server/IBlockData.java
@@ -6,12 +6,7 @@ import com.mojang.datafixers.types.DynamicOps;
import com.mojang.datafixers.util.Pair;
import org.bukkit.craftbukkit.block.data.CraftBlockData;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Random;
+import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -330,9 +325,15 @@ public class IBlockData extends BlockDataAbstract<Block, IBlockData> implements
if (immutablemap.isEmpty()) {
object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.BLOCK.getKey(iblockdata.getBlock()).toString())));
} else {
- object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.BLOCK.getKey(iblockdata.getBlock()).toString()), dynamicops.createString("Properties"), dynamicops.createMap(immutablemap.entrySet().stream().map((entry) -> { // Paper - decompile fix
- return Pair.of(dynamicops.createString(((IBlockState) entry.getKey()).a()), dynamicops.createString(IBlockDataHolder.b((IBlockState) entry.getKey(), (Comparable) entry.getValue())));
- }).collect(Collectors.toMap(Pair::getFirst, Pair::getSecond)))));
+ // Paper - decompile fix
+ Map<T, T> map = new HashMap<>();
+ for (Entry<IBlockState<?>, Comparable<?>> entry : immutablemap.entrySet()) {
+ Pair<T, T> of = Pair.of(dynamicops.createString(entry.getKey().a()), dynamicops.createString(IBlockDataHolder.b(entry.getKey(), entry.getValue())));
+ if (map.put(of.getFirst(), of.getSecond()) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ object = dynamicops.createMap(ImmutableMap.of(dynamicops.createString("Name"), dynamicops.createString(IRegistry.BLOCK.getKey(iblockdata.getBlock()).toString()), dynamicops.createString("Properties"), dynamicops.createMap(map)));
}
return new Dynamic(dynamicops, object);
@@ -406,9 +407,14 @@ public class IBlockData extends BlockDataAbstract<Block, IBlockData> implements
}
this.g = block.b(iblockdata, (IBlockAccess) BlockAccessAir.INSTANCE, BlockPosition.ZERO, VoxelShapeCollision.a());
- this.h = Arrays.stream(EnumDirection.EnumAxis.values()).anyMatch((enumdirection_enumaxis) -> {
- return this.g.b(enumdirection_enumaxis) < 0.0D || this.g.c(enumdirection_enumaxis) > 1.0D;
- });
+ boolean result = false;
+ for (EnumDirection.EnumAxis enumdirection_enumaxis : EnumDirection.EnumAxis.values()) {
+ if (this.g.b(enumdirection_enumaxis) < 0.0D || this.g.c(enumdirection_enumaxis) > 1.0D) {
+ result = true;
+ break;
+ }
+ }
+ this.h = result;
this.i = new boolean[6];
EnumDirection[] aenumdirection1 = a; // Paper - decompile fix
int k = aenumdirection1.length;
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index 3bc57ef91d557383178533b0cc87a71a521d6b3e..c236d61062ce6e8f9ce817ac29ecb03afebbcd06 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -27,11 +27,18 @@ public interface IEntityAccess {
}
default boolean a(@Nullable Entity entity, VoxelShape voxelshape) {
- return voxelshape.isEmpty() ? true : this.getEntities(entity, voxelshape.getBoundingBox()).stream().filter((entity1) -> {
- return !entity1.dead && entity1.i && (entity == null || !entity1.isSameVehicle(entity));
- }).noneMatch((entity1) -> {
- return VoxelShapes.c(voxelshape, VoxelShapes.a(entity1.getBoundingBox()), OperatorBoolean.AND);
- });
+ if (voxelshape.isEmpty()) {
+ return true;
+ } else {
+ for (Entity entity1 : this.getEntities(entity, voxelshape.getBoundingBox())) {
+ if (!entity1.dead && entity1.i && (entity == null || !entity1.isSameVehicle(entity))) {
+ if (VoxelShapes.c(voxelshape, VoxelShapes.a(entity1.getBoundingBox()), OperatorBoolean.AND)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
}
default <T extends Entity> List<T> a(Class<? extends T> oclass, AxisAlignedBB axisalignedbb) {
diff --git a/src/main/java/net/minecraft/server/IOWorker.java b/src/main/java/net/minecraft/server/IOWorker.java
index b90baef0f54bdb8f5ee51cdde149f64e39887ef5..1e6da55831d29bdead2ccf1522ea3e84183ff9ec 100644
--- a/src/main/java/net/minecraft/server/IOWorker.java
+++ b/src/main/java/net/minecraft/server/IOWorker.java
@@ -3,9 +3,7 @@ package net.minecraft.server;
import com.google.common.collect.Maps;
import com.google.common.collect.Queues;
import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Queue;
+import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -99,11 +97,12 @@ public class IOWorker implements AutoCloseable {
public CompletableFuture<Void> a() {
return this.a((completablefuture) -> {
return () -> {
- CompletableFuture<?> completablefuture1 = CompletableFuture.allOf((CompletableFuture[]) this.f.values().stream().map((ioworker_a) -> {
- return ioworker_a.b;
- }).toArray((i) -> {
- return new CompletableFuture[i];
- }));
+ List<CompletableFuture<Void>> list = new ArrayList<>();
+ for (a ioworker_a : this.f.values()) {
+ CompletableFuture<Void> voidCompletableFuture = ioworker_a.b;
+ list.add(voidCompletableFuture);
+ }
+ CompletableFuture<?> completablefuture1 = CompletableFuture.allOf((CompletableFuture[]) list.toArray(new CompletableFuture[0]));
completablefuture1.whenComplete((object, throwable) -> {
completablefuture.complete(null); // Paper - decompile fix
@@ -158,7 +157,11 @@ public class IOWorker implements AutoCloseable {
}
private void f() {
- this.f.forEach(this::a);
+ for (Entry<ChunkCoordIntPair, a> entry : this.f.entrySet()) {
+ ChunkCoordIntPair key = entry.getKey();
+ a value = entry.getValue();
+ a(key, value);
+ }
this.f.clear();
}
diff --git a/src/main/java/net/minecraft/server/InventorySubcontainer.java b/src/main/java/net/minecraft/server/InventorySubcontainer.java
index 28980aad6cfda81a64194304674fe21a94becbc9..6e14a2cb7b7d73bc45173537f8c6c62adcd0aeb3 100644
--- a/src/main/java/net/minecraft/server/InventorySubcontainer.java
+++ b/src/main/java/net/minecraft/server/InventorySubcontainer.java
@@ -1,6 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
@@ -218,9 +220,13 @@ public class InventorySubcontainer implements IInventory, AutoRecipeOutput {
}
public String toString() {
- return ((List) this.items.stream().filter((itemstack) -> {
- return !itemstack.isEmpty();
- }).collect(Collectors.toList())).toString();
+ List<ItemStack> list = new ArrayList<>();
+ for (ItemStack itemstack : this.items) {
+ if (!itemstack.isEmpty()) {
+ list.add(itemstack);
+ }
+ }
+ return ((List) list).toString();
}
private void b(ItemStack itemstack) {
diff --git a/src/main/java/net/minecraft/server/ItemCrossbow.java b/src/main/java/net/minecraft/server/ItemCrossbow.java
index 60a47bccca5bc77039c0bec94eb329b3f2f0937f..548fd7fab98fcebdcf706c334915b9c567241aba 100644
--- a/src/main/java/net/minecraft/server/ItemCrossbow.java
+++ b/src/main/java/net/minecraft/server/ItemCrossbow.java
@@ -187,9 +187,12 @@ public class ItemCrossbow extends ItemProjectileWeapon {
}
private static boolean a(ItemStack itemstack, Item item) {
- return j(itemstack).stream().anyMatch((itemstack1) -> {
- return itemstack1.getItem() == item;
- });
+ for (ItemStack itemstack1 : j(itemstack)) {
+ if (itemstack1.getItem() == item) {
+ return true;
+ }
+ }
+ return false;
}
private static void a(World world, EntityLiving entityliving, EnumHand enumhand, ItemStack itemstack, ItemStack itemstack1, float f, boolean flag, float f1, float f2, float f3) {
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
index bd524a35bb11005adfed12f66465fa8466a155f0..d6a3a5dace76275ad034ea92072f533442686960 100644
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
@@ -1,7 +1,9 @@
package net.minecraft.server;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.List;
public class ItemFireworks extends Item {
@@ -58,11 +60,19 @@ public class ItemFireworks extends Item {
SMALL_BALL(0, "small_ball"), LARGE_BALL(1, "large_ball"), STAR(2, "star"), CREEPER(3, "creeper"), BURST(4, "burst");
- private static final ItemFireworks.EffectType[] f = (ItemFireworks.EffectType[]) Arrays.stream(values()).sorted(Comparator.comparingInt((itemfireworks_effecttype) -> {
- return itemfireworks_effecttype.g;
- })).toArray((i) -> {
- return new ItemFireworks.EffectType[i];
- });
+ private static final ItemFireworks.EffectType[] f;
+
+ static {
+ List<EffectType> list = new ArrayList<>();
+ for (EffectType effectType : values()) {
+ list.add(effectType);
+ }
+ list.sort(Comparator.comparingInt((itemfireworks_effecttype) -> {
+ return itemfireworks_effecttype.g;
+ }));
+ f = (EffectType[]) list.toArray(new EffectType[0]);
+ }
+
private final int g;
private final String h;
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index ea60880c6f15b1a39579896d78cf641563621aa4..babe0537e10a131c8f2ea5636e8d0e996943ceb0 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -782,9 +782,10 @@ public final class ItemStack {
object = this.getItem().a(enumitemslot);
}
- ((Multimap<String, AttributeModifier>) object).values().forEach((attributemodifier1) -> { // CraftBukkit - decompile error
+ // CraftBukkit - decompile error
+ for (AttributeModifier attributemodifier1 : ((Multimap<String, AttributeModifier>) object).values()) {
attributemodifier1.a(false);
- });
+ }
return (Multimap) object;
}
diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java
index 9ef39f1f51f9960865f6418115b08e8d7de86509..4a24ec468a98fe44ec5931a91881f73232bbb9a2 100644
--- a/src/main/java/net/minecraft/server/LightEngineThreaded.java
+++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java
@@ -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/LootTable.java b/src/main/java/net/minecraft/server/LootTable.java
index 666bd34eab4847cb698596b59e1c07569bcdb38c..e9ce7f4b26e72863ab92974e36b0f835f340c4c0 100644
--- a/src/main/java/net/minecraft/server/LootTable.java
+++ b/src/main/java/net/minecraft/server/LootTable.java
@@ -9,10 +9,7 @@ import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import org.apache.commons.lang3.ArrayUtils;
@@ -122,7 +119,12 @@ public class LootTable {
if (event.isCancelled()) {
return;
}
- list = event.getLoot().stream().map(CraftItemStack::asNMSCopy).collect(Collectors.toList());
+ List<ItemStack> result = new ArrayList<>();
+ for (org.bukkit.inventory.ItemStack itemStack : event.getLoot()) {
+ ItemStack stack = CraftItemStack.asNMSCopy(itemStack);
+ result.add(stack);
+ }
+ list = result;
// CraftBukkit end
List<Integer> list1 = this.a(iinventory, random);
diff --git a/src/main/java/net/minecraft/server/LootTableRegistry.java b/src/main/java/net/minecraft/server/LootTableRegistry.java
index 21e683eaa5c13192217d50e5b534494553856232..47a180810c15a9629cb616794aeab62c8173fa73 100644
--- a/src/main/java/net/minecraft/server/LootTableRegistry.java
+++ b/src/main/java/net/minecraft/server/LootTableRegistry.java
@@ -37,16 +37,18 @@ public class LootTableRegistry extends ResourceDataJson {
LootTableRegistry.LOGGER.warn("Datapack tried to redefine {} loot table, ignoring", LootTables.a);
}
- map.forEach((minecraftkey, jsonobject1) -> {
+ for (Map.Entry<MinecraftKey, JsonObject> mapEntry : map.entrySet()) {
+ MinecraftKey k = mapEntry.getKey();
+ JsonObject jsonobject1 = mapEntry.getValue();
try {
- LootTable loottable = (LootTable) LootTableRegistry.b.fromJson(jsonobject1, LootTable.class);
+ LootTable loottable = LootTableRegistry.b.fromJson(jsonobject1, LootTable.class);
- builder.put(minecraftkey, loottable);
+ builder.put(k, loottable);
} catch (Exception exception) {
- LootTableRegistry.LOGGER.error("Couldn't parse loot table {}", minecraftkey, exception);
+ LootTableRegistry.LOGGER.error("Couldn't parse loot table {}", k, exception);
}
- });
+ }
builder.put(LootTables.a, LootTable.EMPTY);
ImmutableMap<MinecraftKey, LootTable> immutablemap = builder.build();
LootContextParameterSet lootcontextparameterset = LootContextParameterSets.GENERIC;
@@ -58,16 +60,23 @@ public class LootTableRegistry extends ResourceDataJson {
immutablemap.getClass();
LootCollector lootcollector = new LootCollector(lootcontextparameterset, function, immutablemap::get);
- immutablemap.forEach((minecraftkey, loottable) -> {
+ for (Map.Entry<MinecraftKey, LootTable> e : immutablemap.entrySet()) {
+ MinecraftKey minecraftkey = e.getKey();
+ LootTable loottable = e.getValue();
a(lootcollector, minecraftkey, loottable);
- });
+ }
lootcollector.a().forEach((s, s1) -> {
LootTableRegistry.LOGGER.warn("Found validation problem in " + s + ": " + s1);
});
this.c = immutablemap;
// CraftBukkit start - build a reversed registry map
ImmutableMap.Builder<LootTable, MinecraftKey> lootTableToKeyBuilder = ImmutableMap.builder();
- this.c.forEach((lootTable, key) -> lootTableToKeyBuilder.put(key, lootTable)); // PAIL rename keyToLootTable
+ // PAIL rename keyToLootTable
+ for (Map.Entry<MinecraftKey, LootTable> entry : this.c.entrySet()) {
+ MinecraftKey lootTable = entry.getKey();
+ LootTable key = entry.getValue();
+ lootTableToKeyBuilder.put(key, lootTable);
+ }
this.lootTableToKey = lootTableToKeyBuilder.build();
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
index 973bdd25ca45ee6a11803e3abb8c0ff22d658554..b20a4a0edb5f5958361cc4c12bee05849dc2b26c 100644
--- a/src/main/java/net/minecraft/server/MCUtil.java
+++ b/src/main/java/net/minecraft/server/MCUtil.java
@@ -76,7 +76,9 @@ public final class MCUtil {
public static <T> Runnable once(List<T> list, Consumer<T> cb) {
return once(() -> {
- list.forEach(cb);
+ for (T t : list) {
+ cb.accept(t);
+ }
});
}
@@ -107,7 +109,9 @@ public final class MCUtil {
*/
public static <T> Runnable registerListCleaner(Object obj, List<T> list, Consumer<T> cleaner) {
return registerCleaner(obj, () -> {
- list.forEach(cleaner);
+ for (T t : list) {
+ cleaner.accept(t);
+ }
list.clear();
});
}
@@ -243,7 +247,9 @@ public final class MCUtil {
all.addAll(set);
}
}
- all.forEach(consumer);
+ for (T t : all) {
+ consumer.accept(t);
+ }
}
private MCUtil() {}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 06e1f6a0d7ee6b4119a4801ae298baaee1d2da3b..7831f1d87df7cc19e1cc428a894dbee43c0e3208 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -473,7 +473,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
// Paper start - Handle collideRule team for player collision toggle
final Scoreboard scoreboard = this.getScoreboard();
- final java.util.Collection<String> toRemove = scoreboard.getTeams().stream().filter(team -> team.getName().startsWith("collideRule_")).map(ScoreboardTeam::getName).collect(java.util.stream.Collectors.toList());
+ final Collection<String> toRemove = new ArrayList<>();
+ for (ScoreboardTeam team : scoreboard.getTeams()) {
+ if (team.getName().startsWith("collideRule_")) {
+ String name = team.getName();
+ toRemove.add(name);
+ }
+ }
for (String teamName : toRemove) {
scoreboard.removeTeam(scoreboard.getTeam(teamName)); // Clean up after ourselves
}
@@ -1735,7 +1741,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}
}
- this.getPlayerList().getPlayers().forEach(this::a);
+ for (EntityPlayer entityPlayer : this.getPlayerList().getPlayers()) {
+ a(entityPlayer);
+ }
}
public void d(boolean flag) {
@@ -1748,7 +1756,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
worlddata.e(flag);
}
- this.getPlayerList().getPlayers().forEach(this::a);
+ for (EntityPlayer entityPlayer : this.getPlayerList().getPlayers()) {
+ a(entityPlayer);
+ }
}
private void a(EntityPlayer entityplayer) {
@@ -2055,9 +2065,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
this.resourcePackRepository.a((Collection) list);
List<IResourcePack> list1 = Lists.newArrayList();
- this.resourcePackRepository.d().forEach((resourcepackloader1) -> {
- list1.add(resourcepackloader1.d());
- });
+ for (ResourcePackLoader packLoader : this.resourcePackRepository.d()) {
+ list1.add(packLoader.d());
+ }
CompletableFuture<Unit> completablefuture = this.ae.a(this.executorService, this, list1, MinecraftServer.i);
this.awaitTasks(completablefuture::isDone);
@@ -2070,15 +2080,15 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
worlddata.O().clear();
worlddata.N().clear();
- this.resourcePackRepository.d().forEach((resourcepackloader1) -> {
- worlddata.O().add(resourcepackloader1.e());
- });
- this.resourcePackRepository.b().forEach((resourcepackloader1) -> {
+ for (ResourcePackLoader resourcePackLoader : this.resourcePackRepository.d()) {
+ worlddata.O().add(resourcePackLoader.e());
+ }
+ for (ResourcePackLoader resourcepackloader1 : this.resourcePackRepository.b()) {
if (!this.resourcePackRepository.d().contains(resourcepackloader1)) {
worlddata.N().add(resourcepackloader1.e());
}
- });
+ }
}
public void a(CommandListenerWrapper commandlistenerwrapper) {
@@ -2389,7 +2399,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}
private void bb() {
- Block.REGISTRY_ID.forEach(IBlockData::c);
+ for (IBlockData iBlockData : Block.REGISTRY_ID) {
+ iBlockData.c();
+ }
}
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
index d3c2e1bedfde39c19fe293941036641ea72c1bcd..aacc2f0052629169be551e44c3ef474f2c11533c 100644
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
@@ -52,11 +52,13 @@ public class NameReferencingFileConverter {
}
private static void a(MinecraftServer minecraftserver, Collection<String> collection, ProfileLookupCallback profilelookupcallback) {
- String[] astring = (String[]) collection.stream().filter((s) -> {
- return !UtilColor.b(s);
- }).toArray((i) -> {
- return new String[i];
- });
+ List<String> list = new ArrayList<>();
+ for (String s1 : collection) {
+ if (!UtilColor.b(s1)) {
+ list.add(s1);
+ }
+ }
+ String[] astring = (String[]) list.toArray(new String[0]);
if (minecraftserver.getOnlineMode()
|| (com.destroystokyo.paper.PaperConfig.isProxyOnlineMode())) { // Spigot: bungee = online mode, for now. // Paper - Handle via setting
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index 5578818a0a3b10fa04ad9937bb3602350782df48..6ddf807dfe448301bfa1152b9019899acd8c30f3 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -442,12 +442,12 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
// Paper start
public void clearPacketQueue() {
EntityPlayer player = getPlayer();
- packetQueue.forEach(queuedPacket -> {
+ for (QueuedPacket queuedPacket : packetQueue) {
Packet<?> packet = queuedPacket.getPacket();
if (packet.hasFinishListener()) {
packet.onPacketDispatchFinish(player, null);
}
- });
+ }
packetQueue.clear();
} // Paper end
public void close(IChatBaseComponent ichatbasecomponent) {
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
index f49fc9c8f24e0b1f0dc11a213605a3e91f4f66a9..8d525009dc80f43b032b57f194e57be25db2ec5e 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
@@ -91,12 +91,14 @@ public class PathfinderGoalSelector {
wrappedGoal.d();
}
// Paper end - remove streams from pathfindergoalselector
- this.c.forEach((pathfindergoal_type, pathfindergoalwrapped) -> {
+ for (Map.Entry<PathfinderGoal.Type, PathfinderGoalWrapped> entry : this.c.entrySet()) {
+ PathfinderGoal.Type pathfindergoal_type = entry.getKey();
+ PathfinderGoalWrapped pathfindergoalwrapped = entry.getValue();
if (!pathfindergoalwrapped.g()) {
this.c.remove(pathfindergoal_type);
}
- });
+ }
//this.e.exit(); // Akarin - remove caller
//this.e.enter("goalUpdate"); // Akarin - remove caller
// Paper start - remove streams from pathfindergoalselector
diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java
index 44d6f2debc767cb0576b17ed3e0711baa4361001..e7bfefafb70df7cca594db433a83e73e743629e5 100644
--- a/src/main/java/net/minecraft/server/PlayerChunk.java
+++ b/src/main/java/net/minecraft/server/PlayerChunk.java
@@ -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;
@@ -757,7 +758,11 @@ public class PlayerChunk {
if (getCurrentPriority() != priority) {
this.w.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 b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 4affa47c290d68d755759d2b96b46eb716515169..89e510c3fa06d33bfae457988d4f4f9b4b9a6c9e 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -474,53 +474,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();
@@ -846,7 +846,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
protected void save(boolean flag) {
Long2ObjectLinkedOpenHashMap<PlayerChunk> visibleChunks = this.getVisibleChunks(); // Paper remove clone of visible Chunks unless saving off main thread (watchdog kill)
if (flag) {
- List<PlayerChunk> list = (List) visibleChunks.values().stream().filter(PlayerChunk::hasBeenLoaded).peek(PlayerChunk::m).collect(Collectors.toList()); // Paper - remove cloning of visible chunks
+ List<PlayerChunk> result = new ArrayList<>();
+ for (PlayerChunk playerChunk : visibleChunks.values()) {
+ if (playerChunk.hasBeenLoaded()) {
+ playerChunk.m();
+ result.add(playerChunk);
+ }
+ }
+ List<PlayerChunk> list = (List) result; // Paper - remove cloning of visible chunks
MutableBoolean mutableboolean = new MutableBoolean();
do {
@@ -875,15 +882,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
// this.i(); // Paper - nuke IOWorker
PlayerChunkMap.LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", this.w.getName());
} else {
- visibleChunks.values().stream().filter(PlayerChunk::hasBeenLoaded).forEach((playerchunk) -> {
- IChunkAccess ichunkaccess = (IChunkAccess) playerchunk.getChunkSave().getNow(null); // CraftBukkit - decompile error
+ for (PlayerChunk playerchunk : visibleChunks.values()) {
+ if (playerchunk.hasBeenLoaded()) {
+ IChunkAccess ichunkaccess = playerchunk.getChunkSave().getNow(null); // CraftBukkit - decompile error
- if (ichunkaccess instanceof ProtoChunkExtension || ichunkaccess instanceof Chunk) {
- this.saveChunk(ichunkaccess);
- playerchunk.m();
- }
+ if (ichunkaccess instanceof ProtoChunkExtension || ichunkaccess instanceof Chunk) {
+ this.saveChunk(ichunkaccess);
+ playerchunk.m();
+ }
- });
+ }
+ }
}
}
@@ -973,8 +982,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
return;
}
- if (chunkstatus == ChunkStatus.EMPTY && chunk.h().values().stream().noneMatch(StructureStart::e)) {
- return;
+ if (chunkstatus == ChunkStatus.EMPTY) {
+ boolean result = true;
+ for (StructureStart structureStart : chunk.h().values()) {
+ if (structureStart.e()) {
+ result = false;
+ break;
+ }
+ }
+ if (result) {
+ return;
+ }
}
} catch (IOException ex) {
ex.printStackTrace();
@@ -1123,7 +1141,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
this.getVillagePlace().loadInData(chunkcoordintpair, chunkHolder.poiData);
- chunkHolder.tasks.forEach(Runnable::run);
+ for (Runnable task : chunkHolder.tasks) {
+ task.run();
+ }
// Paper - async load completes this
// Paper end
@@ -1303,7 +1323,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
if (list != null) {
- list.forEach(chunk::b);
+ for (Entity entity : list) {
+ chunk.b(entity);
+ }
}
}
@@ -1427,8 +1449,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
return false;
}
- if (chunkstatus == ChunkStatus.EMPTY && ichunkaccess.h().values().stream().noneMatch(StructureStart::e)) {
- return false;
+ if (chunkstatus == ChunkStatus.EMPTY) {
+ boolean result = true;
+ for (StructureStart structureStart : ichunkaccess.h().values()) {
+ if (structureStart.e()) {
+ result = false;
+ break;
+ }
+ }
+ if (result) {
+ return false;
+ }
}
}
@@ -1536,7 +1567,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
// CraftBukkit - decompile error
csvwriter.a(chunkcoordintpair.x, chunkcoordintpair.z, playerchunk.getTicketLevel(), optional.isPresent(), optional.map(IChunkAccess::getChunkStatus).orElse(null), optional1.map(Chunk::getState).orElse(null), a(playerchunk.c()), a(playerchunk.a()), a(playerchunk.b()), this.chunkDistanceManager.c(entry.getLongKey()), !this.isOutsideOfRange(chunkcoordintpair), optional1.map((chunk) -> {
- return Stream.of(chunk.getEntitySlices()).mapToInt(List::size).sum(); // Spigot
+ int sum = 0;
+ for (List<Entity> entities : chunk.getEntitySlices()) {
+ int size = entities.size();
+ sum += size;
+ }
+ return sum; // Spigot
}).orElse(0), optional1.map((chunk) -> {
return chunk.getTileEntities().size();
}).orElse(0));
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index e9229a42d1c5a60f7cd40aa2233a7c55d9700670..24d31d95cefffc26f8e4d4d2793340a580fbebb5 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -603,7 +603,9 @@ public class PlayerConnection implements PacketListenerPlayIn {
com.mojang.brigadier.suggestion.SuggestionsBuilder builder = new com.mojang.brigadier.suggestion.SuggestionsBuilder(packetplayintabcomplete.c(), stringreader.getTotalLength());
builder = builder.createOffset(builder.getInput().lastIndexOf(' ') + 1);
- completions.forEach(builder::suggest);
+ for (String completion : completions) {
+ builder.suggest(completion);
+ }
Suggestions suggestions = builder.buildFuture().join();
com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent suggestEvent = new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent(this.getPlayer(), suggestions, buffer);
suggestEvent.setCancelled(suggestions.isEmpty());
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
index f84dd6d9bec4c0f2f741bab20a4f45884594da2d..3ee5d4023ecc37aaf8dfd3fc9cd8981f6a36abef 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java
@@ -57,11 +57,20 @@ public class PortalTravelAgent {
List<VillagePlaceRecord> list = (List) villageplace.b((villageplacetype) -> {
return villageplacetype == VillagePlaceType.u;
}, 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().m(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/Raid.java b/src/main/java/net/minecraft/server/Raid.java
index 85c22da5c893100c2fb580c1e96c32e1f7b6a0d6..af70fa87e731766963939d0c7f07e04a1ed2b3e3 100644
--- a/src/main/java/net/minecraft/server/Raid.java
+++ b/src/main/java/net/minecraft/server/Raid.java
@@ -569,7 +569,12 @@ public class Raid {
}
public int r() {
- return this.raiders.values().stream().mapToInt(Set::size).sum();
+ int sum = 0;
+ for (Set<EntityRaider> entityRaiders : this.raiders.values()) {
+ int size = entityRaiders.size();
+ sum += size;
+ }
+ return sum;
}
public void a(EntityRaider entityraider, boolean flag) {
@@ -785,7 +790,13 @@ public class Raid {
// CraftBukkit start - a method to get all raiders
public java.util.Collection<EntityRaider> getRaiders() {
- return this.raiders.values().stream().flatMap(Set::stream).collect(java.util.stream.Collectors.toSet());
+ Set<EntityRaider> set = new HashSet<>();
+ for (Set<EntityRaider> entityRaiders : this.raiders.values()) {
+ for (EntityRaider entityRaider : entityRaiders) {
+ set.add(entityRaider);
+ }
+ }
+ return set;
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/RecipeItemStack.java b/src/main/java/net/minecraft/server/RecipeItemStack.java
index e339310dd19fd1502b1d8bc095b4aafd2ab0af43..dc90753f13663f1706787b949d0888ac1149d8c2 100644
--- a/src/main/java/net/minecraft/server/RecipeItemStack.java
+++ b/src/main/java/net/minecraft/server/RecipeItemStack.java
@@ -9,11 +9,8 @@ import com.google.gson.JsonSyntaxException;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntComparators;
import it.unimi.dsi.fastutil.ints.IntList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
+
+import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -22,7 +19,12 @@ import javax.annotation.Nullable;
public final class RecipeItemStack implements Predicate<ItemStack> {
private static final Predicate<? super RecipeItemStack.Provider> b = (recipeitemstack_provider) -> {
- return !recipeitemstack_provider.a().stream().allMatch(ItemStack::isEmpty);
+ for (ItemStack itemStack : recipeitemstack_provider.a()) {
+ if (!itemStack.isEmpty()) {
+ return true;
+ }
+ }
+ return false;
};
public static final RecipeItemStack a = new RecipeItemStack(Stream.empty());
private final RecipeItemStack.Provider[] c;
@@ -38,11 +40,16 @@ public final class RecipeItemStack implements Predicate<ItemStack> {
public void buildChoices() {
if (this.choices == null) {
- this.choices = (ItemStack[]) Arrays.stream(this.c).flatMap((recipeitemstack_provider) -> {
- return recipeitemstack_provider.a().stream();
- }).distinct().toArray((i) -> {
- return new ItemStack[i];
- });
+ List<ItemStack> list = new ArrayList<>();
+ Set<ItemStack> uniqueValues = new HashSet<>();
+ for (Provider recipeitemstack_provider : this.c) {
+ for (ItemStack itemStack : recipeitemstack_provider.a()) {
+ if (uniqueValues.add(itemStack)) {
+ list.add(itemStack);
+ }
+ }
+ }
+ this.choices = (ItemStack[]) list.toArray(new ItemStack[0]);
}
}
diff --git a/src/main/java/net/minecraft/server/RemoteStatusListener.java b/src/main/java/net/minecraft/server/RemoteStatusListener.java
index d5025938473d3585e83994e890f742cf26c8061e..b67e5e2ef1964a7126a7b879e37f033f40f3f744 100644
--- a/src/main/java/net/minecraft/server/RemoteStatusListener.java
+++ b/src/main/java/net/minecraft/server/RemoteStatusListener.java
@@ -1,6 +1,9 @@
package net.minecraft.server;
+import com.destroystokyo.paper.event.server.GS4QueryEvent;
import com.google.common.collect.Maps;
+import org.bukkit.plugin.Plugin;
+
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
@@ -11,10 +14,7 @@ import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
import java.util.Map.Entry;
public class RemoteStatusListener extends RemoteConnectionThread {
@@ -201,9 +201,12 @@ public class RemoteStatusListener extends RemoteConnectionThread {
java.util.List<com.destroystokyo.paper.event.server.GS4QueryEvent.QueryResponse.PluginInformation> plugins = java.util.Collections.emptyList();
org.bukkit.plugin.Plugin[] bukkitPlugins;
if(((DedicatedServer) this.getServer()).server.getQueryPlugins() && (bukkitPlugins = org.bukkit.Bukkit.getPluginManager().getPlugins()).length > 0) {
- plugins = java.util.stream.Stream.of(bukkitPlugins)
- .map(plugin -> com.destroystokyo.paper.event.server.GS4QueryEvent.QueryResponse.PluginInformation.of(plugin.getName(), plugin.getDescription().getVersion()))
- .collect(java.util.stream.Collectors.toList());
+ List<GS4QueryEvent.QueryResponse.PluginInformation> list = new ArrayList<>();
+ for (Plugin plugin : bukkitPlugins) {
+ GS4QueryEvent.QueryResponse.PluginInformation of = GS4QueryEvent.QueryResponse.PluginInformation.of(plugin.getName(), plugin.getDescription().getVersion());
+ list.add(of);
+ }
+ plugins = list;
}
com.destroystokyo.paper.event.server.GS4QueryEvent.QueryResponse queryResponse = com.destroystokyo.paper.event.server.GS4QueryEvent.QueryResponse.builder()
@@ -266,7 +269,10 @@ public class RemoteStatusListener extends RemoteConnectionThread {
this.getCachedFullResponse().writeString("player_");
this.getCachedFullResponse().writeInt(0);
// "Meaningless data" end
- queryResponse.getPlayers().forEach(this.getCachedFullResponse()::writeStringUnchecked);
+ RemoteStatusReply remoteStatusReply = this.getCachedFullResponse();
+ for (String s1 : queryResponse.getPlayers()) {
+ remoteStatusReply.writeStringUnchecked(s1);
+ }
this.getCachedFullResponse().writeInt(0);
// Paper end
return this.v.a();
diff --git a/src/main/java/net/minecraft/server/Reputation.java b/src/main/java/net/minecraft/server/Reputation.java
index 4ae31599664ee8478ca1acf68f7253eb02eb45ed..27091eb3aadbde4291d517491caf55fff6b48a1f 100644
--- a/src/main/java/net/minecraft/server/Reputation.java
+++ b/src/main/java/net/minecraft/server/Reputation.java
@@ -87,14 +87,14 @@ public class Reputation {
public void a(Reputation reputation, Random random, int i) {
Collection<Reputation.b> collection = reputation.a(random, i);
- collection.forEach((reputation_b) -> {
+ for (b reputation_b : collection) {
int j = reputation_b.c - reputation_b.b.j;
if (j >= 2) {
this.a(reputation_b.a).a.mergeInt(reputation_b.b, j, Reputation::a);
}
- });
+ }
}
public int a(UUID uuid, Predicate<ReputationType> predicate) {
@@ -147,11 +147,14 @@ public class Reputation {
}
public int a(Predicate<ReputationType> predicate) {
- return this.a.object2IntEntrySet().stream().filter((it_unimi_dsi_fastutil_objects_object2intmap_entry) -> {
- return predicate.test(it_unimi_dsi_fastutil_objects_object2intmap_entry.getKey());
- }).mapToInt((it_unimi_dsi_fastutil_objects_object2intmap_entry) -> {
- return it_unimi_dsi_fastutil_objects_object2intmap_entry.getIntValue() * ((ReputationType) it_unimi_dsi_fastutil_objects_object2intmap_entry.getKey()).g;
- }).sum();
+ int sum = 0;
+ for (Object2IntMap.Entry<ReputationType> it_unimi_dsi_fastutil_objects_object2intmap_entry : this.a.object2IntEntrySet()) {
+ if (predicate.test(it_unimi_dsi_fastutil_objects_object2intmap_entry.getKey())) {
+ int i = it_unimi_dsi_fastutil_objects_object2intmap_entry.getIntValue() * it_unimi_dsi_fastutil_objects_object2intmap_entry.getKey().g;
+ sum += i;
+ }
+ }
+ return sum;
}
public Stream<Reputation.b> a(UUID uuid) {
diff --git a/src/main/java/net/minecraft/server/ServerGUI.java b/src/main/java/net/minecraft/server/ServerGUI.java
index 470009fe4c46fdf3e31374ab576be823f6423193..9e40b07e28d992b7efccf9900997cc7e53663dd2 100644
--- a/src/main/java/net/minecraft/server/ServerGUI.java
+++ b/src/main/java/net/minecraft/server/ServerGUI.java
@@ -156,7 +156,9 @@ public class ServerGUI extends JComponent {
}
private void f() {
- this.e.forEach(Runnable::run);
+ for (Runnable runnable : this.e) {
+ runnable.run();
+ }
}
private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})*)?[m|K]"); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/SystemUtils.java b/src/main/java/net/minecraft/server/SystemUtils.java
index aa399e7f6518ff70f2214161319170b1fc911751..a98a50923aae9c4f6c9c0f3d938e44d64f7cf77f 100644
--- a/src/main/java/net/minecraft/server/SystemUtils.java
+++ b/src/main/java/net/minecraft/server/SystemUtils.java
@@ -206,7 +206,7 @@ public class SystemUtils {
CompletableFuture<?>[] acompletablefuture = new CompletableFuture[list.size()];
CompletableFuture<Void> completablefuture = new CompletableFuture();
- list.forEach((completablefuture1) -> {
+ for (CompletableFuture<? extends V> completablefuture1 : list) {
int i = list1.size();
list1.add(null); // Paper - decompile fix
@@ -218,7 +218,7 @@ public class SystemUtils {
}
});
- });
+ }
return CompletableFuture.allOf(acompletablefuture).applyToEither(completablefuture, (ovoid) -> {
return list1;
});
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
index 9780ee07b2b0eed0cab5057ca02a48b244e3767b..f8894ed686727ff4c729ef7fecf9889c87d255d2 100644
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java
@@ -1,10 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Lists;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+
+import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -23,7 +21,18 @@ import com.destroystokyo.paper.event.block.BeaconEffectEvent;
public class TileEntityBeacon extends TileEntity implements ITileInventory, ITickable {
public static final MobEffectList[][] a = new MobEffectList[][]{{MobEffects.FASTER_MOVEMENT, MobEffects.FASTER_DIG}, {MobEffects.RESISTANCE, MobEffects.JUMP}, {MobEffects.INCREASE_DAMAGE}, {MobEffects.REGENERATION}};
- private static final Set<MobEffectList> b = (Set) Arrays.stream(TileEntityBeacon.a).flatMap(Arrays::stream).collect(Collectors.toSet());
+ private static final Set<MobEffectList> b;
+
+ static {
+ Set<MobEffectList> set = new HashSet<>();
+ for (MobEffectList[] mobEffectLists : TileEntityBeacon.a) {
+ for (MobEffectList mobEffectList : mobEffectLists) {
+ set.add(mobEffectList);
+ }
+ }
+ b = (Set) set;
+ }
+
private List<TileEntityBeacon.BeaconColorTracker> c = Lists.newArrayList();
private List<TileEntityBeacon.BeaconColorTracker> g = Lists.newArrayList();
public int levels;
diff --git a/src/main/java/net/minecraft/server/TileEntityCampfire.java b/src/main/java/net/minecraft/server/TileEntityCampfire.java
index a1580b8c6dd9656f884839664440809ac98e67cd..252ff32e8c46c21682a5f140ba5a43f04984de07 100644
--- a/src/main/java/net/minecraft/server/TileEntityCampfire.java
+++ b/src/main/java/net/minecraft/server/TileEntityCampfire.java
@@ -165,7 +165,12 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
}
public Optional<RecipeCampfire> a(ItemStack itemstack) {
- return this.items.stream().noneMatch(ItemStack::isEmpty) ? Optional.empty() : this.world.getCraftingManager().craft(Recipes.CAMPFIRE_COOKING, new InventorySubcontainer(new ItemStack[]{itemstack}), this.world);
+ for (ItemStack item : this.items) {
+ if (item.isEmpty()) {
+ return this.world.getCraftingManager().craft(Recipes.CAMPFIRE_COOKING, new InventorySubcontainer(new ItemStack[]{itemstack}), this.world);
+ }
+ }
+ return Optional.empty();
}
public boolean a(ItemStack itemstack, int i) {
diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java
index 1a57ffe48fd99c7399b2bb40310b5bc88a092d00..0cdd6ea519568dbe7c832c761b4689e348c8e0cb 100644
--- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java
+++ b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java
@@ -1,5 +1,6 @@
package net.minecraft.server;
+import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import javax.annotation.Nullable;
@@ -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/VillagePlace.java b/src/main/java/net/minecraft/server/VillagePlace.java
index 5b52b380e22971ac81407f9ca501773743568745..3f20851e3122d737b68519f900c2c74c106eaaac 100644
--- a/src/main/java/net/minecraft/server/VillagePlace.java
+++ b/src/main/java/net/minecraft/server/VillagePlace.java
@@ -101,9 +101,12 @@ public class VillagePlace extends RegionFileSection<VillagePlaceSection> {
List<VillagePlaceRecord> list = (List) this.c(predicate, blockposition, i, villageplace_occupancy).collect(Collectors.toList());
Collections.shuffle(list, random);
- return list.stream().filter((villageplacerecord) -> {
- return predicate1.test(villageplacerecord.f());
- }).findFirst().map(VillagePlaceRecord::f);
+ for (VillagePlaceRecord villageplacerecord : list) {
+ if (predicate1.test(villageplacerecord.f())) {
+ return Optional.of(villageplacerecord).map(VillagePlaceRecord::f);
+ }
+ }
+ return Optional.<VillagePlaceRecord>empty().map(VillagePlaceRecord::f);
}
public boolean b(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/VillagePlaceType.java b/src/main/java/net/minecraft/server/VillagePlaceType.java
index c1f293fc98d3efb4665cfb9036f208b842fc8e36..e7fb8025739855f9028aa6104a5845f06422b17d 100644
--- a/src/main/java/net/minecraft/server/VillagePlaceType.java
+++ b/src/main/java/net/minecraft/server/VillagePlaceType.java
@@ -103,13 +103,13 @@ public class VillagePlaceType {
}
private static VillagePlaceType a(VillagePlaceType villageplacetype) {
- villageplacetype.z.forEach((iblockdata) -> {
- VillagePlaceType villageplacetype1 = (VillagePlaceType) VillagePlaceType.x.put(iblockdata, villageplacetype);
+ for (IBlockData iblockdata : villageplacetype.z) {
+ VillagePlaceType villageplacetype1 = VillagePlaceType.x.put(iblockdata, villageplacetype);
if (villageplacetype1 != null) {
- throw (IllegalStateException) SystemUtils.c(new IllegalStateException(String.format("%s is defined in too many tags", iblockdata)));
+ throw SystemUtils.c(new IllegalStateException(String.format("%s is defined in too many tags", iblockdata)));
}
- });
+ }
return villageplacetype;
}
diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java
index 5e24ce485ad40628906886d0acfaf5cfa6ec6dd6..d45fe00b3e4e8e6876b0e83576c08cf92a515446 100644
--- a/src/main/java/net/minecraft/server/VoxelShapes.java
+++ b/src/main/java/net/minecraft/server/VoxelShapes.java
@@ -162,7 +162,11 @@ public final class VoxelShapes {
}
public static VoxelShape a(VoxelShape voxelshape, VoxelShape... avoxelshape) {
- return (VoxelShape) Arrays.stream(avoxelshape).reduce(voxelshape, VoxelShapes::a);
+ VoxelShape acc = voxelshape;
+ for (VoxelShape voxelShape : avoxelshape) {
+ acc = a(acc, voxelShape);
+ }
+ return (VoxelShape) acc;
}
public static VoxelShape a(VoxelShape voxelshape, VoxelShape voxelshape1, OperatorBoolean operatorboolean) {
diff --git a/src/main/java/net/minecraft/server/WorldData.java b/src/main/java/net/minecraft/server/WorldData.java
index 95518e54d1fd7ada51df1cdc3562affccd48bfcb..e914ce414e553932b1f1b4c13c8ff4b8df692b8e 100644
--- a/src/main/java/net/minecraft/server/WorldData.java
+++ b/src/main/java/net/minecraft/server/WorldData.java
@@ -340,7 +340,10 @@ public class WorldData {
private void a(NBTTagCompound nbttagcompound, NBTTagCompound nbttagcompound1) {
NBTTagList nbttaglist = new NBTTagList();
- this.X.stream().map(NBTTagString::a).forEach(nbttaglist::add);
+ for (String s2 : this.X) {
+ NBTTagString nbtTagString = NBTTagString.a(s2);
+ nbttaglist.add(nbtTagString);
+ }
nbttagcompound.set("ServerBrands", nbttaglist);
nbttagcompound.setBoolean("WasModded", this.Y);
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
diff --git a/src/main/java/net/minecraft/server/WorldGenFeatureOceanRuin.java b/src/main/java/net/minecraft/server/WorldGenFeatureOceanRuin.java
index d8fe49462b4ce4848647c70f8eb7d6e9e9360240..d183a2fd65e24dd78ba6e8fe122690d884999d26 100644
--- a/src/main/java/net/minecraft/server/WorldGenFeatureOceanRuin.java
+++ b/src/main/java/net/minecraft/server/WorldGenFeatureOceanRuin.java
@@ -2,6 +2,7 @@ package net.minecraft.server;
import com.mojang.datafixers.Dynamic;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.function.Function;
@@ -49,9 +50,18 @@ public class WorldGenFeatureOceanRuin extends WorldGenFeatureRandomScattered<Wor
WARM("warm"), COLD("cold");
- private static final Map<String, WorldGenFeatureOceanRuin.Temperature> c = (Map) Arrays.stream(values()).collect(Collectors.toMap(WorldGenFeatureOceanRuin.Temperature::a, (worldgenfeatureoceanruin_temperature) -> {
- return worldgenfeatureoceanruin_temperature;
- }));
+ private static final Map<String, WorldGenFeatureOceanRuin.Temperature> c;
+
+ static {
+ Map<String, Temperature> map = new HashMap<>();
+ for (Temperature worldgenfeatureoceanruin_temperature : values()) {
+ if (map.put(worldgenfeatureoceanruin_temperature.a(), worldgenfeatureoceanruin_temperature) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ c = (Map) map;
+ }
+
private final String d;
private Temperature(String s) {
diff --git a/src/main/java/net/minecraft/server/WorldMap.java b/src/main/java/net/minecraft/server/WorldMap.java
index 2f1be1995d1a188da5be792abd7ac6f126332f49..bae3f216d056cb64fde49e4ca592631ea2800f59 100644
--- a/src/main/java/net/minecraft/server/WorldMap.java
+++ b/src/main/java/net/minecraft/server/WorldMap.java
@@ -10,10 +10,12 @@ import javax.annotation.Nullable;
// CraftBukkit start
import java.util.UUID;
+import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.map.CraftMapView;
import org.bukkit.craftbukkit.util.CraftChatMessage;
+import org.bukkit.entity.Player;
// CraftBukkit end
public class WorldMap extends PersistentBase {
@@ -432,13 +434,15 @@ public class WorldMap extends PersistentBase {
// Paper start
private void addSeenPlayers(java.util.Collection<MapIcon> icons) {
org.bukkit.entity.Player player = (org.bukkit.entity.Player) trackee.getBukkitEntity();
- WorldMap.this.decorations.forEach((name, mapIcon) -> {
- // If this cursor is for a player check visibility with vanish system
- org.bukkit.entity.Player other = org.bukkit.Bukkit.getPlayerExact(name); // Spigot
+ for (Map.Entry<String, MapIcon> entry : WorldMap.this.decorations.entrySet()) {
+ String name = entry.getKey();
+ MapIcon mapIcon = entry.getValue();
+// If this cursor is for a player check visibility with vanish system
+ Player other = Bukkit.getPlayerExact(name); // Spigot
if (other == null || player.canSee(other)) {
icons.add(mapIcon);
}
- });
+ }
}
private boolean shouldUseVanillaMap() {
return mapView.getRenderers().size() == 1 && mapView.getRenderers().get(0).getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 1a6fa98a79910c74f121ca844424b3df0ab2e20a..cbfe1550c701c457628470cb9d46864763ccb5e9 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -22,15 +22,7 @@ import java.io.BufferedWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Queue;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
import java.util.concurrent.Executor;
import java.util.function.BooleanSupplier;
import java.util.function.Predicate;
@@ -845,27 +837,35 @@ public class WorldServer extends World {
this.getWorldData().setDifficulty(EnumDifficulty.HARD);
}
- if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> {
- return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping; // CraftBukkit
- })) {
- // CraftBukkit start
- long l = this.worldData.getDayTime() + 24000L;
- TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime());
- if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) {
- getServer().getPluginManager().callEvent(event);
- if (!event.isCancelled()) {
- this.setDayTime(this.getDayTime() + event.getSkipAmount());
+ if (this.everyoneSleeping) {
+ // CraftBukkit
+ boolean b = true;
+ for (EntityPlayer entityplayer : this.players) {
+ if (!entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping) {
+ b = false;
+ break;
}
-
}
+ if (b) {
+ // CraftBukkit start
+ long l = this.worldData.getDayTime() + 24000L;
+ TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime());
+ if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) {
+ getServer().getPluginManager().callEvent(event);
+ if (!event.isCancelled()) {
+ this.setDayTime(this.getDayTime() + event.getSkipAmount());
+ }
- if (!event.isCancelled()) {
- this.everyoneSleeping = false;
- this.wakeupPlayers();
- }
- // CraftBukkit end
- if (this.getGameRules().getBoolean(GameRules.DO_WEATHER_CYCLE)) {
- this.clearWeather();
+ }
+
+ if (!event.isCancelled()) {
+ this.everyoneSleeping = false;
+ this.wakeupPlayers();
+ }
+ // CraftBukkit end
+ if (this.getGameRules().getBoolean(GameRules.DO_WEATHER_CYCLE)) {
+ this.clearWeather();
+ }
}
}
@@ -1011,9 +1011,15 @@ public class WorldServer extends World {
}
private void wakeupPlayers() {
- (this.players.stream().filter(EntityLiving::isSleeping).collect(Collectors.toList())).forEach((entityplayer) -> { // CraftBukkit - decompile error
+ List<EntityPlayer> list = new ArrayList<>();
+ for (EntityPlayer player : this.players) {
+ if (player.isSleeping()) {
+ list.add(player);
+ }
+ }// CraftBukkit - decompile error
+ for (EntityPlayer entityplayer : (list)) {
entityplayer.wakeup(false, false);
- });
+ }
}
// Paper start - optimise random block ticking
@@ -1846,25 +1852,21 @@ public class WorldServer extends World {
// Spigot start
if ( entity instanceof EntityHuman )
{
- this.getMinecraftServer().worldServer.values().stream().map( WorldServer::getWorldPersistentData ).forEach( (worldData) ->
- {
- for (Object o : worldData.data.values() )
- {
- if ( o instanceof WorldMap )
- {
+ for (WorldServer worldServer : this.getMinecraftServer().worldServer.values()) {
+ WorldPersistentData worldPersistentData = worldServer.getWorldPersistentData();
+ for (Object o : worldPersistentData.data.values()) {
+ if (o instanceof WorldMap) {
WorldMap map = (WorldMap) o;
- map.humans.remove( (EntityHuman) entity );
- for ( Iterator<WorldMap.WorldMapHumanTracker> iter = (Iterator<WorldMap.WorldMapHumanTracker>) map.i.iterator(); iter.hasNext(); )
- {
- if ( iter.next().trackee == entity )
- {
+ map.humans.remove(entity);
+ for (Iterator<WorldMap.WorldMapHumanTracker> iter = map.i.iterator(); iter.hasNext(); ) {
+ if (iter.next().trackee == entity) {
map.decorations.remove(entity.getDisplayName().getString()); // Paper
iter.remove();
}
}
}
}
- } );
+ }
}
// Spigot end
// Spigot Start
@@ -2356,12 +2358,12 @@ public class WorldServer extends World {
chunkproviderserver.addTicket(TicketType.START, new ChunkCoordIntPair(spawn.add(-radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32
}
- MCUtil.getSpiralOutChunks(spawn, radiusInBlocks >> 4).forEach(pair -> {
+ for (ChunkCoordIntPair pair : MCUtil.getSpiralOutChunks(spawn, radiusInBlocks >> 4)) {
getChunkProvider().getChunkAtAsynchronously(pair.x, pair.z, true, false).exceptionally((ex) -> {
ex.printStackTrace();
return null;
});
- });
+ }
}
public void removeTicketsForSpawn(int radiusInBlocks, BlockPosition spawn) {
// In order to respect vanilla behavior, which is ensuring everything but the spawn border can tick, we added tickets
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7f952a860c524aafea7094048a102478d8c2beec..2d7a4c88f18cd655cbe15e25819ca43debecd0a9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -26,18 +26,7 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -2232,9 +2221,11 @@ public final class CraftServer implements Server {
@Override
public boolean reloadCommandAliases() {
- Set<String> removals = getCommandAliases().keySet().stream()
- .map(key -> key.toLowerCase(java.util.Locale.ENGLISH))
- .collect(java.util.stream.Collectors.toSet());
+ Set<String> removals = new HashSet<>();
+ for (String key : getCommandAliases().keySet()) {
+ String s = key.toLowerCase(Locale.ENGLISH);
+ removals.add(s);
+ }
getCommandMap().getKnownCommands().keySet().removeIf(removals::contains);
File file = getCommandsConfigFile();
try {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 32d4aa0f470e6b005fd96f3bea1bcb0cf6711966..e8f9f677a706c5c8ff6cd6b946bbb4bc508b4162 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -456,12 +456,28 @@ public class CraftWorld implements World {
if (Thread.currentThread() != world.getMinecraftWorld().serverThread) {
synchronized (world.getChunkProvider().playerChunkMap.visibleChunks) {
Long2ObjectLinkedOpenHashMap<PlayerChunk> chunks = world.getChunkProvider().playerChunkMap.visibleChunks;
- return chunks.values().stream().map(PlayerChunk::getFullChunk).filter(Objects::nonNull).map(net.minecraft.server.Chunk::getBukkitChunk).toArray(Chunk[]::new);
+ List<Chunk> list = new ArrayList<>();
+ for (PlayerChunk playerChunk : chunks.values()) {
+ net.minecraft.server.Chunk fullChunk = playerChunk.getFullChunk();
+ if (fullChunk != null) {
+ Chunk bukkitChunk = fullChunk.getBukkitChunk();
+ list.add(bukkitChunk);
+ }
+ }
+ return list.toArray(new Chunk[0]);
}
}
// Paper end
Long2ObjectLinkedOpenHashMap<PlayerChunk> chunks = world.getChunkProvider().playerChunkMap.visibleChunks;
- return chunks.values().stream().map(PlayerChunk::getFullChunk).filter(Objects::nonNull).map(net.minecraft.server.Chunk::getBukkitChunk).toArray(Chunk[]::new);
+ List<Chunk> list = new ArrayList<>();
+ for (PlayerChunk playerChunk : chunks.values()) {
+ net.minecraft.server.Chunk fullChunk = playerChunk.getFullChunk();
+ if (fullChunk != null) {
+ Chunk bukkitChunk = fullChunk.getBukkitChunk();
+ list.add(bukkitChunk);
+ }
+ }
+ return list.toArray(new Chunk[0]);
}
@Override
@@ -2465,7 +2481,12 @@ public class CraftWorld implements World {
@Override
public List<Raid> getRaids() {
PersistentRaid persistentRaid = world.getPersistentRaid();
- return persistentRaid.raids.values().stream().map(CraftRaid::new).collect(Collectors.toList());
+ List<Raid> list = new ArrayList<>();
+ for (net.minecraft.server.Raid raid : persistentRaid.raids.values()) {
+ CraftRaid craftRaid = new CraftRaid(raid);
+ list.add(craftRaid);
+ }
+ return list;
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index 0ba3d963c5d434f58ff26d68f28177ca2a326fcc..74766fcf3770a7757b12826838a366807ffc72bd 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -1,6 +1,8 @@
package org.bukkit.craftbukkit.block;
import com.google.common.base.Preconditions;
+
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -661,8 +663,12 @@ public class CraftBlock implements Block {
// Modelled off EntityHuman#hasBlock
if (item == null || iblockdata.getMaterial().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();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index adba4a8a2f4dd22fd3b6090661cf3598cc30c5a4..07b3f148f61948f9628a98aab74e37cc6a0e173d 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -10,6 +10,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.stream.Collectors;
import net.minecraft.server.ArgumentBlock;
import net.minecraft.server.Block;
@@ -269,7 +270,12 @@ public class CraftBlockData implements BlockData {
if (!states.isEmpty()) {
stateString.append('[');
- stateString.append(states.entrySet().stream().map(BlockDataAbstract.STATE_TO_VALUE).collect(Collectors.joining(",")));
+ StringJoiner joiner = new StringJoiner(",");
+ for (Map.Entry<IBlockState<?>, Comparable<?>> iBlockStateComparableEntry : states.entrySet()) {
+ String s = BlockDataAbstract.STATE_TO_VALUE.apply(iBlockStateComparableEntry);
+ joiner.add(s);
+ }
+ stateString.append(joiner.toString());
stateString.append(']');
}
diff --git a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java
index a51202ed53d8ba99b364e8797fe32fa8aeb4fc87..f276cdcaacc2fd2650a2ddccbbf190421a20c2bd 100644
--- a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java
+++ b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java
@@ -1,5 +1,6 @@
package org.bukkit.craftbukkit.command;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutionException;
@@ -56,7 +57,12 @@ public class ConsoleCommandCompleter implements Completer {
}
if (!completions.isEmpty()) {
- candidates.addAll(completions.stream().map(Candidate::new).collect(java.util.stream.Collectors.toList()));
+ List<Candidate> list = new ArrayList<>();
+ for (String completion : completions) {
+ Candidate candidate = new Candidate(completion);
+ list.add(candidate);
+ }
+ candidates.addAll(list);
}
return;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
index f34461460049a80c5ff57805927053a36a4db426..3c610a889f371f54b0f456266d14538fc3ff03ac 100644
--- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
+++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.command;
import com.google.common.base.Joiner;
import com.mojang.brigadier.ParseResults;
+import com.mojang.brigadier.suggestion.Suggestion;
import com.mojang.brigadier.tree.CommandNode;
import java.util.ArrayList;
import java.util.Collections;
@@ -57,7 +58,9 @@ public final class VanillaCommandWrapper extends BukkitCommand {
List<String> results = new ArrayList<>();
dispatcher.a().getCompletionSuggestions(parsed).thenAccept((suggestions) -> {
- suggestions.getList().forEach((s) -> results.add(s.getText()));
+ for (Suggestion s : suggestions.getList()) {
+ results.add(s.getText());
+ }
});
return results;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index d24a892c498d7ee58741c9358748a117f01d8a8d..85a7406048a5d44b8e26d7949feacb7ec12c575c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
@@ -3,6 +3,8 @@ package org.bukkit.craftbukkit.entity;
import com.destroystokyo.paper.entity.villager.Reputation; // Paper
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps; // Paper
+
+import java.util.HashMap;
import java.util.Locale;
import net.minecraft.server.BlockBed;
import net.minecraft.server.BlockPosition;
@@ -142,9 +144,13 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
@Override
public Map<UUID, Reputation> getReputations() {
- return getHandle().getReputation().getReputations().entrySet()
- .stream()
- .collect(java.util.stream.Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getPaperReputation()));
+ Map<UUID, Reputation> map = new HashMap<>();
+ for (Map.Entry<UUID, net.minecraft.server.Reputation.a> entry : getHandle().getReputation().getReputations().entrySet()) {
+ if (map.put(entry.getKey(), entry.getValue().getPaperReputation()) != null) {
+ throw new IllegalStateException("Duplicate key");
+ }
+ }
+ return map;
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index a4cd6c404c2a8d526c4673695aadd001f2b4516f..10341846f022cce626e4b9446dbd488942fa0d01 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1711,7 +1711,11 @@ public class CraftEventFactory {
Entity entity = lootInfo.getContextParameter(LootContextParameters.THIS_ENTITY);
NamespacedKey key = CraftNamespacedKey.fromMinecraft(world.getHandle().getMinecraftServer().getLootTableRegistry().lootTableToKey.get(lootTable));
CraftLootTable craftLootTable = new CraftLootTable(key, lootTable);
- List<org.bukkit.inventory.ItemStack> bukkitLoot = loot.stream().map(CraftItemStack::asCraftMirror).collect(Collectors.toCollection(ArrayList::new));
+ List<org.bukkit.inventory.ItemStack> bukkitLoot = new ArrayList<>();
+ for (ItemStack itemStack : loot) {
+ CraftItemStack craftItemStack = CraftItemStack.asCraftMirror(itemStack);
+ bukkitLoot.add(craftItemStack);
+ }
LootGenerateEvent event = new LootGenerateEvent(world, (entity != null ? entity.getBukkitEntity() : null), inventory.getOwner(), craftLootTable, CraftLootTable.convertContext(lootInfo), bukkitLoot, plugin);
Bukkit.getPluginManager().callEvent(event);
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
index 706f1bd66c79dddc26794cad818679473e20382f..318365a4108c7d6ebd7f78145f0ee57098d48936 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -21,20 +21,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator; // Paper
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.TreeMap; // Paper
+import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nonnull;
@@ -53,6 +40,7 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang3.EnumUtils;
import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.block.data.BlockData;
@@ -89,7 +77,6 @@ import static org.spigotmc.ValidateUtils.*;
// Paper start
import com.destroystokyo.paper.Namespaced;
import com.destroystokyo.paper.NamespacedTag;
-import java.util.Collections;
// Paper end
/**
@@ -735,17 +722,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
}
// Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values
if (hasPlaceableKeys()) {
- List<String> items = this.placeableKeys.stream()
- .map(this::serializeNamespaced)
- .collect(java.util.stream.Collectors.toList());
+ List<String> items = new ArrayList<>();
+ for (Namespaced placeableKey : this.placeableKeys) {
+ String s = serializeNamespaced(placeableKey);
+ items.add(s);
+ }
itemTag.set(CAN_PLACE_ON.NBT, createNonComponentStringList(items));
}
if (hasDestroyableKeys()) {
- List<String> items = this.destroyableKeys.stream()
- .map(this::serializeNamespaced)
- .collect(java.util.stream.Collectors.toList());
+ List<String> items = new ArrayList<>();
+ for (Namespaced destroyableKey : this.destroyableKeys) {
+ String s = serializeNamespaced(destroyableKey);
+ items.add(s);
+ }
itemTag.set(CAN_DESTROY.NBT, createNonComponentStringList(items));
}
@@ -1398,17 +1389,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
// Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values
if (hasPlaceableKeys()) {
- List<String> cerealPlaceable = this.placeableKeys.stream()
- .map(this::serializeNamespaced)
- .collect(java.util.stream.Collectors.toList());
+ List<String> cerealPlaceable = new ArrayList<>();
+ for (Namespaced placeableKey : this.placeableKeys) {
+ String s = serializeNamespaced(placeableKey);
+ cerealPlaceable.add(s);
+ }
builder.put(CAN_PLACE_ON.BUKKIT, cerealPlaceable);
}
if (hasDestroyableKeys()) {
- List<String> cerealDestroyable = this.destroyableKeys.stream()
- .map(this::serializeNamespaced)
- .collect(java.util.stream.Collectors.toList());
+ List<String> cerealDestroyable = new ArrayList<>();
+ for (Namespaced destroyableKey : this.destroyableKeys) {
+ String s = serializeNamespaced(destroyableKey);
+ cerealDestroyable.add(s);
+ }
builder.put(CAN_DESTROY.BUKKIT, cerealDestroyable);
}
@@ -1669,12 +1664,19 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@Deprecated
private void legacyClearAndReplaceKeys(Collection<Namespaced> toUpdate, Collection<Material> beingSet) {
- if (beingSet.stream().anyMatch(Material::isLegacy)) {
- throw new IllegalArgumentException("Set must not contain any legacy materials!");
+ for (Material material1 : beingSet) {
+ if (material1.isLegacy()) {
+ throw new IllegalArgumentException("Set must not contain any legacy materials!");
+ }
}
toUpdate.clear();
- toUpdate.addAll(beingSet.stream().map(Material::getKey).collect(java.util.stream.Collectors.toSet()));
+ Set<NamespacedKey> set = new HashSet<>();
+ for (Material material : beingSet) {
+ NamespacedKey key = material.getKey();
+ set.add(key);
+ }
+ toUpdate.addAll(set);
}
@Deprecated
diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java
index 2fe308d91b3ae4274269b0c6001eead824db9d32..f52c6513588716940bcf72970c381c0e87e3be28 100644
--- a/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java
+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java
@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit.tag;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import net.minecraft.server.Block;
@@ -22,6 +23,11 @@ public class CraftBlockTag extends CraftTag<Block, Material> {
@Override
public Set<Material> getValues() {
- return Collections.unmodifiableSet(getHandle().a().stream().map((block) -> CraftMagicNumbers.getMaterial(block)).collect(Collectors.toSet()));
+ Set<Material> set = new HashSet<>();
+ for (Block block : getHandle().a()) {
+ Material material = CraftMagicNumbers.getMaterial(block);
+ set.add(material);
+ }
+ return Collections.unmodifiableSet(set);
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java
index 4a1a45257f069e1b746a1e78a584c7648ef0d3d4..b6c61b2b971e527b5a573f588be583177e50286c 100644
--- a/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java
+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java
@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit.tag;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import net.minecraft.server.Item;
@@ -22,6 +23,11 @@ public class CraftItemTag extends CraftTag<Item, Material> {
@Override
public Set<Material> getValues() {
- return Collections.unmodifiableSet(getHandle().a().stream().map((item) -> CraftMagicNumbers.getMaterial(item)).collect(Collectors.toSet()));
+ Set<Material> set = new HashSet<>();
+ for (Item item : getHandle().a()) {
+ Material material = CraftMagicNumbers.getMaterial(item);
+ set.add(material);
+ }
+ return Collections.unmodifiableSet(set);
}
}