This commit is contained in:
Felix Cravic 2020-12-12 06:13:50 +01:00
parent c8154b564f
commit 5e85c0117a
18 changed files with 54 additions and 31 deletions

View File

@ -119,6 +119,8 @@ public final class MinecraftServer {
private static ExtensionManager extensionManager;
private static final GlobalEventHandler GLOBAL_EVENT_HANDLER = new GlobalEventHandler();
private static UpdateManager updateManager;
private static MinecraftServer minecraftServer;
@ -134,7 +136,6 @@ public final class MinecraftServer {
private static ResponseDataConsumer responseDataConsumer;
private static String brandName = "Minestom";
private static Difficulty difficulty = Difficulty.NORMAL;
private static GlobalEventHandler globalEventHandler = new GlobalEventHandler();
private static LootTableManager lootTableManager;
private static TagManager tagManager;
@ -293,7 +294,7 @@ public final class MinecraftServer {
*/
@NotNull
public static GlobalEventHandler getGlobalEventHandler() {
return globalEventHandler;
return GLOBAL_EVENT_HANDLER;
}
/**

View File

@ -38,11 +38,16 @@ public class CommandDispatcher {
}
public void unregister(@NotNull Command command) {
commandMap.remove(command.getName().toLowerCase());
for (String alias : command.getAliases()) {
this.commandMap.remove(alias.toLowerCase());
this.commandMap.remove(command.getName().toLowerCase());
final String[] aliases = command.getAliases();
if (aliases != null) {
for (String alias : aliases) {
this.commandMap.remove(alias.toLowerCase());
}
}
commands.remove(command);
this.commands.remove(command);
}
/**

View File

@ -15,7 +15,7 @@ public class ArgumentDynamicWord extends Argument<String> {
public static final int SPACE_ERROR = 1;
public static final int RESTRICTION_ERROR = 2;
private SuggestionType suggestionType;
private final SuggestionType suggestionType;
private StringValidator dynamicRestriction;

View File

@ -11,7 +11,7 @@ public class ArgumentBlockState extends ArgumentRegistry<Block> {
}
@Override
public Block getRegistry(String value) {
public Block getRegistry(@NotNull String value) {
return Registries.getBlock(value);
}
}

View File

@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.item.Enchantment;
import net.minestom.server.registry.Registries;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument giving an {@link Enchantment}.
@ -13,7 +14,7 @@ public class ArgumentEnchantment extends ArgumentRegistry<Enchantment> {
}
@Override
public Enchantment getRegistry(String value) {
public Enchantment getRegistry(@NotNull String value) {
return Registries.getEnchantment(value);
}
}

View File

@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.entity.EntityType;
import net.minestom.server.registry.Registries;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument giving an {@link EntityType}.
@ -13,7 +14,7 @@ public class ArgumentEntityType extends ArgumentRegistry<EntityType> {
}
@Override
public EntityType getRegistry(String value) {
public EntityType getRegistry(@NotNull String value) {
return Registries.getEntityType(value);
}
}

View File

@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.particle.Particle;
import net.minestom.server.registry.Registries;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument giving a {@link Particle}.
@ -13,7 +14,7 @@ public class ArgumentParticle extends ArgumentRegistry<Particle> {
}
@Override
public Particle getRegistry(String value) {
public Particle getRegistry(@NotNull String value) {
return Registries.getParticle(value);
}
}

View File

@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.potion.PotionEffect;
import net.minestom.server.registry.Registries;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument giving a {@link PotionEffect}.
@ -13,7 +14,7 @@ public class ArgumentPotionEffect extends ArgumentRegistry<PotionEffect> {
}
@Override
public PotionEffect getRegistry(String value) {
public PotionEffect getRegistry(@NotNull String value) {
return Registries.getPotionEffect(value);
}
}

View File

@ -127,7 +127,7 @@ public abstract class Data implements PublicCloneable<Data> {
return (Data) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
throw new IllegalStateException("Weird thing happened");
}
}
}

View File

@ -70,7 +70,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer, P
protected static final byte METADATA_POSE = 18;
protected Instance instance;
protected Position position;
protected final Position position;
protected float lastX, lastY, lastZ;
protected float cacheX, cacheY, cacheZ; // Used to synchronize with #getPosition
protected float lastYaw, lastPitch;

View File

@ -18,10 +18,10 @@ import java.util.stream.Collectors;
*/
public class ExtensionDependencyResolver implements DependencyResolver {
private Map<String, DiscoveredExtension> extensionMap = new HashMap<>();
private final Map<String, DiscoveredExtension> extensionMap = new HashMap<>();
public ExtensionDependencyResolver(List<DiscoveredExtension> extensions) {
for(DiscoveredExtension ext : extensions) {
public ExtensionDependencyResolver(@NotNull List<DiscoveredExtension> extensions) {
for (DiscoveredExtension ext : extensions) {
extensionMap.put(ext.getName(), ext);
}
}
@ -29,7 +29,7 @@ public class ExtensionDependencyResolver implements DependencyResolver {
@NotNull
@Override
public ResolvedDependency resolve(@NotNull String extensionName, @NotNull File file) throws UnresolvedDependencyException {
if(extensionMap.containsKey(extensionName)) {
if (extensionMap.containsKey(extensionName)) {
DiscoveredExtension ext = extensionMap.get(extensionName);
// convert extension URLs to subdependencies
// FIXME: this is not a deep conversion, this might create an issue in this scenario with different classloaders:
@ -38,17 +38,20 @@ public class ExtensionDependencyResolver implements DependencyResolver {
// When loading B, with no deep conversion, Ext will not be added to the list of dependencies (because it is not a direct dependency)
// But when trying to call/access code from extension A, the parts dependent on Ext won't be inside B's dependencies, triggering a ClassNotFoundException
List<ResolvedDependency> deps = new LinkedList<>();
for(URL u : ext.files) {
for (URL u : ext.files) {
deps.add(new ResolvedDependency(u.toExternalForm(), u.toExternalForm(), "", u, new LinkedList<>()));
}
return new ResolvedDependency(ext.getName(), ext.getName(), ext.getVersion(), ext.files.get(0), deps);
}
throw new UnresolvedDependencyException("No extension named "+extensionName);
throw new UnresolvedDependencyException("No extension named " + extensionName);
}
@Override
public String toString() {
String list = extensionMap.values().stream().map(entry -> entry.getName()).collect(Collectors.joining(", "));
String list = extensionMap.values()
.stream()
.map(DiscoveredExtension::getName)
.collect(Collectors.joining(", "));
return "ExtensionDependencyResolver[" + list + "]";
}
}

View File

@ -468,7 +468,11 @@ public class ExtensionManager {
}
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("Failed to load code modifier for extension in files: " + extension.files.stream().map(u -> u.toExternalForm()).collect(Collectors.joining(", ")), e);
LOGGER.error("Failed to load code modifier for extension in files: " +
extension.files
.stream()
.map(URL::toExternalForm)
.collect(Collectors.joining(", ")), e);
}
}
LOGGER.info("Done loading code modifiers.");
@ -628,6 +632,6 @@ public class ExtensionManager {
* Shutdowns all the extensions by unloading them.
*/
public void shutdown() {
this.extensionList.forEach(extension -> unload(extension));
this.extensionList.forEach(this::unload);
}
}

View File

@ -18,7 +18,7 @@ public class MinestomBytecodeProvider implements IClassBytecodeProvider {
}
@Override
public ClassNode getClassNode(String name) throws ClassNotFoundException, IOException {
public ClassNode getClassNode(String name) throws ClassNotFoundException {
return getClassNode(name, false);
}

View File

@ -58,7 +58,8 @@ public final class NettyServer {
private boolean initialized = false;
private PacketProcessor packetProcessor;
private final PacketProcessor packetProcessor;
private final GlobalChannelTrafficShapingHandler globalTrafficHandler;
private EventLoopGroup boss, worker;
private ServerBootstrap bootstrap;
@ -68,8 +69,6 @@ public final class NettyServer {
private String address;
private int port;
private GlobalChannelTrafficShapingHandler globalTrafficHandler;
/**
* Scheduler used by {@code globalTrafficHandler}.
*/

View File

@ -137,6 +137,7 @@ public class ChunkDataPacket implements ServerPacket, CacheablePacket {
return ServerPacketIdentifier.CHUNK_DATA;
}
@NotNull
@Override
public TemporaryPacketCache getCache() {
return CACHE;

View File

@ -69,6 +69,7 @@ public class UpdateLightPacket implements ServerPacket, CacheablePacket {
return ServerPacketIdentifier.UPDATE_LIGHT;
}
@NotNull
@Override
public TemporaryPacketCache getCache() {
return CACHE;

View File

@ -1,12 +1,18 @@
package net.minestom.server.utils;
import java.util.*;
import org.jetbrains.annotations.NotNull;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
public class NamespaceIDHashMap<V> extends AbstractMap<NamespaceID, V> {
private final Map<NamespaceID, V> backing = new HashMap<>();
@NotNull
@Override
public Set<Entry<NamespaceID, V>> entrySet() {
return backing.entrySet();

View File

@ -111,9 +111,8 @@ public final class Utils {
}
}
final long[] data = blocksId;
writeVarIntBuf(buffer, data.length);
for (long datum : data) {
writeVarIntBuf(buffer, blocksId.length);
for (long datum : blocksId) {
buffer.writeLong(datum);
}
}