diff --git a/src/common/resources/lang/en_US/command.lang b/src/common/resources/lang/en_US/command.lang
index af0dff9c6..a2eae4fa1 100644
--- a/src/common/resources/lang/en_US/command.lang
+++ b/src/common/resources/lang/en_US/command.lang
@@ -46,6 +46,8 @@ command.argument_types.sound_id.invalid_id=Invalid or unknown sound id '%s'
 
 command.argument_types.sound_category.invalid_name=Invalid or unknown sound category '%s'
 
+command.argument_types.particle_id.invalid_id=Invalid or unknown particle id '%s'
+
 command.exceptions.tag.valueless=Expected value for tag key '%s'
 command.argument_types.item_stack.tag.invalid=Invalid tag key value; must be an integer, floating point, double-precision floating point, boolean or string value
 command.exceptions.metadata.unterminated=Expected end of metadata
diff --git a/src/main/java/net/minecraft/client/gui/SignEditorScreen.java b/src/main/java/net/minecraft/client/gui/SignEditorScreen.java
index 4f39d4e71..1cf8900c1 100644
--- a/src/main/java/net/minecraft/client/gui/SignEditorScreen.java
+++ b/src/main/java/net/minecraft/client/gui/SignEditorScreen.java
@@ -107,7 +107,7 @@ public class SignEditorScreen extends Screen
         {
             entitySign.signText[editLine] = entitySign.signText[editLine].substring(0, entitySign.signText[editLine].length() - 1);
         }
-        if ((allowedCharacters.indexOf(eventCharacter) >= 0 || Character.isLetterOrDigit(eventCharacter)) && entitySign.signText[editLine].length() < 15)
+        if ((allowedCharacters.indexOf(eventCharacter) >= 0 || Character.isLetterOrDigit(eventCharacter)) && entitySign.signText[editLine].length() < SignBlockEntity.MAX_LINE_SIZE)
         {
             entitySign.signText[editLine] += eventCharacter;
         }
diff --git a/src/main/java/net/minecraft/core/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/core/block/entity/SignBlockEntity.java
index 85cbf6a68..46bc1c4c0 100644
--- a/src/main/java/net/minecraft/core/block/entity/SignBlockEntity.java
+++ b/src/main/java/net/minecraft/core/block/entity/SignBlockEntity.java
@@ -15,6 +15,7 @@ import java.util.UUID;
 
 public class SignBlockEntity extends BlockEntity
 {
+    public static final int MAX_LINE_SIZE = 15;
     public String[] signText = { "", "", "", "" };
     public int lineBeingEdited;
     private int selectedPicture = 0;
@@ -48,9 +49,9 @@ public class SignBlockEntity extends BlockEntity
         for(int i = 0; i < 4; i++)
         {
             signText[i] = tag.getString("Text" + (i + 1));
-            if(signText[i].length() > 15)
+            if(signText[i].length() > MAX_LINE_SIZE)
             {
-                signText[i] = signText[i].substring(0, 15);
+                signText[i] = signText[i].substring(0, MAX_LINE_SIZE);
             }
         }
         selectedPicture = tag.getIntegerOrDefault("Picture", 0);
diff --git a/src/main/java/net/minecraft/core/entity/EntityDispatcher.java b/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
index 3cf341baf..b4952ef09 100644
--- a/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
+++ b/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
@@ -16,6 +16,14 @@ import java.util.Map;
 public class EntityDispatcher
 {
     private static final Logger LOGGER = LogUtils.getLogger();
+
+    public static final Map<String, Class<? extends Entity>> keyToClassMap = new HashMap<>();
+    public static final Map<Class<? extends Entity>, String> classToKeyMap = new HashMap<>();
+    private static final Map<Integer, Class<? extends Entity>> idToClassMap = new HashMap<>();
+    private static final Map<Class<? extends Entity>, Integer> classToIdMap = new HashMap<>();
+
+    private static int maxIdSize = 0;
+
     public EntityDispatcher()
     {
     }
@@ -26,6 +34,10 @@ public class EntityDispatcher
         classToKeyMap.put(clazz, key);
         idToClassMap.put(id, clazz);
         classToIdMap.put(clazz, id);
+
+        if (key.length() > maxIdSize) {
+            maxIdSize = key.length();
+        }
     }
 
     public static Entity createEntityInWorld(String id, World world)
@@ -119,10 +131,9 @@ public class EntityDispatcher
         return keyToClassMap.get(encodeID);
     }
 
-    public static final Map<String, Class<? extends Entity>> keyToClassMap = new HashMap<>();
-    public static final Map<Class<? extends Entity>, String> classToKeyMap = new HashMap<>();
-    private static final Map<Integer, Class<? extends Entity>> idToClassMap = new HashMap<>();
-    private static final Map<Class<? extends Entity>, Integer> classToIdMap = new HashMap<>();
+    public static int getLargestIdSize() {
+        return maxIdSize;
+    }
 
     static 
     {
diff --git a/src/main/java/net/minecraft/core/net/command/CommandManager.java b/src/main/java/net/minecraft/core/net/command/CommandManager.java
index 8cd63de4f..894ec183f 100644
--- a/src/main/java/net/minecraft/core/net/command/CommandManager.java
+++ b/src/main/java/net/minecraft/core/net/command/CommandManager.java
@@ -51,6 +51,7 @@ public class CommandManager {
         HealCommand.register(DISPATCHER);
         MobSpawningCommand.register(DISPATCHER);
         PlaySoundCommand.register(DISPATCHER);
+        SpawnParticleCommand.register(DISPATCHER);
 
         if (this.isServer) {
             StopCommand.register(DISPATCHER);
diff --git a/src/main/java/net/minecraft/core/net/command/arguments/ItemStackArgumentType.java b/src/main/java/net/minecraft/core/net/command/arguments/ItemStackArgumentType.java
index ac08acbd0..3ff6c9992 100644
--- a/src/main/java/net/minecraft/core/net/command/arguments/ItemStackArgumentType.java
+++ b/src/main/java/net/minecraft/core/net/command/arguments/ItemStackArgumentType.java
@@ -18,7 +18,7 @@ import java.util.Locale;
 import java.util.concurrent.CompletableFuture;
 
 public class ItemStackArgumentType implements ArgumentType<ItemStack> {
-    private static final List<String> EXAMPLES = Arrays.asList("tool.sword.iron", "tool.sword.iron{name:\"Sword\", overrideName: true}", "tile.log");
+    private static final List<String> EXAMPLES = Arrays.asList("minecraft:item/iron_sword", "minecraft:item/iron_sword{name:\"Sword\", overrideName: true}", "minecraft:block/log_oak");
 
     public static ArgumentType<ItemStack> itemStack() {
         return new ItemStackArgumentType();
@@ -42,7 +42,7 @@ public class ItemStackArgumentType implements ArgumentType<ItemStack> {
             String remaining = suggestionsBuilder.getRemaining().toLowerCase(Locale.ROOT);
             for (Item item : Item.itemsList) {
                 if (item == null) continue;
-                CommandHelper.getStringToSuggest(item.getKey(), remaining).ifPresent(suggestionsBuilder::suggest);
+                CommandHelper.getStringToSuggest(item.namespaceID.toString().toLowerCase(Locale.ROOT), remaining).ifPresent(suggestionsBuilder::suggest);
             }
             suggestionsBuilder.buildFuture();
         });
diff --git a/src/main/java/net/minecraft/core/net/command/arguments/ParticleIdArgumentType.java b/src/main/java/net/minecraft/core/net/command/arguments/ParticleIdArgumentType.java
new file mode 100644
index 000000000..d5a31bee7
--- /dev/null
+++ b/src/main/java/net/minecraft/core/net/command/arguments/ParticleIdArgumentType.java
@@ -0,0 +1,51 @@
+package net.minecraft.core.net.command.arguments;
+
+import com.mojang.brigadier.StringReader;
+import com.mojang.brigadier.arguments.ArgumentType;
+import com.mojang.brigadier.context.CommandContext;
+import com.mojang.brigadier.exceptions.CommandSyntaxException;
+import com.mojang.brigadier.suggestion.Suggestions;
+import com.mojang.brigadier.suggestion.SuggestionsBuilder;
+import net.minecraft.client.entity.particle.ParticleDispatcher;
+import net.minecraft.core.lang.I18n;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.CompletableFuture;
+
+public class ParticleIdArgumentType implements ArgumentType<String> {
+    private static final List<String> EXAMPLES = Arrays.asList("fireflyGreen", "explode", "soulflame");
+
+    public static ArgumentType<String> particleId() {
+        return new ParticleIdArgumentType();
+    }
+
+    @Override
+    public String parse(StringReader reader) throws CommandSyntaxException {
+        final String string = reader.readString();
+
+        for (String particleId : ParticleDispatcher.getInstance().getParticleIds()) {
+            if (particleId.equalsIgnoreCase(string)) {
+                return string;
+            }
+        }
+        throw new CommandSyntaxException(CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherUnknownArgument(), () -> I18n.getInstance().translateKeyAndFormat("command.argument_types.particle_id.invalid_id", string));
+    }
+
+    @Override
+    public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
+        for (String particleId : ParticleDispatcher.getInstance().getParticleIds()) {
+            if (particleId.toLowerCase(Locale.ROOT).startsWith(builder.getRemainingLowerCase())) {
+                builder.suggest(particleId);
+            }
+        }
+        return builder.buildFuture();
+    }
+
+    @Override
+    public Collection<String> getExamples() {
+        return EXAMPLES;
+    }
+}
diff --git a/src/main/java/net/minecraft/core/net/command/commands/SpawnParticleCommand.java b/src/main/java/net/minecraft/core/net/command/commands/SpawnParticleCommand.java
new file mode 100644
index 000000000..7527010f7
--- /dev/null
+++ b/src/main/java/net/minecraft/core/net/command/commands/SpawnParticleCommand.java
@@ -0,0 +1,152 @@
+package net.minecraft.core.net.command.commands;
+
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.arguments.DoubleArgumentType;
+import com.mojang.brigadier.arguments.IntegerArgumentType;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.builder.RequiredArgumentBuilder;
+import net.minecraft.core.entity.Entity;
+import net.minecraft.core.entity.player.Player;
+import net.minecraft.core.net.command.CommandSource;
+import net.minecraft.core.net.command.arguments.EntityArgumentType;
+import net.minecraft.core.net.command.arguments.ParticleIdArgumentType;
+import net.minecraft.core.net.command.arguments.Vec3ArgumentType;
+import net.minecraft.core.net.command.helpers.DoubleCoordinates;
+import net.minecraft.core.net.command.helpers.EntitySelector;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class SpawnParticleCommand {
+    public static void register(CommandDispatcher<CommandSource> dispatcher) {
+        dispatcher.register
+            (
+                LiteralArgumentBuilder.<CommandSource>literal("spawnparticle")
+                    .requires(CommandSource::hasAdmin)
+                    .then(RequiredArgumentBuilder.<CommandSource, String>argument("particleId", ParticleIdArgumentType.particleId())
+                        .executes(c -> {
+                            String particleId = c.getArgument("particleId", String.class);
+                            Player player = c.getSource().getSender();
+                            if (player != null) {
+                                spawnParticle(c.getSource(), player.x, player.y, player.z, null, null, null, particleId, null, null);
+                            }
+                            return Command.SINGLE_SUCCESS;
+                        })
+                        .then(RequiredArgumentBuilder.<CommandSource, DoubleCoordinates>argument("position", Vec3ArgumentType.vec3d())
+                            .executes(c -> {
+                                String particleId = c.getArgument("particleId", String.class);
+                                DoubleCoordinates pos = c.getArgument("position", DoubleCoordinates.class);
+                                spawnParticle(c.getSource(), pos.getX(c.getSource()), pos.getY(c.getSource(), true), pos.getZ(c.getSource()), null, null, null, particleId, null, null);
+
+                                return Command.SINGLE_SUCCESS;
+                            })
+                            .then(RequiredArgumentBuilder.<CommandSource, DoubleCoordinates>argument("motion", Vec3ArgumentType.vec3d())
+                                .executes(c -> {
+                                    String particleId = c.getArgument("particleId", String.class);
+                                    DoubleCoordinates pos = c.getArgument("position", DoubleCoordinates.class);
+                                    DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+
+                                    spawnParticle(c.getSource(),
+                                        pos.getX(c.getSource()), pos.getY(c.getSource(), true), pos.getZ(c.getSource()),
+                                        motion.getX(0), motion.getY(0), motion.getZ(0), particleId, null, null);
+                                    return Command.SINGLE_SUCCESS;
+                                })
+                                .then(RequiredArgumentBuilder.<CommandSource, Integer>argument("data", IntegerArgumentType.integer())
+                                    .executes(c -> {
+                                        String particleId = c.getArgument("particleId", String.class);
+                                        DoubleCoordinates pos = c.getArgument("position", DoubleCoordinates.class);
+                                        DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+                                        int data = c.getArgument("data", Integer.class);
+
+                                        spawnParticle(c.getSource(),
+                                            pos.getX(c.getSource()), pos.getY(c.getSource(), true), pos.getZ(c.getSource()),
+                                            motion.getX(0), motion.getY(0), motion.getZ(0), particleId, data, null);
+                                        return Command.SINGLE_SUCCESS;
+                                    })
+                                    .then(RequiredArgumentBuilder.<CommandSource, Double>argument("maxDistance", DoubleArgumentType.doubleArg())
+                                        .executes(c -> {
+                                            String particleId = c.getArgument("particleId", String.class);
+                                            DoubleCoordinates pos = c.getArgument("position", DoubleCoordinates.class);
+                                            DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+                                            int data = c.getArgument("data", Integer.class);
+                                            double maxDist = c.getArgument("maxDistance", Double.class);
+
+                                            spawnParticle(c.getSource(),
+                                                pos.getX(c.getSource()), pos.getY(c.getSource(), true), pos.getZ(c.getSource()),
+                                                motion.getX(0), motion.getY(0), motion.getZ(0), particleId, data, maxDist);
+                                            return Command.SINGLE_SUCCESS;
+                                        }))
+                                )
+                            )
+                        )
+                        .then(RequiredArgumentBuilder.<CommandSource, EntitySelector>argument("target", EntityArgumentType.entities())
+                            .executes(c -> {
+                                String particleId = c.getArgument("particleId", String.class);
+                                EntitySelector selector = c.getArgument("target", EntitySelector.class);
+                                List<? extends Entity> entityList = selector.get(c.getSource());
+                                for (Entity e : entityList) {
+                                    spawnParticle(c.getSource(), e.x, e.y, e.z, null, null, null, particleId, null, null);
+                                }
+
+                                return Command.SINGLE_SUCCESS;
+                            })
+                            .then(RequiredArgumentBuilder.<CommandSource, DoubleCoordinates>argument("motion", Vec3ArgumentType.vec3d())
+                                .executes(c -> {
+                                    String particleId = c.getArgument("particleId", String.class);
+                                    DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+
+                                    EntitySelector selector = c.getArgument("target", EntitySelector.class);
+                                    List<? extends Entity> entityList = selector.get(c.getSource());
+                                    for (Entity e : entityList) {
+                                        spawnParticle(c.getSource(), e.x, e.y, e.z, motion.getX(0), motion.getY(0), motion.getZ(0), particleId, null, null);
+                                    }
+                                    return Command.SINGLE_SUCCESS;
+                                })
+                                .then(RequiredArgumentBuilder.<CommandSource, Integer>argument("data", IntegerArgumentType.integer())
+                                    .executes(c -> {
+                                        String particleId = c.getArgument("particleId", String.class);
+                                        DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+                                        int data = c.getArgument("data", Integer.class);
+
+                                        EntitySelector selector = c.getArgument("target", EntitySelector.class);
+                                        List<? extends Entity> entityList = selector.get(c.getSource());
+                                        for (Entity e : entityList) {
+                                            spawnParticle(c.getSource(), e.x, e.y, e.z, motion.getX(0), motion.getY(0), motion.getZ(0), particleId, data, null);
+                                        }
+                                        return Command.SINGLE_SUCCESS;
+                                    })
+                                    .then(RequiredArgumentBuilder.<CommandSource, Double>argument("maxDistance", DoubleArgumentType.doubleArg())
+                                        .executes(c -> {
+                                            String particleId = c.getArgument("particleId", String.class);
+                                            DoubleCoordinates motion = c.getArgument("motion", DoubleCoordinates.class);
+                                            int data = c.getArgument("data", Integer.class);
+                                            double maxDist = c.getArgument("maxDistance", Double.class);
+
+                                            EntitySelector selector = c.getArgument("target", EntitySelector.class);
+                                            List<? extends Entity> entityList = selector.get(c.getSource());
+                                            for (Entity e : entityList) {
+                                                spawnParticle(c.getSource(), e.x, e.y, e.z, motion.getX(0), motion.getY(0), motion.getZ(0), particleId, data, maxDist);
+                                            }
+                                            return Command.SINGLE_SUCCESS;
+                                        }))
+                                )
+                            )
+                        )
+                    )
+            );
+    }
+
+    public static void spawnParticle(CommandSource commandSource, double x, double y, double z, @Nullable Double motionX, @Nullable Double motionY, @Nullable Double motionZ, String particleId, @Nullable Integer data, @Nullable Double maxDistance) {
+        commandSource.getWorld().spawnParticle(
+            particleId,
+            x,
+            y,
+            z,
+            motionX == null ? 0 : motionX,
+            motionY == null ? 0 : motionY,
+            motionZ == null ? 0 : motionZ,
+            data == null ? 0 : data,
+            maxDistance == null ? 16 : maxDistance);
+    }
+}
diff --git a/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java b/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
index ce1c34d85..26c7785d0 100644
--- a/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
+++ b/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
@@ -11,6 +11,7 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.command.util.CommandHelper;
 
+import java.util.Locale;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.Consumer;
 
@@ -56,11 +57,21 @@ public class ItemStackArgumentParser extends ArgumentParser {
     }
 
     private void parseItem() throws CommandSyntaxException {
-        String string = this.reader.readString();
+        StringBuilder builder = new StringBuilder();
+        while (reader.canRead()) {
+            char peak = reader.peek();
+            if (peak == '[' || peak == '{' || peak == ' ') {
+                break;
+            }
+            builder.append(reader.read());
+        }
+        String string = builder.toString();
+        System.out.println(string);
         for (Item itemInList : Item.itemsList) {
             if (itemInList == null) continue;
-            if (CommandHelper.matchesKeyString(itemInList.getKey(), string)) {
+            if (CommandHelper.matchesNamespaceId(itemInList.namespaceID, string)) {
                 this.item = itemInList;
+                break;
             }
         }
     }
diff --git a/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java b/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
index d459e8ae3..83306f024 100644
--- a/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
+++ b/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
@@ -13,6 +13,7 @@ import net.minecraft.core.entity.ItemEntity;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.net.command.CommandSource;
 import net.minecraft.core.net.command.helpers.IntegerCoordinates;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.LoggedPrintStream;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.WorldSource;
@@ -90,6 +91,15 @@ public class CommandHelper {
         return checkedString.contains(".") && checkedString.length() - 1 >= checkedString.indexOf('.') + 1 && checkedString.substring(checkedString.indexOf('.') + 1).equals(input);
     }
 
+    public static boolean matchesNamespaceId(NamespaceID namespaceID, String input) {
+        if (input.contains(":")) {
+            return namespaceID.toString().equalsIgnoreCase(input);
+        } else if (namespaceID.namespace.equals("minecraft")) {
+            return namespaceID.value.equalsIgnoreCase(input);
+        }
+        return false;
+    }
+
     public static String getEntityName(Entity entity) {
         if (entity instanceof Mob) {
             if (!LoggedPrintStream.removeColorCodes(((Mob) entity).getDisplayName()).isEmpty()) {
diff --git a/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java b/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
index c0027feda..4c7c487a5 100644
--- a/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
@@ -26,7 +26,7 @@ public class AESSendKeyPacket extends Packet
 	public void read(DataInputStream dis)
             throws IOException
     {
-        KEY = readString(dis, 344);
+        KEY = readString(dis, MAX_AES_KEY_SIZE);
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java b/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
index 19bbec4b7..6ee96204b 100644
--- a/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
@@ -57,7 +57,7 @@ public class AddMobPacket extends Packet
         yaw = dis.readByte();
         pitch = dis.readByte();
         unpackedData = SynchedEntityData.unpack(dis);
-        nickname = readString(dis, 32);
+        nickname = readString(dis, MAX_NICKNAME_SIZE);
         chatColor = dis.readByte();
     }
 
diff --git a/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java b/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
index 91e537c1c..908d73593 100644
--- a/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
@@ -49,7 +49,7 @@ public class AddPlayerPacket extends Packet
         throws IOException
     {
         entityId = dis.readInt();
-        name = readString(dis, 16);
+        name = readString(dis, MAX_USERNAME_SIZE);
         uuid = readUUID(dis);
         xPosition = dis.readInt();
         yPosition = dis.readInt();
@@ -57,7 +57,7 @@ public class AddPlayerPacket extends Packet
         rotation = dis.readByte();
         pitch = dis.readByte();
         currentItem = dis.readShort();
-        nickname = readString(dis, 32);
+        nickname = readString(dis, MAX_NICKNAME_SIZE);
         chatColor = dis.readByte();
 
         if (dis.readByte() == 1) {
diff --git a/src/main/java/net/minecraft/core/net/packet/ChatPacket.java b/src/main/java/net/minecraft/core/net/packet/ChatPacket.java
index 2067a6458..ad9490cbe 100644
--- a/src/main/java/net/minecraft/core/net/packet/ChatPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ChatPacket.java
@@ -47,7 +47,7 @@ public class ChatPacket extends Packet {
 	@Override
 	public void read(DataInputStream in) throws IOException {
 		type = in.readByte();
-		message = readString(in, 1024);
+		message = readString(in, MAX_MESSAGE_SIZE);
 		encrypted = in.readBoolean();
 	}
 
diff --git a/src/main/java/net/minecraft/core/net/packet/CustomPayloadPacket.java b/src/main/java/net/minecraft/core/net/packet/CustomPayloadPacket.java
index 941706a31..1834a6d4b 100644
--- a/src/main/java/net/minecraft/core/net/packet/CustomPayloadPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/CustomPayloadPacket.java
@@ -7,7 +7,8 @@ import java.io.IOException;
 import net.minecraft.core.net.handler.PacketHandler;
 
 public class CustomPayloadPacket extends Packet {
-	
+	public static final int MAX_CHANNEL_SIZE = 128;
+
 	public String channel;
 	public byte[] data;
 	
@@ -28,7 +29,7 @@ public class CustomPayloadPacket extends Packet {
 	
 	@Override
 	public void read(DataInputStream in) throws IOException {
-		this.channel = readString(in, 20);
+		this.channel = readString(in, MAX_CHANNEL_SIZE);
 		int length = in.readInt();
 		
 		if(length > 0 && length < 32768) {
diff --git a/src/main/java/net/minecraft/core/net/packet/EntityNicknamePacket.java b/src/main/java/net/minecraft/core/net/packet/EntityNicknamePacket.java
index 659b3906c..e57a34f66 100644
--- a/src/main/java/net/minecraft/core/net/packet/EntityNicknamePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/EntityNicknamePacket.java
@@ -31,7 +31,7 @@ public class EntityNicknamePacket extends Packet
     @Override
     public void read(DataInputStream dis) throws IOException
     {
-        nickname = readString(dis, 32);
+        nickname = readString(dis, MAX_NICKNAME_SIZE);
         chatColor = dis.readByte();
     }
 
diff --git a/src/main/java/net/minecraft/core/net/packet/LoginPacket.java b/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
index e0004ee50..0b07c1fe4 100644
--- a/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
@@ -48,9 +48,9 @@ public class LoginPacket extends Packet
         throws IOException
     {
         playerEntityIdAndProtocolVersion = dis.readInt();
-        username = readString(dis, 16);
+        username = readString(dis, MAX_USERNAME_SIZE);
         uuid = readUUID(dis);
-        publicKey = readString(dis, 392);
+        publicKey = readString(dis, MAX_AES_KEY_SIZE);
         worldSeed = dis.readLong();
         dimensionId = dis.readByte();
         worldTypeId = dis.readByte();
diff --git a/src/main/java/net/minecraft/core/net/packet/Packet.java b/src/main/java/net/minecraft/core/net/packet/Packet.java
index bb5b4a064..c7686ea16 100644
--- a/src/main/java/net/minecraft/core/net/packet/Packet.java
+++ b/src/main/java/net/minecraft/core/net/packet/Packet.java
@@ -32,6 +32,12 @@ public abstract class Packet
     private static final Map<Class<? extends Packet>, Integer> packetClassToIdMap = new HashMap<>();
     private static final Set<Integer> clientBoundPacketIds = new HashSet<>();
     private static final Set<Integer> serverBoundPacketIds = new HashSet<>();
+
+    public static final int MAX_USERNAME_SIZE = 16;
+    public static final int MAX_NICKNAME_SIZE = 48;
+    public static final int MAX_AES_KEY_SIZE = 392;
+    public static final int MAX_MESSAGE_SIZE = 1024;
+
     public final long creationTimeMillis = System.currentTimeMillis();
     public boolean isChunkDataPacket;
 
diff --git a/src/main/java/net/minecraft/core/net/packet/PlayerListPacket.java b/src/main/java/net/minecraft/core/net/packet/PlayerListPacket.java
index 0fc74c371..476ca8e46 100644
--- a/src/main/java/net/minecraft/core/net/packet/PlayerListPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PlayerListPacket.java
@@ -7,7 +7,7 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 
 public class PlayerListPacket extends Packet {
-	
+	public static final int MAX_SCORE_STRING_SIZE = 256;
 	public String[] players;
 	/**
 	 * Scores are sent as a String to allow server mods to customize the player list
@@ -32,8 +32,8 @@ public class PlayerListPacket extends Packet {
 		scores = new String[count];
 		
 		for(int i=0; i < count; i++) {
-			players[i] = readString(in, 1024);
-			scores[i] = readString(in, 1024);
+			players[i] = readString(in, MAX_NICKNAME_SIZE);
+			scores[i] = readString(in, MAX_SCORE_STRING_SIZE);
 		}
 	}
 
diff --git a/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java b/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
index c071a84dc..22dfed246 100644
--- a/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
@@ -25,7 +25,7 @@ public class PreLoginPacket extends Packet
 	public void read(DataInputStream dis)
         throws IOException
     {
-        username = readString(dis, 32);
+        username = readString(dis, MAX_USERNAME_SIZE);
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java b/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
index 6fd51377a..d01c02d68 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
@@ -1,5 +1,6 @@
 package net.minecraft.core.net.packet;
 
+import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.DataInputStream;
@@ -30,7 +31,7 @@ public class SetMobSpawnerPacket extends Packet {
         xPosition = dis.readInt();
         yPosition = dis.readShort();
         zPosition = dis.readInt();
-        spawnType = readString(dis, 16);
+        spawnType = readString(dis, EntityDispatcher.getLargestIdSize());
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java b/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
index c3c0fb1af..f5eeb6e94 100644
--- a/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
@@ -1,5 +1,6 @@
 package net.minecraft.core.net.packet;
 
+import net.minecraft.core.block.entity.SignBlockEntity;
 import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
@@ -36,7 +37,7 @@ public class SignUpdatePacket extends Packet
         signLines = new String[4];
         for(int i = 0; i < 4; i++)
         {
-            signLines[i] = readString(dis, 15);
+            signLines[i] = readString(dis, SignBlockEntity.MAX_LINE_SIZE);
         }
         picture = dis.readInt();
         color = dis.readInt();
diff --git a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
index 69be2e80f..bdba2be9f 100644
--- a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
@@ -34,8 +34,8 @@ public class UpdatePlayerProfilePacket extends Packet
 	public void read(DataInputStream dis)
             throws IOException
     {
-        username = readString(dis, 16);
-        nickname = readString(dis, 32);
+        username = readString(dis, MAX_USERNAME_SIZE);
+        nickname = readString(dis, MAX_NICKNAME_SIZE);
         uuid = readUUID(dis);
         score = dis.readInt();
         chatColor = dis.readByte();
diff --git a/src/main/java/net/minecraft/core/world/data/SynchedEntityData.java b/src/main/java/net/minecraft/core/world/data/SynchedEntityData.java
index f21f66bf3..acfc63fd0 100644
--- a/src/main/java/net/minecraft/core/world/data/SynchedEntityData.java
+++ b/src/main/java/net/minecraft/core/world/data/SynchedEntityData.java
@@ -32,6 +32,9 @@ public class SynchedEntityData
 
     public static final int META_NULL = 0b0000_0001;
 
+    // Limits
+    public static final int MAX_STRING_SIZE = 1024;
+
     public static final int END_MARKER = 127;
     private static final HashMap<Class<?>, Integer> DATA_TYPES = new HashMap<>();
     private final Map<Integer, @NotNull DataItem<?>> itemsById = new HashMap<>();
@@ -316,7 +319,7 @@ public class SynchedEntityData
                         di = new DataItem<>(type, id, dis.readFloat());
                         break;
                     case TYPE_STRING:
-                        di = new DataItem<>(type, id, Packet.readString(dis, 64));
+                        di = new DataItem<>(type, id, Packet.readString(dis, MAX_STRING_SIZE));
                         break;
                     case TYPE_ITEMSTACK:
                         short itemId = dis.readShort();
diff --git a/src/main/java/net/minecraft/server/net/command/commands/ColorCommand.java b/src/main/java/net/minecraft/server/net/command/commands/ColorCommand.java
index b3b11947c..3174b33bc 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/ColorCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/ColorCommand.java
@@ -32,7 +32,7 @@ public class ColorCommand {
                     if (player == null) throw CommandExceptions.notInWorld().create();
 
                     TextFormatting color = TextFormatting.get(player.chatColor);
-                    source.sendMessage(I18n.getInstance().translateKeyAndFormat("commands.commander.color.get.success", color + color.getNames()[0]));
+                    source.sendMessage(I18n.getInstance().translateKeyAndFormat("command.commands.color.get.success", color + color.getNames()[0]));
                     return Command.SINGLE_SUCCESS;
                 })
                 .then(RequiredArgumentBuilder.<CommandSource, EntitySelector>argument("target", EntityArgumentType.player())
@@ -45,7 +45,7 @@ public class ColorCommand {
                         ServerPlayer player = (ServerPlayer) entitySelector.get(source).get(0);
 
                         TextFormatting color = TextFormatting.get(player.chatColor);
-                        source.sendMessage(I18n.getInstance().translateKeyAndFormat("commands.commander.color.get.success_other", color + color.getNames()[0]));
+                        source.sendMessage(I18n.getInstance().translateKeyAndFormat("command.commands.color.get.success_other", color + color.getNames()[0]));
                         return Command.SINGLE_SUCCESS;
                     })))
             .then(LiteralArgumentBuilder.<CommandSource>literal("set")
@@ -303,10 +303,10 @@ public class ColorCommand {
         player.chatColor = colorId;
         TextFormatting color = TextFormatting.get(colorId);
         if (player == source.getSender()) {
-            source.sendTranslatableMessage("commands.commander.color.set.success", color + color.getNames()[0]);
+            source.sendTranslatableMessage("command.commands.color.set.success", color + color.getNames()[0]);
         } else {
-            source.sendTranslatableMessage("commands.commander.color.set.success_other", CommandHelper.getEntityName(player), color + color.getNames()[0]);
-            source.sendTranslatableMessage(player, "commands.commander.color.set.success_receiver", color + color.getNames()[0]);
+            source.sendTranslatableMessage("command.commands.color.set.success_other", CommandHelper.getEntityName(player), color + color.getNames()[0]);
+            source.sendTranslatableMessage(player, "command.commands.color.set.success_receiver", color + color.getNames()[0]);
         }
         return Command.SINGLE_SUCCESS;
     }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/DeopCommand.java b/src/main/java/net/minecraft/server/net/command/commands/DeopCommand.java
index 6b0436b5e..318c11636 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/DeopCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/DeopCommand.java
@@ -19,7 +19,7 @@ import net.minecraft.server.entity.player.ServerPlayer;
 import java.util.List;
 
 public class DeopCommand {
-    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("commands.commander.deop.exception_failure"));
+    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("command.commands.deop.exception_failure"));
 
     public static void register(CommandDispatcher<CommandSource> dispatcher) {
         dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("deop")
@@ -41,8 +41,8 @@ public class DeopCommand {
                         if (player.isOperator()) {
                             deoppedSomeone = true;
                             server.playerList.deopPlayer(player.uuid);
-                            source.sendTranslatableMessage("commands.commander.deop.success", player.username);
-                            source.sendTranslatableMessage(player, "commands.commander.deop.success_receiver");
+                            source.sendTranslatableMessage("command.commands.deop.success", player.username);
+                            source.sendTranslatableMessage(player, "command.commands.deop.success_receiver");
                         }
                         server.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
                     }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/DifficultyCommand.java b/src/main/java/net/minecraft/server/net/command/commands/DifficultyCommand.java
index f6ef35440..e5cfa81ee 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/DifficultyCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/DifficultyCommand.java
@@ -22,19 +22,19 @@ public class DifficultyCommand {
                     CommandSource source = c.getSource();
                     switch (source.getWorld().getDifficulty()) {
                         case PEACEFUL:
-                            source.sendTranslatableMessage("commands.commander.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.peaceful"));
+                            source.sendTranslatableMessage("command.commands.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.peaceful"));
                             break;
                         case EASY:
-                            source.sendTranslatableMessage("commands.commander.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.easy"));
+                            source.sendTranslatableMessage("command.commands.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.easy"));
                             break;
                         case NORMAL:
-                            source.sendTranslatableMessage("commands.commander.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.normal"));
+                            source.sendTranslatableMessage("command.commands.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.normal"));
                             break;
                         case HARD:
-                            source.sendTranslatableMessage("commands.commander.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.hard"));
+                            source.sendTranslatableMessage("command.commands.difficulty.query.success", I18n.getInstance().translateKey("options.difficulty.hard"));
                             break;
                         default:
-                            source.sendTranslatableMessage("commands.commander.difficulty.query.success_unknown");
+                            source.sendTranslatableMessage("command.commands.difficulty.query.success_unknown");
                             break;
                     }
                     return Command.SINGLE_SUCCESS;
@@ -72,7 +72,7 @@ public class DifficultyCommand {
             world.setDifficulty(difficulty, true);
         }
         server.difficulty = difficulty;
-        source.sendTranslatableMessage("commands.commander.difficulty.set.success", I18n.getInstance().translateKey("options.difficulty." + difficultyStrings.get(difficulty)));
+        source.sendTranslatableMessage("command.commands.difficulty.set.success", I18n.getInstance().translateKey("options.difficulty." + difficultyStrings.get(difficulty)));
         return Command.SINGLE_SUCCESS;
     }
 }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/EmotesCommand.java b/src/main/java/net/minecraft/server/net/command/commands/EmotesCommand.java
index 148f5182c..1e325dddc 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/EmotesCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/EmotesCommand.java
@@ -14,7 +14,7 @@ public class EmotesCommand {
         dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("emotes")
             .executes(c -> {
                 CommandSource source = c.getSource();
-                source.sendTranslatableMessage("commands.commander.emotes.success");
+                source.sendTranslatableMessage("command.commands.emotes.success");
                 ArrayList<Map.Entry<String, Character>> entryList = new ArrayList<Map.Entry<String, Character>>(ChatEmotes.getEmotes().entrySet());
                 entryList.sort(Map.Entry.comparingByKey());
                 for (Map.Entry<String, Character> entry : entryList) {
diff --git a/src/main/java/net/minecraft/server/net/command/commands/ListCommand.java b/src/main/java/net/minecraft/server/net/command/commands/ListCommand.java
index 81fffcc7c..40ea0835b 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/ListCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/ListCommand.java
@@ -12,7 +12,7 @@ import net.minecraft.server.net.command.IServerCommandSource;
 import net.minecraft.core.net.command.exceptions.CommandExceptions;
 
 public class ListCommand {
-    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("commands.commander.list.exception_failure"));
+    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("command.commands.list.exception_failure"));
 
     public static void register(CommandDispatcher<CommandSource> dispatcher) {
         dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("list")
@@ -33,12 +33,12 @@ public class ListCommand {
                             builder.append(CommandHelper.getEntityName(server.playerList.playerEntities.get(i)));
                         }
                         if (playerCount == 1) {
-                            source.sendTranslatableMessage("commands.commander.list.success_single", playerCount, builder.toString());
+                            source.sendTranslatableMessage("command.commands.list.success_single", playerCount, builder.toString());
                         } else {
-                            source.sendTranslatableMessage("commands.commander.list.success_multiple", playerCount, builder.toString());
+                            source.sendTranslatableMessage("command.commands.list.success_multiple", playerCount, builder.toString());
                         }
                     } else {
-                        source.sendTranslatableMessage("commands.commander.list.success_too_long", playerCount);
+                        source.sendTranslatableMessage("command.commands.list.success_too_long", playerCount);
                     }
 
                     return Command.SINGLE_SUCCESS;
diff --git a/src/main/java/net/minecraft/server/net/command/commands/NicknameCommand.java b/src/main/java/net/minecraft/server/net/command/commands/NicknameCommand.java
index f828b62c0..08c27d29e 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/NicknameCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/NicknameCommand.java
@@ -19,8 +19,8 @@ import net.minecraft.server.entity.player.ServerPlayer;
 import java.util.List;
 
 public class NicknameCommand {
-    private static final SimpleCommandExceptionType NICKNAME_TOO_LARGE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("commands.commander.nickname.exception_too_large"));
-    private static final SimpleCommandExceptionType NICKNAME_TOO_SMALL = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("commands.commander.nickname.exception_too_small"));
+    private static final SimpleCommandExceptionType NICKNAME_TOO_LARGE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("command.commands.nickname.exception_too_large"));
+    private static final SimpleCommandExceptionType NICKNAME_TOO_SMALL = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("command.commands.nickname.exception_too_small"));
 
     public static void register(CommandDispatcher<CommandSource> dispatcher) {
         CommandNode<CommandSource> command = dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("nickname")
@@ -42,10 +42,10 @@ public class NicknameCommand {
                             player.hadNicknameSet = true;
                             player.mcServer.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
                             if (source.getSender() == player) {
-                                source.sendTranslatableMessage("commands.commander.nickname.set.success", nickname);
+                                source.sendTranslatableMessage("command.commands.nickname.set.success", nickname);
                             } else {
-                                source.sendTranslatableMessage("commands.commander.nickname.set.success_other", player.username, nickname);
-                                source.sendTranslatableMessage(player, "commands.commander.nickname.set.success_receiver", nickname);
+                                source.sendTranslatableMessage("command.commands.nickname.set.success_other", player.username, nickname);
+                                source.sendTranslatableMessage(player, "command.commands.nickname.set.success_receiver", nickname);
                             }
                             return Command.SINGLE_SUCCESS;
                         })))
@@ -64,7 +64,7 @@ public class NicknameCommand {
                         player.hadNicknameSet = true;
                         player.mcServer.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
 
-                        source.sendTranslatableMessage("commands.commander.nickname.set.success", nickname);
+                        source.sendTranslatableMessage("command.commands.nickname.set.success", nickname);
 
                         return Command.SINGLE_SUCCESS;
                     })))
@@ -76,7 +76,7 @@ public class NicknameCommand {
                         List<? extends Entity> entities = entitySelector.get(source);
                         ServerPlayer player = (ServerPlayer) entities.get(0);
 
-                        source.sendTranslatableMessage("commands.commander.nickname.get.success", player.username, player.nickname);
+                        source.sendTranslatableMessage("command.commands.nickname.get.success", player.username, player.nickname);
                         return Command.SINGLE_SUCCESS;
                     })))
             .then(LiteralArgumentBuilder.<CommandSource>literal("reset")
@@ -93,10 +93,10 @@ public class NicknameCommand {
                         player.hadNicknameSet = false;
                         player.mcServer.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
                         if (source.getSender() == player) {
-                            source.sendTranslatableMessage("commands.commander.nickname.reset.success");
+                            source.sendTranslatableMessage("command.commands.nickname.reset.success");
                         } else {
-                            source.sendTranslatableMessage("commands.commander.nickname.reset.success_other", player.username);
-                            source.sendTranslatableMessage(player, "commands.commander.nickname.reset.success_receiver");
+                            source.sendTranslatableMessage("command.commands.nickname.reset.success_other", player.username);
+                            source.sendTranslatableMessage(player, "command.commands.nickname.reset.success_receiver");
                         }
                         return Command.SINGLE_SUCCESS;
                     }))
@@ -111,7 +111,7 @@ public class NicknameCommand {
                     player.hadNicknameSet = false;
                     player.mcServer.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
 
-                    source.sendTranslatableMessage("commands.commander.nickname.reset.success", player.username);
+                    source.sendTranslatableMessage("command.commands.nickname.reset.success", player.username);
 
                     return Command.SINGLE_SUCCESS;
                 })));
diff --git a/src/main/java/net/minecraft/server/net/command/commands/OpCommand.java b/src/main/java/net/minecraft/server/net/command/commands/OpCommand.java
index 26f73684b..57deba69f 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/OpCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/OpCommand.java
@@ -19,7 +19,7 @@ import net.minecraft.server.entity.player.ServerPlayer;
 import java.util.List;
 
 public class OpCommand {
-    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("commands.commander.op.exception_failure"));
+    private static final SimpleCommandExceptionType FAILURE = new SimpleCommandExceptionType(() -> I18n.getInstance().translateKey("command.commands.op.exception_failure"));
 
     public static void register(CommandDispatcher<CommandSource> dispatcher) {
         dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("op")
@@ -41,8 +41,8 @@ public class OpCommand {
                         if (!player.isOperator()) {
                             oppedSomeone = true;
                             server.playerList.opPlayer(player.uuid);
-                            source.sendTranslatableMessage("commands.commander.op.success", player.username);
-                            source.sendTranslatableMessage(player, "commands.commander.op.success_receiver");
+                            source.sendTranslatableMessage("command.commands.op.success", player.username);
+                            source.sendTranslatableMessage(player, "command.commands.op.success_receiver");
                         }
                         server.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
                     }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/ScoreCommand.java b/src/main/java/net/minecraft/server/net/command/commands/ScoreCommand.java
index 997c96d3f..ad1833461 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/ScoreCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/ScoreCommand.java
@@ -27,7 +27,7 @@ public class ScoreCommand {
                     CommandSource source = c.getSource();
                     Player player = source.getSender();
                     if (player == null) throw CommandExceptions.notInWorld().create();
-                    source.sendTranslatableMessage("commands.commander.score.get.success", player.score);
+                    source.sendTranslatableMessage("command.commands.score.get.success", player.score);
                     return player.score;
                 })
                 .then(RequiredArgumentBuilder.<CommandSource, EntitySelector>argument("target", EntityArgumentType.player())
@@ -37,9 +37,9 @@ public class ScoreCommand {
                         EntitySelector entitySelector = c.getArgument("target", EntitySelector.class);
                         Player player = (Player) entitySelector.get(source).get(0);
                         if (player == source.getSender()) {
-                            source.sendTranslatableMessage("commands.commander.score.get.success", player.score);
+                            source.sendTranslatableMessage("command.commands.score.get.success", player.score);
                         } else {
-                            source.sendTranslatableMessage("commands.commander.score.get.success_other", CommandHelper.getEntityName(player), player.score);
+                            source.sendTranslatableMessage("command.commands.score.get.success_other", CommandHelper.getEntityName(player), player.score);
                         }
                         return player.score;
                     })))
@@ -79,10 +79,10 @@ public class ScoreCommand {
         player.score = score;
         server.playerList.sendPacketToAllPlayers(new UpdatePlayerProfilePacket(player.username, player.nickname, player.uuid, player.score, player.chatColor, true, player.isOperator()));
         if (player == source.getSender()) {
-            source.sendTranslatableMessage("commands.commander.score.set.success", score);
+            source.sendTranslatableMessage("command.commands.score.set.success", score);
         } else {
-            source.sendTranslatableMessage("commands.commander.score.set.success_other", CommandHelper.getEntityName(player), score);
-            source.sendTranslatableMessage(player, "commands.commander.score.set.success_receiver", score);
+            source.sendTranslatableMessage("command.commands.score.set.success_other", CommandHelper.getEntityName(player), score);
+            source.sendTranslatableMessage(player, "command.commands.score.set.success_receiver", score);
         }
     }
 }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/StopCommand.java b/src/main/java/net/minecraft/server/net/command/commands/StopCommand.java
index 60511eeca..409b1cc57 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/StopCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/StopCommand.java
@@ -19,7 +19,7 @@ public class StopCommand {
 
                     MinecraftServer server = ((IServerCommandSource)source).getServer();
 
-                    source.sendTranslatableMessage("commands.commander.stop.success");
+                    source.sendTranslatableMessage("command.commands.stop.success");
                     if (server.playerList != null) {
                         server.playerList.savePlayerStates();
                     }
diff --git a/src/main/java/net/minecraft/server/net/command/commands/WhoIsCommand.java b/src/main/java/net/minecraft/server/net/command/commands/WhoIsCommand.java
index 09c82d5b7..11e46f11f 100644
--- a/src/main/java/net/minecraft/server/net/command/commands/WhoIsCommand.java
+++ b/src/main/java/net/minecraft/server/net/command/commands/WhoIsCommand.java
@@ -20,7 +20,7 @@ public class WhoIsCommand {
                             EntitySelector entitySelector = c.getArgument("target", EntitySelector.class);
                             Player player = (Player) entitySelector.get(source).get(0);
 
-                            source.sendTranslatableMessage("commands.commander.whois.success", CommandHelper.getEntityName(player), player.username);
+                            source.sendTranslatableMessage("command.commands.whois.success", CommandHelper.getEntityName(player), player.username);
                             return Command.SINGLE_SUCCESS;
                         })));
         dispatcher.register(LiteralArgumentBuilder.<CommandSource>literal("realname")
diff --git a/src/main/resources/credits.txt b/src/main/resources/credits.txt
index a7b6497c5..4cc5a309e 100644
--- a/src/main/resources/credits.txt
+++ b/src/main/resources/credits.txt
@@ -4,11 +4,11 @@ jonkadelic
 
 *Developers
 Bestsoft100
+Bigjango
 Flamarine
 Martin (sunsetsatellite)
 NebulaBC
 Useless (uselessbullets)
-Bigjango
 
 *Artists
 afk (away.from.keyboard)
@@ -20,14 +20,14 @@ Jej Chainstar
 Orknarok_666
 
 *Special Thanks
+AndroidDr (Pedro270707)
 DirtPiper
-Vivian (vivianfox.)
+Doop (brokendoop)
+LukeisStuff
 Snowman64
-AndroidDr (Pedro270707)
 Tocinin
-LukeIsStuff
+Vivian (vivianfox.)
 Zaraz7
-Doop (brokendoop)
 
 !Thank you for playing
 !Better than Adventure!
\ No newline at end of file
