From 7cfe9e80cf72d18cd54d3cd74a3bff2fe8c4003c Mon Sep 17 00:00:00 2001 From: DziNeIT Date: Sun, 14 Sep 2014 11:03:09 +0100 Subject: [PATCH] Lots of cleanup, including: Make full use of new Java 8 features, remove redundant casts, improve & fix JavaDocs, remove unused imports and more --- .../api/component/AbstractObserver.java | 4 ++-- .../api/component/BaseComponentOwner.java | 2 +- .../api/generator/EmptyWorldGenerator.java | 1 - .../api/generator/LayeredWorldGenerator.java | 2 -- .../flowpowered/api/geo/AreaBlockAccess.java | 4 ++-- .../api/io/bytearrayarray/BAAWrapper.java | 12 +++++------- .../io/regionfile/MappedRandomAccessFile.java | 6 +----- .../flowpowered/api/material/BlockMaterial.java | 15 +++++++++------ .../com/flowpowered/api/material/Material.java | 16 ++++++---------- .../api/material/MaterialRegistry.java | 17 +++++++++++------ .../com/flowpowered/api/material/Placeable.java | 2 +- .../api/material/block/BlockFace.java | 1 - .../api/material/block/BlockFaces.java | 6 +++--- .../api/material/block/BlockSnapshot.java | 1 - .../flowpowered/api/player/PlayerNetwork.java | 12 +++++------- .../flowpowered/api/scheduler/TaskManager.java | 2 +- .../flowpowered/api/util/SyncedMapEvent.java | 2 +- .../flowpowered/api/util/SyncedStringMap.java | 2 +- .../com/flowpowered/api/util/UnloadSavable.java | 3 +++ .../util/thread/annotation/DelayedWrite.java | 2 +- .../api/util/thread/annotation/LiveRead.java | 2 +- .../api/util/thread/annotation/LiveWrite.java | 2 +- .../util/thread/annotation/SnapshotRead.java | 2 +- .../api/util/thread/annotation/Threadsafe.java | 2 +- .../com/flowpowered/engine/FlowEngineImpl.java | 2 +- .../com/flowpowered/engine/FlowServerImpl.java | 7 ++----- .../engine/entity/EntityManager.java | 8 ++------ .../flowpowered/engine/entity/FlowPhysics.java | 2 +- .../flowpowered/engine/geo/chunk/FlowChunk.java | 4 ++-- .../engine/geo/region/FlowRegion.java | 11 +++-------- .../engine/geo/region/RegionFileManager.java | 13 ++----------- .../engine/geo/region/RegionGenerator.java | 7 +------ .../engine/geo/world/FlowServerWorld.java | 4 +--- .../flowpowered/engine/geo/world/FlowWorld.java | 4 ++-- .../engine/geo/world/FlowWorldManager.java | 16 ++++------------ .../network/codec/InputSnapshotCodec.java | 1 - .../network/handler/FlowMessageHandler.java | 2 +- .../flowpowered/engine/player/FlowPlayer.java | 3 +-- .../engine/plugins/FlowPluginManager.java | 7 +------ .../engine/scheduler/FlowTaskManager.java | 14 ++++---------- .../engine/scheduler/MainThread.java | 2 +- .../engine/scheduler/WorldThread.java | 6 +++--- .../engine/scheduler/render/RenderThread.java | 2 +- .../engine/util/FlowByteBufUtils.java | 4 ---- .../engine/util/math/ReactConverter.java | 1 - .../engine/util/thread/AsyncExecutorUtils.java | 4 ++-- .../util/thread/LoggingThreadPoolExecutor.java | 6 +++--- .../thread/snapshotable/SnapshotManager.java | 4 ++-- .../snapshotable/SnapshotableArrayList.java | 5 ++--- .../snapshotable/SnapshotableHashSet.java | 6 ++---- .../snapshotable/SnapshotableLinkedHashMap.java | 7 ++----- 51 files changed, 103 insertions(+), 169 deletions(-) diff --git a/src/main/java/com/flowpowered/api/component/AbstractObserver.java b/src/main/java/com/flowpowered/api/component/AbstractObserver.java index cd894f9..5a22859 100644 --- a/src/main/java/com/flowpowered/api/component/AbstractObserver.java +++ b/src/main/java/com/flowpowered/api/component/AbstractObserver.java @@ -53,7 +53,7 @@ public Iterator getIteratorFor(int centerX, int centerY, int centerZ) /** * Chunks currently being observed */ - protected final AtomicReference> observingChunks = new AtomicReference>(new HashSet()); + protected final AtomicReference> observingChunks = new AtomicReference<>(new HashSet<>()); protected final AtomicReference liveObserverIterator = new AtomicReference<>(NO_CHUNKS); protected final Engine engine; protected boolean observeChunksFailed = true; @@ -70,7 +70,7 @@ public class SyncDistanceChunkIterator implements ChunkIterator { public Iterator getIteratorFor(int centerX, int centerY, int centerZ) { return new OutwardIterator(centerX, centerY, centerZ, getSyncDistance()); } - }; + } /** * Returns if the owning {@link com.flowpowered.api.entity.Entity} is an observer.

Observer means the Entity can trigger network updates (such as chunk creation) within its sync distance. diff --git a/src/main/java/com/flowpowered/api/component/BaseComponentOwner.java b/src/main/java/com/flowpowered/api/component/BaseComponentOwner.java index e783ac4..4899760 100644 --- a/src/main/java/com/flowpowered/api/component/BaseComponentOwner.java +++ b/src/main/java/com/flowpowered/api/component/BaseComponentOwner.java @@ -211,7 +211,7 @@ public Collection getAll(Class type) { @SuppressWarnings ("unchecked") @Override - public Collection getAllOfType(Class type) { + public Collection getAllOfType(Class type) { Preconditions.checkNotNull(type); synchronized (components) { ArrayList matches = new ArrayList<>(); diff --git a/src/main/java/com/flowpowered/api/generator/EmptyWorldGenerator.java b/src/main/java/com/flowpowered/api/generator/EmptyWorldGenerator.java index c9251ee..b1159af 100644 --- a/src/main/java/com/flowpowered/api/generator/EmptyWorldGenerator.java +++ b/src/main/java/com/flowpowered/api/generator/EmptyWorldGenerator.java @@ -24,7 +24,6 @@ package com.flowpowered.api.generator; import com.flowpowered.api.geo.World; -import com.flowpowered.api.geo.cuboid.Chunk; import com.flowpowered.api.material.BlockMaterial; import com.flowpowered.api.util.cuboid.CuboidBlockMaterialBuffer; diff --git a/src/main/java/com/flowpowered/api/generator/LayeredWorldGenerator.java b/src/main/java/com/flowpowered/api/generator/LayeredWorldGenerator.java index 368b1c3..d66ba3a 100644 --- a/src/main/java/com/flowpowered/api/generator/LayeredWorldGenerator.java +++ b/src/main/java/com/flowpowered/api/generator/LayeredWorldGenerator.java @@ -24,12 +24,10 @@ package com.flowpowered.api.generator; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import com.flowpowered.api.geo.World; -import com.flowpowered.api.geo.cuboid.Chunk; import com.flowpowered.api.material.BlockMaterial; import com.flowpowered.api.util.cuboid.CuboidBlockMaterialBuffer; diff --git a/src/main/java/com/flowpowered/api/geo/AreaBlockAccess.java b/src/main/java/com/flowpowered/api/geo/AreaBlockAccess.java index 1fe6306..2b82f74 100644 --- a/src/main/java/com/flowpowered/api/geo/AreaBlockAccess.java +++ b/src/main/java/com/flowpowered/api/geo/AreaBlockAccess.java @@ -100,7 +100,7 @@ public interface AreaBlockAccess extends AreaBlockSource { * @param cause of the change, or null if non-specific cause * @return the old data for the block */ - public short clearBlockDataBits(int x, int y, int z, int bits, Cause source); + public short clearBlockDataBits(int x, int y, int z, int bits, Cause cause); /** * Gets the data field from the block at (x, y, z)

field = (data & bits) >> (shift)

The shift value used shifts the least significant non-zero bit of bits to the LSB position @@ -136,7 +136,7 @@ public interface AreaBlockAccess extends AreaBlockSource { * @param cause of the change, or null if non-specific cause * @return the old value of the field */ - public int setBlockDataField(int x, int y, int z, int bits, int value, Cause source); + public int setBlockDataField(int x, int y, int z, int bits, int value, Cause cause); /** * Adds a value to the data field for the block at (x, y, z). This is the reverse operation to the getBlockDataField method.

newData = (((oldData + (value << shift)) & bits) | (oldData & diff --git a/src/main/java/com/flowpowered/api/io/bytearrayarray/BAAWrapper.java b/src/main/java/com/flowpowered/api/io/bytearrayarray/BAAWrapper.java index 99da9ee..c940cb6 100644 --- a/src/main/java/com/flowpowered/api/io/bytearrayarray/BAAWrapper.java +++ b/src/main/java/com/flowpowered/api/io/bytearrayarray/BAAWrapper.java @@ -50,7 +50,7 @@ public void timeoutCheck() { if (baa != null) { try { baa.closeIfTimedOut(); - } catch (IOException ioe) { + } catch (IOException ignore) { } if (baa.isClosed()) { baaRef.compareAndSet(baa, null); @@ -73,7 +73,7 @@ public boolean attemptClose() { baaRef.compareAndSet(baa, null); } return success; - } catch (IOException ioe) { + } catch (IOException ignore) { } } return true; @@ -96,8 +96,7 @@ public boolean inputStreamExists(int i) { } try { return baa.exists(i); - } catch (BAAClosedException e) { - continue; + } catch (BAAClosedException ignore) { } catch (IOException e) { return false; } @@ -122,8 +121,7 @@ public boolean delete(int i) { try { baa.delete(i); return true; - } catch (BAAClosedException e) { - continue; + } catch (BAAClosedException ignore) { } catch (IOException e) { return false; } @@ -218,7 +216,7 @@ private ByteArrayArray getByteArrayArray() { if (count > 10) { try { Thread.sleep(1); - } catch (InterruptedException e) { + } catch (InterruptedException ignore) { } } else if (count > 0) { Thread.yield(); diff --git a/src/main/java/com/flowpowered/api/io/regionfile/MappedRandomAccessFile.java b/src/main/java/com/flowpowered/api/io/regionfile/MappedRandomAccessFile.java index 4b0a5b6..06958ed 100644 --- a/src/main/java/com/flowpowered/api/io/regionfile/MappedRandomAccessFile.java +++ b/src/main/java/com/flowpowered/api/io/regionfile/MappedRandomAccessFile.java @@ -69,11 +69,7 @@ public long length() throws IOException { } public void close() throws IOException { - for (MappedByteBuffer m : pages) { - if (m != null) { - m.force(); - } - } + pages.stream().filter(m -> m != null).forEach(MappedByteBuffer::force); lock.release(); file.close(); } diff --git a/src/main/java/com/flowpowered/api/material/BlockMaterial.java b/src/main/java/com/flowpowered/api/material/BlockMaterial.java index 0e98b0d..5c381e1 100644 --- a/src/main/java/com/flowpowered/api/material/BlockMaterial.java +++ b/src/main/java/com/flowpowered/api/material/BlockMaterial.java @@ -259,7 +259,6 @@ public boolean hasPhysics() { * * @param oldMaterial the previous material, or null if the update was not due to a material change * @param block that got updated - * @return true if the block was updated */ public void onUpdate(BlockMaterial oldMaterial, Block block) { } @@ -308,7 +307,6 @@ public ByteBitSet getOcclusion() { /** * Sets the occludes faces of this Block Material
Occluded faces do not let light though and require rendering behind it at those faces * - * @param data of this Block Material * @param faces to make this Block Material occlude * @return this Block Material */ @@ -349,7 +347,7 @@ public void onPlacement(Block block, short data, BlockFace against, Vector3f cli } /** - * Checks the block to see if it can be created at that position
Orientation-specific checks are performed in the {@link #canPlace(com.flowpowered.api.geo.cuboid.Block, short, com.flowpowered.api.material.block.BlockFace, com.flowpowered.math.vector.Vector3f, boolean, com.flowpowered.api.event.Cause)} method
Use this method to see if creation is possible at a + * Checks the block to see if it can be created at that position
Orientation-specific checks are performed in the {@link #canPlace(Block, short, BlockFace, Vector3f, boolean, Cause)} method
Use this method to see if creation is possible at a * given position when not placed * * @param block this Block Material should be created in @@ -362,7 +360,7 @@ public boolean canCreate(Block block, short data, Cause cause) { } /** - * Creates this Block Material at a block in the world
Orientation-specific changes are performed in the {@link #onPlacement(com.flowpowered.api.geo.cuboid.Block, short, com.flowpowered.api.material.block.BlockFace, com.flowpowered.math.vector.Vector3f, boolean, com.flowpowered.api.event.Cause)} method
Use this method to create the block at a given position + * Creates this Block Material at a block in the world
Orientation-specific changes are performed in the {@link #onPlacement(Block, short, BlockFace, Vector3f, boolean, Cause)} method
Use this method to create the block at a given position * when not placed * * @param block to create this Block Material in @@ -411,9 +409,9 @@ public boolean isCompatibleWith(BlockMaterial m) { } /** - * Helper method to create a MaterialCause. + * Helper method to create a Cause of generic type BlockMaterial. * - * Same as using new MaterialCause(material, block) + * Same as using new Cause(material, block) * * @param block location of the event * @return cause @@ -422,6 +420,11 @@ public Cause toCause(Block block) { return new MaterialCause<>(this, block); } + /** + * Gets a {@link Set} of all {@link BlockComponent}s attached to this BlockMaterial. + * + * @return all attached Block Components + */ public Set> getComponents() { return components; } diff --git a/src/main/java/com/flowpowered/api/material/Material.java b/src/main/java/com/flowpowered/api/material/Material.java index 1a72d70..7d1c50b 100644 --- a/src/main/java/com/flowpowered/api/material/Material.java +++ b/src/main/java/com/flowpowered/api/material/Material.java @@ -168,16 +168,16 @@ public final Material[] getSubMaterials() { if (submaterialsDirty) { int materialCount = 0; Material[] sm = subMaterials.get(); - for (int i = 0; i < sm.length; i++) { - if (sm[i] != null) { + for (Material aSm : sm) { + if (aSm != null) { materialCount++; } } Material[] newSubmaterials = new Material[materialCount]; materialCount = 0; - for (int i = 0; i < sm.length; i++) { - if (sm[i] != null) { - newSubmaterials[materialCount++] = sm[i]; + for (Material aSm : sm) { + if (aSm != null) { + newSubmaterials[materialCount++] = aSm; } } this.submaterialsContiguous = newSubmaterials; @@ -332,11 +332,7 @@ public boolean isMaterial(Material... materials) { @Override public boolean equals(Object other) { - if (other instanceof Material) { - return other == this; - } else { - return false; - } + return other instanceof Material && other == this; } @Override diff --git a/src/main/java/com/flowpowered/api/material/MaterialRegistry.java b/src/main/java/com/flowpowered/api/material/MaterialRegistry.java index 50d3237..b184fc1 100644 --- a/src/main/java/com/flowpowered/api/material/MaterialRegistry.java +++ b/src/main/java/com/flowpowered/api/material/MaterialRegistry.java @@ -37,7 +37,7 @@ import com.flowpowered.math.GenericMath; /** - * Handles all registered materials on the server statically. + * Statically handles all server-side registered materials. */ public abstract class MaterialRegistry { private final static ConcurrentHashMap nameLookup = new ConcurrentHashMap<>(1000); @@ -73,11 +73,16 @@ public static void setupClient() { if (setup) { throw new IllegalStateException("Can not setup material registry twice!"); } - materialRegistry = SyncedStringMap.create(null, new MemoryStore(), 1, Short.MAX_VALUE, Material.class.getName()); + materialRegistry = SyncedStringMap.create(null, new MemoryStore<>(), 1, Short.MAX_VALUE, Material.class.getName()); setup = true; } + /** + * Checks whether the MaterialRegistry has been set up. If this returns {@code true}, further attempts to set up the registry will result in {@link IllegalStateException}. + * + * @return whether the MaterialRegistry has been set up + */ public static boolean isSetup() { return setup; } @@ -172,7 +177,7 @@ public static Material get(BlockFullState state) { /** * Gets the material for the given packed full state * - * @param state the full state of the block + * @param packedState the packed state of the block * @return Material of the id */ public static BlockMaterial get(int packedState) { @@ -195,9 +200,9 @@ public static BlockMaterial get(int packedState) { public static Material[] values() { //TODO: This is wrong, need to count # of registered materials HashSet set = new HashSet<>(1000); - for (int i = 0; i < materialLookup.length; i++) { - if (materialLookup[i].get() != null) { - set.add(materialLookup[i].get()[0]); + for (AtomicReference aMaterialLookup : materialLookup) { + if (aMaterialLookup.get() != null) { + set.add(aMaterialLookup.get()[0]); } } return set.toArray(new Material[0]); diff --git a/src/main/java/com/flowpowered/api/material/Placeable.java b/src/main/java/com/flowpowered/api/material/Placeable.java index c3bf36f..8f7f21e 100644 --- a/src/main/java/com/flowpowered/api/material/Placeable.java +++ b/src/main/java/com/flowpowered/api/material/Placeable.java @@ -34,7 +34,7 @@ */ public interface Placeable { /** - * Called when this block is about to be placed (before {@link #onPlacement(Block, short, BlockFace, boolean)}), checking if placement is allowed or not. + * Called when this block is about to be placed (before {@link #onPlacement(Block, short, BlockFace, Vector3f, boolean, Cause)}), checking if placement is allowed or not. * * @param block to place * @param data block data to use during placement diff --git a/src/main/java/com/flowpowered/api/material/block/BlockFace.java b/src/main/java/com/flowpowered/api/material/block/BlockFace.java index 65fce82..6d27f77 100644 --- a/src/main/java/com/flowpowered/api/material/block/BlockFace.java +++ b/src/main/java/com/flowpowered/api/material/block/BlockFace.java @@ -29,7 +29,6 @@ import gnu.trove.map.hash.TIntObjectHashMap; import com.flowpowered.math.imaginary.Quaternionf; -import com.flowpowered.math.vector.Vector3f; import com.flowpowered.math.vector.Vector3i; /** diff --git a/src/main/java/com/flowpowered/api/material/block/BlockFaces.java b/src/main/java/com/flowpowered/api/material/block/BlockFaces.java index f962d2a..c306243 100644 --- a/src/main/java/com/flowpowered/api/material/block/BlockFaces.java +++ b/src/main/java/com/flowpowered/api/material/block/BlockFaces.java @@ -261,7 +261,7 @@ public int indexOf(BlockFace face, int def) { * * @param from the BlockFace to count * @return the face at the offset - * @see BlockFaces.previous(BlockFace from, int offset); + * @see BlockFaces#previous(BlockFace, int); */ public BlockFace previous(BlockFace from) { return previous(from, 1); @@ -273,7 +273,7 @@ public BlockFace previous(BlockFace from) { * @param from the BlockFace to count * @param offset index in this range * @return the face at the offset - * @see BlockFaces.next(BlockFace from, int offset); + * @see BlockFaces#next(BlockFace from, int offset); */ public BlockFace previous(BlockFace from, int offset) { return this.next(from, -offset); @@ -284,7 +284,7 @@ public BlockFace previous(BlockFace from, int offset) { * * @param from the BlockFace to count * @return the face at the offset - * @see BlockFaces.next(BlockFace from, int offset); + * @see BlockFaces#next(BlockFace, int); */ public BlockFace next(BlockFace from) { return next(from, 1); diff --git a/src/main/java/com/flowpowered/api/material/block/BlockSnapshot.java b/src/main/java/com/flowpowered/api/material/block/BlockSnapshot.java index 884a6f2..746599a 100644 --- a/src/main/java/com/flowpowered/api/material/block/BlockSnapshot.java +++ b/src/main/java/com/flowpowered/api/material/block/BlockSnapshot.java @@ -23,7 +23,6 @@ */ package com.flowpowered.api.material.block; -import com.flowpowered.api.geo.World; import com.flowpowered.api.geo.WorldManager; import com.flowpowered.api.geo.cuboid.Block; import com.flowpowered.api.geo.reference.WorldReference; diff --git a/src/main/java/com/flowpowered/api/player/PlayerNetwork.java b/src/main/java/com/flowpowered/api/player/PlayerNetwork.java index 38c0edc..2a47c44 100644 --- a/src/main/java/com/flowpowered/api/player/PlayerNetwork.java +++ b/src/main/java/com/flowpowered/api/player/PlayerNetwork.java @@ -28,6 +28,7 @@ import java.util.LinkedHashSet; import java.util.Set; import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; import com.flowpowered.api.Client; import com.flowpowered.api.geo.LoadOption; @@ -43,7 +44,7 @@ import com.flowpowered.networking.session.Session; /** - * The networking behind {@link org.spout.api.entity.Player}s. This component holds the {@link Session} which is the connection the Player has to the server. + * The networking behind {@link Player}s. This component holds the {@link Session} which is the connection the Player has to the server. * This class also syncs *loaded* chunks to the client. It makes no attempt to load or generate chunks. */ public class PlayerNetwork { @@ -92,9 +93,8 @@ public void setRepositionManager(RepositionManager rm) { } public void addChunks(Set chunks) { - for (Chunk chunk : chunks) { - chunkSendQueue.add(new ChunkReference(chunk)); - } + chunkSendQueue.addAll(chunks.stream().map(ChunkReference::new).collect( + Collectors.toList())); } public void removeChunks(Set toRemove) { @@ -111,9 +111,7 @@ public void preSnapshotRun(Transform transform) { } // We want to free all chunks first - for (ChunkReference ref : chunkFreeQueue) { - freeChunk(ref); - } + chunkFreeQueue.forEach(this::freeChunk); chunkFreeQueue.clear(); // We will sync old chunks, but not new ones diff --git a/src/main/java/com/flowpowered/api/scheduler/TaskManager.java b/src/main/java/com/flowpowered/api/scheduler/TaskManager.java index d8c62a5..bf0937f 100644 --- a/src/main/java/com/flowpowered/api/scheduler/TaskManager.java +++ b/src/main/java/com/flowpowered/api/scheduler/TaskManager.java @@ -96,7 +96,7 @@ public interface TaskManager { * @param task the task to execute * @param delay the delay, in ms, before the task starts * @param period the repeat period, in ms, of the task, or <= 0 to indicate a single shot task - * @return + * @return the {@link Task} object for the newly scheduled task */ public Task runTaskTimerAsynchronously(Object owner, Runnable task, long delay, long period); diff --git a/src/main/java/com/flowpowered/api/util/SyncedMapEvent.java b/src/main/java/com/flowpowered/api/util/SyncedMapEvent.java index 32adf15..d268739 100644 --- a/src/main/java/com/flowpowered/api/util/SyncedMapEvent.java +++ b/src/main/java/com/flowpowered/api/util/SyncedMapEvent.java @@ -31,7 +31,7 @@ import com.flowpowered.events.object.ObjectEvent; /** - * Event called when modifications occur on a StringMap + * Event called when modifications occur on a SyncedStringMap */ public class SyncedMapEvent extends ObjectEvent { public static enum Action { diff --git a/src/main/java/com/flowpowered/api/util/SyncedStringMap.java b/src/main/java/com/flowpowered/api/util/SyncedStringMap.java index 0e227aa..a92009d 100644 --- a/src/main/java/com/flowpowered/api/util/SyncedStringMap.java +++ b/src/main/java/com/flowpowered/api/util/SyncedStringMap.java @@ -106,7 +106,7 @@ public void handleUpdate(SyncedMapEvent message) { @Override public void clear() { super.clear(); - callEvent(new SyncedMapEvent(this, SyncedMapEvent.Action.SET, new ArrayList>())); + callEvent(new SyncedMapEvent(this, SyncedMapEvent.Action.SET, new ArrayList<>())); } public int getId() { diff --git a/src/main/java/com/flowpowered/api/util/UnloadSavable.java b/src/main/java/com/flowpowered/api/util/UnloadSavable.java index 802c477..8f0be00 100644 --- a/src/main/java/com/flowpowered/api/util/UnloadSavable.java +++ b/src/main/java/com/flowpowered/api/util/UnloadSavable.java @@ -23,6 +23,9 @@ */ package com.flowpowered.api.util; +/** + * Represents something which can be unloaded and saved within the engine. + */ public interface UnloadSavable { /** * Performs the necessary tasks to unload this object. diff --git a/src/main/java/com/flowpowered/api/util/thread/annotation/DelayedWrite.java b/src/main/java/com/flowpowered/api/util/thread/annotation/DelayedWrite.java index e8fdbbd..7746a46 100644 --- a/src/main/java/com/flowpowered/api/util/thread/annotation/DelayedWrite.java +++ b/src/main/java/com/flowpowered/api/util/thread/annotation/DelayedWrite.java @@ -30,7 +30,7 @@ @Documented @Retention (value = RetentionPolicy.RUNTIME) public @interface DelayedWrite { - public String author() default "SpoutDev"; + public String author() default "Flow Dev"; public String version() default "1.0"; diff --git a/src/main/java/com/flowpowered/api/util/thread/annotation/LiveRead.java b/src/main/java/com/flowpowered/api/util/thread/annotation/LiveRead.java index 2a697b0..3d9b0a0 100644 --- a/src/main/java/com/flowpowered/api/util/thread/annotation/LiveRead.java +++ b/src/main/java/com/flowpowered/api/util/thread/annotation/LiveRead.java @@ -24,7 +24,7 @@ package com.flowpowered.api.util.thread.annotation; public @interface LiveRead { - public String author() default "SpoutDev"; + public String author() default "Flow Dev"; public String version() default "1.0"; diff --git a/src/main/java/com/flowpowered/api/util/thread/annotation/LiveWrite.java b/src/main/java/com/flowpowered/api/util/thread/annotation/LiveWrite.java index 7127009..1b1428a 100644 --- a/src/main/java/com/flowpowered/api/util/thread/annotation/LiveWrite.java +++ b/src/main/java/com/flowpowered/api/util/thread/annotation/LiveWrite.java @@ -24,7 +24,7 @@ package com.flowpowered.api.util.thread.annotation; public @interface LiveWrite { - public String author() default "SpoutDev"; + public String author() default "Flow Dev"; public String version() default "1.0"; diff --git a/src/main/java/com/flowpowered/api/util/thread/annotation/SnapshotRead.java b/src/main/java/com/flowpowered/api/util/thread/annotation/SnapshotRead.java index ef85887..e4d1590 100644 --- a/src/main/java/com/flowpowered/api/util/thread/annotation/SnapshotRead.java +++ b/src/main/java/com/flowpowered/api/util/thread/annotation/SnapshotRead.java @@ -30,7 +30,7 @@ @Documented @Retention (value = RetentionPolicy.RUNTIME) public @interface SnapshotRead { - public String author() default "SpoutDev"; + public String author() default "Flow Dev"; public String version() default "1.0"; diff --git a/src/main/java/com/flowpowered/api/util/thread/annotation/Threadsafe.java b/src/main/java/com/flowpowered/api/util/thread/annotation/Threadsafe.java index 4aa22a5..5c2b623 100644 --- a/src/main/java/com/flowpowered/api/util/thread/annotation/Threadsafe.java +++ b/src/main/java/com/flowpowered/api/util/thread/annotation/Threadsafe.java @@ -24,7 +24,7 @@ package com.flowpowered.api.util.thread.annotation; public @interface Threadsafe { - public String author() default "SpoutDev"; + public String author() default "Flow Dev"; public String version() default "1.0"; diff --git a/src/main/java/com/flowpowered/engine/FlowEngineImpl.java b/src/main/java/com/flowpowered/engine/FlowEngineImpl.java index b286577..65fc186 100644 --- a/src/main/java/com/flowpowered/engine/FlowEngineImpl.java +++ b/src/main/java/com/flowpowered/engine/FlowEngineImpl.java @@ -94,7 +94,7 @@ public void start() { @Override public boolean stop(String reason) { scheduler.stop(); - pluginManager.disablePlugins();; + pluginManager.disablePlugins(); System.out.println("Engine stopped"); return true; } diff --git a/src/main/java/com/flowpowered/engine/FlowServerImpl.java b/src/main/java/com/flowpowered/engine/FlowServerImpl.java index 4a0c239..1758a54 100644 --- a/src/main/java/com/flowpowered/engine/FlowServerImpl.java +++ b/src/main/java/com/flowpowered/engine/FlowServerImpl.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import java.util.stream.Collectors; import com.flowpowered.api.event.PlayerJoinedEvent; import com.flowpowered.api.geo.ServerWorldManager; @@ -65,11 +66,7 @@ public void stop(String reason) { public Collection getOnlinePlayers() { Map playerList = players.get(); ArrayList onlinePlayers = new ArrayList<>(playerList.size()); - for (FlowPlayer player : playerList.values()) { - if (player.isOnline()) { - onlinePlayers.add(player); - } - } + onlinePlayers.addAll(playerList.values().stream().filter(Player::isOnline).collect(Collectors.toList())); return onlinePlayers; } diff --git a/src/main/java/com/flowpowered/engine/entity/EntityManager.java b/src/main/java/com/flowpowered/engine/entity/EntityManager.java index af8543d..e59a4cf 100644 --- a/src/main/java/com/flowpowered/engine/entity/EntityManager.java +++ b/src/main/java/com/flowpowered/engine/entity/EntityManager.java @@ -100,7 +100,7 @@ public FlowEntity getEntity(int id) { public void addEntity(FlowEntity entity) { entities.put(entity.getId(), entity); if (entity instanceof Player) { - players.put((Player) entity, new ArrayList()); + players.put((Player) entity, new ArrayList<>()); } } @@ -156,10 +156,6 @@ public void copyAllSnapshots() { // We want one more tick with for the removed Entities // The next tick works with the snapshotted values which contains has all removed entities with isRemoved true - for (FlowEntity e : entities.get().values()) { - if (e.isRemoved()) { - removeEntity(e); - } - } + entities.get().values().stream().filter(FlowEntity::isRemoved).forEach(this::removeEntity); } } diff --git a/src/main/java/com/flowpowered/engine/entity/FlowPhysics.java b/src/main/java/com/flowpowered/engine/entity/FlowPhysics.java index ffcd446..19b4ac0 100644 --- a/src/main/java/com/flowpowered/engine/entity/FlowPhysics.java +++ b/src/main/java/com/flowpowered/engine/entity/FlowPhysics.java @@ -81,7 +81,7 @@ public void crossInto(final FlowRegion from, final FlowRegion to) { @Override public void deactivate() { if (entity != null && entity.getRegion() != null && body != null) { - ((FlowRegion) entity.getRegion()).getDynamicsWorld().destroyRigidBody(body); + entity.getRegion().getDynamicsWorld().destroyRigidBody(body); } body = null; activated = false; diff --git a/src/main/java/com/flowpowered/engine/geo/chunk/FlowChunk.java b/src/main/java/com/flowpowered/engine/geo/chunk/FlowChunk.java index de4a825..c1fe29e 100644 --- a/src/main/java/com/flowpowered/engine/geo/chunk/FlowChunk.java +++ b/src/main/java/com/flowpowered/engine/geo/chunk/FlowChunk.java @@ -189,7 +189,7 @@ public short setBlockDataBits(int x, int y, int z, int bits, boolean set, Cause< } @Override - public short clearBlockDataBits(int x, int y, int z, int bits, Cause source) { + public short clearBlockDataBits(int x, int y, int z, int bits, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } @@ -204,7 +204,7 @@ public boolean isBlockDataBitSet(int x, int y, int z, int bits) { } @Override - public int setBlockDataField(int x, int y, int z, int bits, int value, Cause source) { + public int setBlockDataField(int x, int y, int z, int bits, int value, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/com/flowpowered/engine/geo/region/FlowRegion.java b/src/main/java/com/flowpowered/engine/geo/region/FlowRegion.java index 5880cde..17b97b9 100644 --- a/src/main/java/com/flowpowered/engine/geo/region/FlowRegion.java +++ b/src/main/java/com/flowpowered/engine/geo/region/FlowRegion.java @@ -164,12 +164,7 @@ public FlowChunk getChunk(final int x, final int y, final int z, final LoadOptio return loadOrGenChunkImmediately(x, y, z, loadopt); } - engine.getScheduler().getTaskManager().runCoreAsyncTask(new Runnable() { - @Override - public void run() { - loadOrGenChunkImmediately(x, y, z, loadopt); - } - }); + engine.getScheduler().getTaskManager().runCoreAsyncTask(() -> loadOrGenChunkImmediately(x, y, z, loadopt)); return null; } @@ -339,7 +334,7 @@ public short setBlockDataBits(int x, int y, int z, int bits, boolean set, Cause< } @Override - public short clearBlockDataBits(int x, int y, int z, int bits, Cause source) { + public short clearBlockDataBits(int x, int y, int z, int bits, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } @@ -354,7 +349,7 @@ public boolean isBlockDataBitSet(int x, int y, int z, int bits) { } @Override - public int setBlockDataField(int x, int y, int z, int bits, int value, Cause source) { + public int setBlockDataField(int x, int y, int z, int bits, int value, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/com/flowpowered/engine/geo/region/RegionFileManager.java b/src/main/java/com/flowpowered/engine/geo/region/RegionFileManager.java index b614062..5a23241 100644 --- a/src/main/java/com/flowpowered/engine/geo/region/RegionFileManager.java +++ b/src/main/java/com/flowpowered/engine/geo/region/RegionFileManager.java @@ -73,12 +73,7 @@ public BAAWrapper getBAAWrapper(int rx, int ry, int rz) { return regionFile; } final Path file = regionDirectory.resolve(filename); - BAAWrapper.BAACreator c = new BAAWrapper.BAACreator() { - @Override - public ByteArrayArray create() throws IOException { - return new SimpleRegionFile(file, SEGMENT_SIZE, FlowRegion.CHUNKS.VOLUME, TIMEOUT); - } - }; + BAAWrapper.BAACreator c = () -> new SimpleRegionFile(file, SEGMENT_SIZE, FlowRegion.CHUNKS.VOLUME, TIMEOUT); regionFile = new BAAWrapper(c); BAAWrapper oldRegionFile = cache.putIfAbsent(filename, regionFile); if (oldRegionFile != null) { @@ -111,11 +106,7 @@ public void closeAll() { } catch (InterruptedException ie) { logger.info("Interrupted when trying to stop RegionFileManager timeout thread"); } - for (BAAWrapper regionFile : cache.values()) { - if (!regionFile.attemptClose()) { - logger.info("Unable to close region file."); - } - } + cache.values().stream().filter(regionFile -> !regionFile.attemptClose()).forEach(regionFile -> logger.info("Unable to close region file.")); } private static String getFilename(int rx, int ry, int rz) { diff --git a/src/main/java/com/flowpowered/engine/geo/region/RegionGenerator.java b/src/main/java/com/flowpowered/engine/geo/region/RegionGenerator.java index f9e7de6..4189170 100644 --- a/src/main/java/com/flowpowered/engine/geo/region/RegionGenerator.java +++ b/src/main/java/com/flowpowered/engine/geo/region/RegionGenerator.java @@ -94,12 +94,7 @@ public RegionGenerator(FlowRegion region, int width) { */ public void generateChunk(final int chunkX, final int chunkY, final int chunkZ, boolean wait) { if (!wait) { - pool.get().submit(new Runnable() { - @Override - public void run() { - generateChunk0(chunkX, chunkY, chunkZ, false); - } - }); + pool.get().submit(() -> generateChunk0(chunkX, chunkY, chunkZ, false)); } else { generateChunk0(chunkX, chunkY, chunkZ, true); } diff --git a/src/main/java/com/flowpowered/engine/geo/world/FlowServerWorld.java b/src/main/java/com/flowpowered/engine/geo/world/FlowServerWorld.java index 3967bea..1b71c3e 100644 --- a/src/main/java/com/flowpowered/engine/geo/world/FlowServerWorld.java +++ b/src/main/java/com/flowpowered/engine/geo/world/FlowServerWorld.java @@ -111,9 +111,7 @@ public Path getDirectory() { @Override public void queueChunksForGeneration(List chunks) { - for (Vector3f chunk : chunks) { - queueChunkForGeneration(chunk); - } + chunks.forEach(this::queueChunkForGeneration); } @Override diff --git a/src/main/java/com/flowpowered/engine/geo/world/FlowWorld.java b/src/main/java/com/flowpowered/engine/geo/world/FlowWorld.java index dfde338..a127c9f 100644 --- a/src/main/java/com/flowpowered/engine/geo/world/FlowWorld.java +++ b/src/main/java/com/flowpowered/engine/geo/world/FlowWorld.java @@ -356,7 +356,7 @@ public short setBlockDataBits(int x, int y, int z, int bits, boolean set, Cause< } @Override - public short clearBlockDataBits(int x, int y, int z, int bits, Cause source) { + public short clearBlockDataBits(int x, int y, int z, int bits, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } @@ -371,7 +371,7 @@ public boolean isBlockDataBitSet(int x, int y, int z, int bits) { } @Override - public int setBlockDataField(int x, int y, int z, int bits, int value, Cause source) { + public int setBlockDataField(int x, int y, int z, int bits, int value, Cause cause) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/com/flowpowered/engine/geo/world/FlowWorldManager.java b/src/main/java/com/flowpowered/engine/geo/world/FlowWorldManager.java index d5182f1..e39e029 100644 --- a/src/main/java/com/flowpowered/engine/geo/world/FlowWorldManager.java +++ b/src/main/java/com/flowpowered/engine/geo/world/FlowWorldManager.java @@ -34,6 +34,7 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.stream.Collectors; import com.flowpowered.api.generator.EmptyWorldGenerator; import com.flowpowered.api.generator.WorldGenerator; @@ -96,11 +97,7 @@ public FlowWorld getWorld(UUID uid) { @Override public Collection getWorlds() { - Collection w = new ArrayList<>(); - for (FlowWorld world : loadedWorlds.values()) { - w.add(world); - } - return w; + return loadedWorlds.values().stream().collect(Collectors.toList()); } @Override @@ -146,12 +143,7 @@ public void save(boolean worlds, boolean players) { public List getWorldFolders() { DirectoryStream stream; try { - stream = Files.newDirectoryStream(getWorldFolder(), new DirectoryStream.Filter() { - @Override - public boolean accept(Path entry) throws IOException { - return Files.isDirectory(entry) && Files.exists(entry.resolve("world.dat")); - } - }); + stream = Files.newDirectoryStream(getWorldFolder(), entry -> Files.isDirectory(entry) && Files.exists(entry.resolve("world.dat"))); } catch (IOException ex) { engine.getLogger().error("Error when listing world folders.", ex); return Collections.emptyList(); @@ -171,7 +163,7 @@ public WorldGenerator getDefaultGenerator() { @Override public boolean unloadWorld(String name, boolean save) { - return unloadWorld((ServerWorld) loadedWorlds.get(name), save); + return unloadWorld(loadedWorlds.get(name), save); } @Override diff --git a/src/main/java/com/flowpowered/engine/network/codec/InputSnapshotCodec.java b/src/main/java/com/flowpowered/engine/network/codec/InputSnapshotCodec.java index 4348d3e..ffd3174 100644 --- a/src/main/java/com/flowpowered/engine/network/codec/InputSnapshotCodec.java +++ b/src/main/java/com/flowpowered/engine/network/codec/InputSnapshotCodec.java @@ -24,7 +24,6 @@ package com.flowpowered.engine.network.codec; import java.io.IOException; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; diff --git a/src/main/java/com/flowpowered/engine/network/handler/FlowMessageHandler.java b/src/main/java/com/flowpowered/engine/network/handler/FlowMessageHandler.java index a1ed651..dc9f583 100644 --- a/src/main/java/com/flowpowered/engine/network/handler/FlowMessageHandler.java +++ b/src/main/java/com/flowpowered/engine/network/handler/FlowMessageHandler.java @@ -71,6 +71,6 @@ public PlayerRequirement requiresPlayer() { public enum PlayerRequirement { NO, IGNORE, - ERROR; + ERROR } } diff --git a/src/main/java/com/flowpowered/engine/player/FlowPlayer.java b/src/main/java/com/flowpowered/engine/player/FlowPlayer.java index 032533a..2fc0040 100644 --- a/src/main/java/com/flowpowered/engine/player/FlowPlayer.java +++ b/src/main/java/com/flowpowered/engine/player/FlowPlayer.java @@ -30,7 +30,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.TimeUnit; import com.flowpowered.api.entity.Entity; import com.flowpowered.api.geo.World; @@ -221,7 +220,7 @@ public void setTransformProvider(TransformProvider provider) { public void copyInput(FlowWorld world) { synchronized (inputMutex) { - LinkedList snapshot = new LinkedList(); + LinkedList snapshot = new LinkedList<>(); inputSnapshots.put(world.getThread().getThread().getThreadGroup(), snapshot); ConcurrentLinkedQueue get = liveInput.getIfPresent(world); if (get == null) { diff --git a/src/main/java/com/flowpowered/engine/plugins/FlowPluginManager.java b/src/main/java/com/flowpowered/engine/plugins/FlowPluginManager.java index b1fe183..9257506 100644 --- a/src/main/java/com/flowpowered/engine/plugins/FlowPluginManager.java +++ b/src/main/java/com/flowpowered/engine/plugins/FlowPluginManager.java @@ -57,12 +57,7 @@ public void loadPlugins() { } catch (IOException e) { e.printStackTrace(); } - ContextCreator cc = new ContextCreator() { - @Override - public FlowContext createContext(Plugin plugin) { - return new FlowContext(plugin, engine); - } - }; + ContextCreator cc = plugin -> new FlowContext(plugin, engine); addLoader(new SimplePluginLoader<>(cc, new URLClassLoader(getURLs(FlowFileSystem.PLUGINS_DIRECTORY, "*.jar")))); addLoader(new AnnotatedPluginLoader<>(cc, FlowFileSystem.PLUGINS_DIRECTORY, getClass().getClassLoader())); } diff --git a/src/main/java/com/flowpowered/engine/scheduler/FlowTaskManager.java b/src/main/java/com/flowpowered/engine/scheduler/FlowTaskManager.java index fd78d72..37ca487 100644 --- a/src/main/java/com/flowpowered/engine/scheduler/FlowTaskManager.java +++ b/src/main/java/com/flowpowered/engine/scheduler/FlowTaskManager.java @@ -137,7 +137,7 @@ public Future callSyncMethod(Object owner, Callable task) { @Override public Future callSyncMethod(Object owner, Callable task, TaskPriority priority) { - FutureTask future = new FutureTask(task); + FutureTask future = new FutureTask<>(task); runTask(owner, future, priority); return future; } @@ -200,19 +200,13 @@ public void cancelTask(int taskId) { @Override public void cancelTasks(Object plugin) { ArrayList tasks = new ArrayList<>(activeTasks.values()); - for (FlowTask task : tasks) { - if (task.getOwner() == plugin) { - cancelTask(task); - } - } + tasks.stream().filter(task -> task.getOwner() == plugin).forEach(this::cancelTask); } @Override public void cancelAllTasks() { ArrayList tasks = new ArrayList<>(activeTasks.values()); - for (FlowTask task : tasks) { - cancelTask(task); - } + tasks.forEach(this::cancelTask); } @Override @@ -226,7 +220,7 @@ public boolean isQueued(int taskId) { */ @Override public List getPendingTasks() { - return new ArrayList(activeTasks.values()); + return new ArrayList<>(activeTasks.values()); } @Override diff --git a/src/main/java/com/flowpowered/engine/scheduler/MainThread.java b/src/main/java/com/flowpowered/engine/scheduler/MainThread.java index c29d892..22a3491 100644 --- a/src/main/java/com/flowpowered/engine/scheduler/MainThread.java +++ b/src/main/java/com/flowpowered/engine/scheduler/MainThread.java @@ -52,7 +52,7 @@ public void onTick(long delta) { server.copySnapshot(); for (Player p : server.getOnlinePlayers()) { Transform transform = p.getTransformProvider().getTransform(); - ((FlowPlayer) p).getNetwork().preSnapshotRun(transform); + p.getNetwork().preSnapshotRun(transform); } } } diff --git a/src/main/java/com/flowpowered/engine/scheduler/WorldThread.java b/src/main/java/com/flowpowered/engine/scheduler/WorldThread.java index c6b858c..e674921 100644 --- a/src/main/java/com/flowpowered/engine/scheduler/WorldThread.java +++ b/src/main/java/com/flowpowered/engine/scheduler/WorldThread.java @@ -101,14 +101,14 @@ public void onTick(long delta) { } private void doFinalizeTick() { - world.getRegions().stream().map((r) -> (FlowRegion) r).forEach((FlowRegion r) -> r.finalizeRun()); + world.getRegions().stream().map((r) -> (FlowRegion) r).forEach(FlowRegion::finalizeRun); } private void doCopySnapshot() { - world.getRegions().stream().map((r) -> (FlowRegion) r).forEach((FlowRegion r) -> r.preSnapshotRun()); + world.getRegions().stream().map((r) -> (FlowRegion) r).forEach(FlowRegion::preSnapshotRun); world.copySnapshotRun(); - world.getRegions().stream().map((r) -> (FlowRegion) r).forEach((FlowRegion r) -> r.copySnapshotRun()); + world.getRegions().stream().map((r) -> (FlowRegion) r).forEach(FlowRegion::copySnapshotRun); } public int getTPS() { diff --git a/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java b/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java index 0df5cb3..1b52996 100644 --- a/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java +++ b/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java @@ -275,7 +275,7 @@ private void updateCameraAndFrustrum() { private static final Vector3f SHADOWED_CHUNKS = new Vector3f(Chunk.BLOCKS.SIZE * 4, 64, Chunk.BLOCKS.SIZE * 4); private static final long MILLIS_IN_A_DAY = 1000 * 60 * 60 * 24; private void updateLight(long time) { - time %= MILLIS_IN_A_DAY;; + time %= MILLIS_IN_A_DAY; double lightAngle; final double dayAngle = ((double) time / (MILLIS_IN_A_DAY)) * TWO_PI; if (dayAngle < Math.PI) { diff --git a/src/main/java/com/flowpowered/engine/util/FlowByteBufUtils.java b/src/main/java/com/flowpowered/engine/util/FlowByteBufUtils.java index 3e9cf5b..bef8b59 100644 --- a/src/main/java/com/flowpowered/engine/util/FlowByteBufUtils.java +++ b/src/main/java/com/flowpowered/engine/util/FlowByteBufUtils.java @@ -25,11 +25,7 @@ import java.io.IOException; import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; -import com.flowpowered.api.Client; -import com.flowpowered.api.geo.World; import com.flowpowered.api.geo.discrete.Point; import com.flowpowered.api.geo.discrete.Transform; import com.flowpowered.api.geo.reference.WorldReference; diff --git a/src/main/java/com/flowpowered/engine/util/math/ReactConverter.java b/src/main/java/com/flowpowered/engine/util/math/ReactConverter.java index d580ec2..a6bdf70 100644 --- a/src/main/java/com/flowpowered/engine/util/math/ReactConverter.java +++ b/src/main/java/com/flowpowered/engine/util/math/ReactConverter.java @@ -23,7 +23,6 @@ */ package com.flowpowered.engine.util.math; -import com.flowpowered.api.geo.World; import com.flowpowered.api.geo.discrete.Point; import com.flowpowered.api.geo.discrete.Transform; import com.flowpowered.api.geo.reference.WorldReference; diff --git a/src/main/java/com/flowpowered/engine/util/thread/AsyncExecutorUtils.java b/src/main/java/com/flowpowered/engine/util/thread/AsyncExecutorUtils.java index 7d26b09..800f694 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/AsyncExecutorUtils.java +++ b/src/main/java/com/flowpowered/engine/util/thread/AsyncExecutorUtils.java @@ -59,8 +59,8 @@ public static void dumpAllStacks(Logger log) { log.info(" PID: " + thread.getId() + " | Alive: " + thread.isAlive() + " | State: " + thread.getState()); log.info(" Stack:"); StackTraceElement[] stack = entry.getValue(); - for (int line = 0; line < stack.length; line++) { - log.info(" " + stack[line].toString()); + for (StackTraceElement aStack : stack) { + log.info(" " + aStack.toString()); } } log.info(LINE); diff --git a/src/main/java/com/flowpowered/engine/util/thread/LoggingThreadPoolExecutor.java b/src/main/java/com/flowpowered/engine/util/thread/LoggingThreadPoolExecutor.java index 07c7be9..5796db1 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/LoggingThreadPoolExecutor.java +++ b/src/main/java/com/flowpowered/engine/util/thread/LoggingThreadPoolExecutor.java @@ -39,12 +39,12 @@ public class LoggingThreadPoolExecutor extends ThreadPoolExecutor { public static LoggingThreadPoolExecutor newFixedThreadExecutorWithMarkedName(int nThreads, String name, Logger logger) { - return new LoggingThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), + return new LoggingThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new MarkedNamedThreadFactory(name, true), logger); } public static LoggingThreadPoolExecutor newFixedThreadExecutorWithMarkedName(ThreadGroup group, int nThreads, String name, Logger logger) { - return new LoggingThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), + return new LoggingThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new MarkedNamedThreadFactory(group, name, true), logger); } @@ -76,7 +76,7 @@ protected void afterExecute(Runnable r, Throwable t) { if (t == null && r instanceof Future) { try { ((Future) r).get(); - } catch (CancellationException ce) { + } catch (CancellationException ignore) { } catch (ExecutionException ee) { t = ee.getCause(); } catch (InterruptedException ie) { diff --git a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotManager.java b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotManager.java index 40891cc..a5713ff 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotManager.java +++ b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotManager.java @@ -37,8 +37,8 @@ public void add(Snapshotable s) { public void copyAllSnapshots() { synchronized (managed) { - for (int i = 0; i < managed.size(); i++) { - managed.get(i).copySnapshot(); + for (Snapshotable aManaged : managed) { + aManaged.copySnapshot(); } } } diff --git a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableArrayList.java b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableArrayList.java index 899fc0a..194d183 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableArrayList.java +++ b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableArrayList.java @@ -28,6 +28,7 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.stream.Collectors; import com.flowpowered.api.util.thread.annotation.DelayedWrite; import com.flowpowered.api.util.thread.annotation.LiveRead; @@ -142,9 +143,7 @@ public void copySnapshot() { if (dirty.size() > 0) { snapshot.clear(); synchronized (live) { - for (T o : live) { - snapshot.add(o); - } + snapshot.addAll(live.stream().collect(Collectors.toList())); } } dirty.clear(); diff --git a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableHashSet.java b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableHashSet.java index e8248ae..c1b0ac2 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableHashSet.java +++ b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableHashSet.java @@ -41,7 +41,7 @@ public class SnapshotableHashSet implements Snapshotable { private final Set snapshot = new HashSet<>(); private final Set unmodifySnapshot = Collections.unmodifiableSet(snapshot); - private final Set live = Collections.newSetFromMap(new ConcurrentHashMap()); + private final Set live = Collections.newSetFromMap(new ConcurrentHashMap<>()); private final Set unmodifyLive = Collections.unmodifiableSet(live); private final ConcurrentLinkedQueue dirty = new ConcurrentLinkedQueue<>(); private final ArrayList dirtyList = new ArrayList<>(); @@ -52,9 +52,7 @@ public SnapshotableHashSet(SnapshotManager manager) { public SnapshotableHashSet(SnapshotManager manager, HashSet initial) { if (initial != null) { - for (T o : initial) { - add(o); - } + initial.forEach(this::add); } if (manager != null) { manager.add(this); diff --git a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableLinkedHashMap.java b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableLinkedHashMap.java index 8fed1ef..c178b77 100644 --- a/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableLinkedHashMap.java +++ b/src/main/java/com/flowpowered/engine/util/thread/snapshotable/SnapshotableLinkedHashMap.java @@ -33,6 +33,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentMap; +import java.util.stream.Collectors; import com.flowpowered.api.util.thread.annotation.DelayedWrite; import com.flowpowered.api.util.thread.annotation.LiveRead; @@ -172,11 +173,7 @@ public Collection getValuesLive() { */ public List getDirtyList() { if (!dirtyListGenerated) { - for (K o : dirty) { - if (dirtyListTemp.add(o)) { - dirtyList.add(o); - } - } + dirtyList.addAll(dirty.stream().filter(dirtyListTemp::add).collect(Collectors.toList())); dirtyListTemp.clear(); dirtyListGenerated = true; }