diff --git a/doc/MinecraftVersions.md b/doc/MinecraftVersions.md
index e57321d50..8632432bc 100644
--- a/doc/MinecraftVersions.md
+++ b/doc/MinecraftVersions.md
@@ -35,4 +35,4 @@ you need to provide the full packet mapping. The id depends on the order.
---
-Note: Do not check for protocolIds (especially in EntityMetaData or Packets), this data is not reliable! Use version Ids.
\ No newline at end of file
+Note: Do not check for protocolIds (especially in EntityMetaData or Packets), this data is not reliable (because snapshot ids are that much higher)! Use version Ids.
diff --git a/pom.xml b/pom.xml
index 4973cb567..adb07dab3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -130,13 +130,13 @@
org.openjfx
javafx-controls
- 16-ea+3
+ 16-ea+4
pom
org.openjfx
javafx-fxml
- 16-ea+3
+ 16-ea+4
pom
@@ -149,5 +149,10 @@
jcl-core
2.8
+
+ commons-cli
+ commons-cli
+ 1.4
+
diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.java b/src/main/java/de/bixilon/minosoft/Minosoft.java
index 7734affc2..403bb9226 100644
--- a/src/main/java/de/bixilon/minosoft/Minosoft.java
+++ b/src/main/java/de/bixilon/minosoft/Minosoft.java
@@ -30,6 +30,7 @@ import de.bixilon.minosoft.modding.loading.Priorities;
import de.bixilon.minosoft.protocol.protocol.LANServerListener;
import de.bixilon.minosoft.render.GameWindow;
import de.bixilon.minosoft.util.CountUpAndDownLatch;
+import de.bixilon.minosoft.util.MinosoftCommandLineArguments;
import de.bixilon.minosoft.util.Util;
import de.bixilon.minosoft.util.mojang.api.MojangAccount;
import de.bixilon.minosoft.util.task.AsyncTaskWorker;
@@ -54,6 +55,7 @@ public final class Minosoft {
public static Configuration config;
public static void main(String[] args) {
+ MinosoftCommandLineArguments.parseCommandLineArguments(args);
Log.info("Starting...");
AsyncTaskWorker taskWorker = new AsyncTaskWorker("StartUp");
diff --git a/src/main/java/de/bixilon/minosoft/config/ConfigMigrationException.java b/src/main/java/de/bixilon/minosoft/config/ConfigMigrationException.java
index 5179c7e82..0626923b2 100644
--- a/src/main/java/de/bixilon/minosoft/config/ConfigMigrationException.java
+++ b/src/main/java/de/bixilon/minosoft/config/ConfigMigrationException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.config;
public class ConfigMigrationException extends Exception {
+
public ConfigMigrationException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/config/Configuration.java b/src/main/java/de/bixilon/minosoft/config/Configuration.java
index 55fff4b43..70da34774 100644
--- a/src/main/java/de/bixilon/minosoft/config/Configuration.java
+++ b/src/main/java/de/bixilon/minosoft/config/Configuration.java
@@ -33,19 +33,19 @@ public class Configuration {
private final Object lock = new Object();
public Configuration() throws IOException, ConfigMigrationException {
- File file = new File(StaticConfiguration.HOME_DIR + "config/" + StaticConfiguration.CONFIG_FILENAME);
+ File file = new File(StaticConfiguration.HOME_DIRECTORY + "config/" + StaticConfiguration.CONFIG_FILENAME);
if (!file.exists()) {
// no configuration file
InputStream input = getClass().getResourceAsStream("/config/" + StaticConfiguration.CONFIG_FILENAME);
if (input == null) {
throw new FileNotFoundException(String.format("[Config] Missing default config: %s!", StaticConfiguration.CONFIG_FILENAME));
}
- File folder = new File(StaticConfiguration.HOME_DIR + "config/");
+ File folder = new File(StaticConfiguration.HOME_DIRECTORY + "config/");
if (!folder.exists() && !folder.mkdirs()) {
throw new IOException("[Config] Could not create config folder!");
}
Files.copy(input, Paths.get(file.getAbsolutePath()));
- file = new File(StaticConfiguration.HOME_DIR + "config/" + StaticConfiguration.CONFIG_FILENAME);
+ file = new File(StaticConfiguration.HOME_DIRECTORY + "config/" + StaticConfiguration.CONFIG_FILENAME);
}
config = Util.readJsonFromFile(file.getAbsolutePath());
int configVersion = getInt(ConfigurationPaths.IntegerPaths.GENERAL_CONFIG_VERSION);
@@ -67,7 +67,7 @@ public class Configuration {
}
}
// write config to temp file, delete original config, rename temp file to original file to avoid conflicts if minosoft gets closed while saving the config
- File tempFile = new File(StaticConfiguration.HOME_DIR + "config/" + StaticConfiguration.CONFIG_FILENAME + ".tmp");
+ File tempFile = new File(StaticConfiguration.HOME_DIRECTORY + "config/" + StaticConfiguration.CONFIG_FILENAME + ".tmp");
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter writer;
try {
diff --git a/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java b/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java
index 8c8843e4b..2264c6e0f 100644
--- a/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java
+++ b/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java
@@ -18,13 +18,13 @@ import de.bixilon.minosoft.util.OSUtil;
import java.io.File;
public class StaticConfiguration {
- public static final String CONFIG_FILENAME = "config.json"; // Filename of minosoft's base configuration (located in AppData/Minosoft/config)
- public static final boolean SKIP_MOJANG_AUTHENTICATION = false; // disables all connections to mojang
- public static final boolean COLORED_LOG = true; // the log should be colored with ANSI (does not affect base components)
- public static final boolean LOG_RELATIVE_TIME = false; // prefix all log messages with the relative start time in milliseconds instead of the formatted time
- public static final boolean VERBOSE_ENTITY_META_DATA_LOGGING = true; // if true, the entity meta data is getting serial
+ public static String CONFIG_FILENAME = "config.json"; // Filename of minosoft's base configuration (located in AppData/Minosoft/config)
+ public static boolean SKIP_MOJANG_AUTHENTICATION = false; // disables all connections to mojang
+ public static boolean COLORED_LOG = true; // the log should be colored with ANSI (does not affect base components)
+ public static boolean LOG_RELATIVE_TIME = false; // prefix all log messages with the relative start time in milliseconds instead of the formatted time
+ public static boolean VERBOSE_ENTITY_META_DATA_LOGGING = false; // if true, the entity meta data is getting serial
- public static final String HOME_DIR;
+ public static String HOME_DIRECTORY;
static {
// Sets Config.homeDir to the correct folder per OS
@@ -44,6 +44,6 @@ public class StaticConfiguration {
// failed creating folder
throw new RuntimeException(String.format("Could not create home folder (%s)!", homeDir));
}
- HOME_DIR = folder.getAbsolutePath() + "/";
+ HOME_DIRECTORY = folder.getAbsolutePath() + "/";
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/ChangeableIdentifier.java b/src/main/java/de/bixilon/minosoft/data/ChangeableIdentifier.java
index 2e74bd6fc..a0b56f4c5 100644
--- a/src/main/java/de/bixilon/minosoft/data/ChangeableIdentifier.java
+++ b/src/main/java/de/bixilon/minosoft/data/ChangeableIdentifier.java
@@ -19,7 +19,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import java.util.TreeMap;
public class ChangeableIdentifier extends VersionValueMap {
- String mod = "minecraft";
+ String mod = ProtocolDefinition.DEFAULT_MOD;
public ChangeableIdentifier(String legacy, String water) {
values.put(Versions.LOWEST_VERSION_SUPPORTED.getVersionId(), legacy);
@@ -47,12 +47,12 @@ public class ChangeableIdentifier extends VersionValueMap {
public boolean isValidName(String name, int versionId) {
name = name.toLowerCase();
if (name.indexOf(":") != 0) {
- String[] splittedName = name.split(":", 2);
- if (!mod.equals(splittedName[0])) {
+ String[] splitName = name.split(":", 2);
+ if (!mod.equals(splitName[0])) {
// mod is not correct
return false;
}
- name = splittedName[1];
+ name = splitName[1];
// split and check mod
}
diff --git a/src/main/java/de/bixilon/minosoft/data/EntityClassMappings.java b/src/main/java/de/bixilon/minosoft/data/EntityClassMappings.java
index 844f5d133..5dd3578d2 100644
--- a/src/main/java/de/bixilon/minosoft/data/EntityClassMappings.java
+++ b/src/main/java/de/bixilon/minosoft/data/EntityClassMappings.java
@@ -43,124 +43,124 @@ import de.bixilon.minosoft.data.entities.entities.npc.WanderingTrader;
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity;
import de.bixilon.minosoft.data.entities.entities.projectile.*;
import de.bixilon.minosoft.data.entities.entities.vehicle.*;
-import javafx.util.Pair;
+import de.bixilon.minosoft.data.mappings.ModIdentifier;
public final class EntityClassMappings {
- public static final HashBiMap, Pair> ENTITY_CLASS_MAPPINGS = HashBiMap.create();
+ public static final HashBiMap, ModIdentifier> ENTITY_CLASS_MAPPINGS = HashBiMap.create();
static {
- ENTITY_CLASS_MAPPINGS.put(AreaEffectCloud.class, new Pair<>("minecraft", "area_effect_cloud"));
- ENTITY_CLASS_MAPPINGS.put(ArmorStand.class, new Pair<>("minecraft", "armor_stand"));
- ENTITY_CLASS_MAPPINGS.put(Arrow.class, new Pair<>("minecraft", "arrow"));
- ENTITY_CLASS_MAPPINGS.put(Bat.class, new Pair<>("minecraft", "bat"));
- ENTITY_CLASS_MAPPINGS.put(Bee.class, new Pair<>("minecraft", "bee"));
- ENTITY_CLASS_MAPPINGS.put(Blaze.class, new Pair<>("minecraft", "blaze"));
- ENTITY_CLASS_MAPPINGS.put(Boat.class, new Pair<>("minecraft", "boat"));
- ENTITY_CLASS_MAPPINGS.put(Cat.class, new Pair<>("minecraft", "cat"));
- ENTITY_CLASS_MAPPINGS.put(CaveSpider.class, new Pair<>("minecraft", "cave_spider"));
- ENTITY_CLASS_MAPPINGS.put(Chicken.class, new Pair<>("minecraft", "chicken"));
- ENTITY_CLASS_MAPPINGS.put(Cod.class, new Pair<>("minecraft", "cod"));
- ENTITY_CLASS_MAPPINGS.put(Cow.class, new Pair<>("minecraft", "cow"));
- ENTITY_CLASS_MAPPINGS.put(Creeper.class, new Pair<>("minecraft", "creeper"));
- ENTITY_CLASS_MAPPINGS.put(Dolphin.class, new Pair<>("minecraft", "dolphin"));
- ENTITY_CLASS_MAPPINGS.put(Donkey.class, new Pair<>("minecraft", "donkey"));
- ENTITY_CLASS_MAPPINGS.put(DragonFireball.class, new Pair<>("minecraft", "dragon_fireball"));
- ENTITY_CLASS_MAPPINGS.put(Drowned.class, new Pair<>("minecraft", "drowned"));
- ENTITY_CLASS_MAPPINGS.put(ElderGuardian.class, new Pair<>("minecraft", "elder_guardian"));
- ENTITY_CLASS_MAPPINGS.put(EndCrystal.class, new Pair<>("minecraft", "end_crystal"));
- ENTITY_CLASS_MAPPINGS.put(EnderDragon.class, new Pair<>("minecraft", "ender_dragon"));
- ENTITY_CLASS_MAPPINGS.put(Enderman.class, new Pair<>("minecraft", "enderman"));
- ENTITY_CLASS_MAPPINGS.put(Endermite.class, new Pair<>("minecraft", "endermite"));
- ENTITY_CLASS_MAPPINGS.put(Evoker.class, new Pair<>("minecraft", "evoker"));
- ENTITY_CLASS_MAPPINGS.put(EvokerFangs.class, new Pair<>("minecraft", "evoker_fangs"));
- ENTITY_CLASS_MAPPINGS.put(ExperienceOrb.class, new Pair<>("minecraft", "experience_orb"));
- ENTITY_CLASS_MAPPINGS.put(ThrownEyeOfEnder.class, new Pair<>("minecraft", "eye_of_ender"));
- ENTITY_CLASS_MAPPINGS.put(FallingBlock.class, new Pair<>("minecraft", "falling_block"));
- ENTITY_CLASS_MAPPINGS.put(FireworkRocketEntity.class, new Pair<>("minecraft", "firework_rocket"));
- ENTITY_CLASS_MAPPINGS.put(Fox.class, new Pair<>("minecraft", "fox"));
- ENTITY_CLASS_MAPPINGS.put(Ghast.class, new Pair<>("minecraft", "ghast"));
- ENTITY_CLASS_MAPPINGS.put(Giant.class, new Pair<>("minecraft", "giant"));
- ENTITY_CLASS_MAPPINGS.put(Guardian.class, new Pair<>("minecraft", "guardian"));
- ENTITY_CLASS_MAPPINGS.put(Hoglin.class, new Pair<>("minecraft", "hoglin"));
- ENTITY_CLASS_MAPPINGS.put(Horse.class, new Pair<>("minecraft", "horse"));
- ENTITY_CLASS_MAPPINGS.put(Husk.class, new Pair<>("minecraft", "husk"));
- ENTITY_CLASS_MAPPINGS.put(Illusioner.class, new Pair<>("minecraft", "illusioner"));
- ENTITY_CLASS_MAPPINGS.put(IronGolem.class, new Pair<>("minecraft", "iron_golem"));
- ENTITY_CLASS_MAPPINGS.put(ItemEntity.class, new Pair<>("minecraft", "item"));
- ENTITY_CLASS_MAPPINGS.put(ItemFrame.class, new Pair<>("minecraft", "item_frame"));
- ENTITY_CLASS_MAPPINGS.put(LargeFireball.class, new Pair<>("minecraft", "fireball"));
- ENTITY_CLASS_MAPPINGS.put(LeashFenceKnotEntity.class, new Pair<>("minecraft", "leash_knot"));
- ENTITY_CLASS_MAPPINGS.put(LightningBolt.class, new Pair<>("minecraft", "lightning_bolt"));
- ENTITY_CLASS_MAPPINGS.put(Llama.class, new Pair<>("minecraft", "llama"));
- ENTITY_CLASS_MAPPINGS.put(LlamaSpit.class, new Pair<>("minecraft", "llama_spit"));
- ENTITY_CLASS_MAPPINGS.put(MagmaCube.class, new Pair<>("minecraft", "magma_cube"));
- ENTITY_CLASS_MAPPINGS.put(Minecart.class, new Pair<>("minecraft", "minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartChest.class, new Pair<>("minecraft", "chest_minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartCommandBlock.class, new Pair<>("minecraft", "command_block_minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartFurnace.class, new Pair<>("minecraft", "furnace_minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartHopper.class, new Pair<>("minecraft", "hopper_minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartSpawner.class, new Pair<>("minecraft", "spawner_minecart"));
- ENTITY_CLASS_MAPPINGS.put(MinecartTNT.class, new Pair<>("minecraft", "tnt_minecart"));
- ENTITY_CLASS_MAPPINGS.put(Mule.class, new Pair<>("minecraft", "mule"));
- ENTITY_CLASS_MAPPINGS.put(Mooshroom.class, new Pair<>("minecraft", "mooshroom"));
- ENTITY_CLASS_MAPPINGS.put(Ocelot.class, new Pair<>("minecraft", "ocelot"));
- ENTITY_CLASS_MAPPINGS.put(Painting.class, new Pair<>("minecraft", "painting"));
- ENTITY_CLASS_MAPPINGS.put(Panda.class, new Pair<>("minecraft", "panda"));
- ENTITY_CLASS_MAPPINGS.put(Parrot.class, new Pair<>("minecraft", "parrot"));
- ENTITY_CLASS_MAPPINGS.put(Phantom.class, new Pair<>("minecraft", "phantom"));
- ENTITY_CLASS_MAPPINGS.put(Pig.class, new Pair<>("minecraft", "pig"));
- ENTITY_CLASS_MAPPINGS.put(Piglin.class, new Pair<>("minecraft", "piglin"));
- ENTITY_CLASS_MAPPINGS.put(PiglinBrute.class, new Pair<>("minecraft", "piglin_brute"));
- ENTITY_CLASS_MAPPINGS.put(Pillager.class, new Pair<>("minecraft", "pillager"));
- ENTITY_CLASS_MAPPINGS.put(PolarBear.class, new Pair<>("minecraft", "polar_bear"));
- ENTITY_CLASS_MAPPINGS.put(PrimedTNT.class, new Pair<>("minecraft", "tnt"));
- ENTITY_CLASS_MAPPINGS.put(PufferFish.class, new Pair<>("minecraft", "pufferfish"));
- ENTITY_CLASS_MAPPINGS.put(Rabbit.class, new Pair<>("minecraft", "rabbit"));
- ENTITY_CLASS_MAPPINGS.put(Ravenger.class, new Pair<>("minecraft", "ravager"));
- ENTITY_CLASS_MAPPINGS.put(Salmon.class, new Pair<>("minecraft", "salmon"));
- ENTITY_CLASS_MAPPINGS.put(Sheep.class, new Pair<>("minecraft", "sheep"));
- ENTITY_CLASS_MAPPINGS.put(Shulker.class, new Pair<>("minecraft", "shulker"));
- ENTITY_CLASS_MAPPINGS.put(ShulkerBullet.class, new Pair<>("minecraft", "shulker_bullet"));
- ENTITY_CLASS_MAPPINGS.put(Silverfish.class, new Pair<>("minecraft", "silverfish"));
- ENTITY_CLASS_MAPPINGS.put(Skeleton.class, new Pair<>("minecraft", "skeleton"));
- ENTITY_CLASS_MAPPINGS.put(SkeletonHorse.class, new Pair<>("minecraft", "skeleton_horse"));
- ENTITY_CLASS_MAPPINGS.put(Slime.class, new Pair<>("minecraft", "slime"));
- ENTITY_CLASS_MAPPINGS.put(SmallFireball.class, new Pair<>("minecraft", "small_fireball"));
- ENTITY_CLASS_MAPPINGS.put(SnowGolem.class, new Pair<>("minecraft", "snow_golem"));
- ENTITY_CLASS_MAPPINGS.put(ThrownSnowball.class, new Pair<>("minecraft", "snowball"));
- ENTITY_CLASS_MAPPINGS.put(SpectralArrow.class, new Pair<>("minecraft", "spectral_arrow"));
- ENTITY_CLASS_MAPPINGS.put(Spider.class, new Pair<>("minecraft", "spider"));
- ENTITY_CLASS_MAPPINGS.put(Squid.class, new Pair<>("minecraft", "squid"));
- ENTITY_CLASS_MAPPINGS.put(Stray.class, new Pair<>("minecraft", "stray"));
- ENTITY_CLASS_MAPPINGS.put(Strider.class, new Pair<>("minecraft", "strider"));
- ENTITY_CLASS_MAPPINGS.put(ThrownEgg.class, new Pair<>("minecraft", "egg"));
- ENTITY_CLASS_MAPPINGS.put(ThrownEnderPearl.class, new Pair<>("minecraft", "ender_pearl"));
- ENTITY_CLASS_MAPPINGS.put(ThrownExperienceBottle.class, new Pair<>("minecraft", "experience_bottle"));
- ENTITY_CLASS_MAPPINGS.put(ThrownPotion.class, new Pair<>("minecraft", "potion"));
- ENTITY_CLASS_MAPPINGS.put(ThrownTrident.class, new Pair<>("minecraft", "trident"));
- ENTITY_CLASS_MAPPINGS.put(TraderLlama.class, new Pair<>("minecraft", "trader_llama"));
- ENTITY_CLASS_MAPPINGS.put(TropicalFish.class, new Pair<>("minecraft", "tropical_fish"));
- ENTITY_CLASS_MAPPINGS.put(Turtle.class, new Pair<>("minecraft", "turtle"));
- ENTITY_CLASS_MAPPINGS.put(Vex.class, new Pair<>("minecraft", "vex"));
- ENTITY_CLASS_MAPPINGS.put(Villager.class, new Pair<>("minecraft", "villager"));
- ENTITY_CLASS_MAPPINGS.put(Vindicator.class, new Pair<>("minecraft", "vindicator"));
- ENTITY_CLASS_MAPPINGS.put(WanderingTrader.class, new Pair<>("minecraft", "wandering_trader"));
- ENTITY_CLASS_MAPPINGS.put(Witch.class, new Pair<>("minecraft", "witch"));
- ENTITY_CLASS_MAPPINGS.put(WitherBoss.class, new Pair<>("minecraft", "wither"));
- ENTITY_CLASS_MAPPINGS.put(WitherSkeleton.class, new Pair<>("minecraft", "wither_skeleton"));
- ENTITY_CLASS_MAPPINGS.put(WitherSkull.class, new Pair<>("minecraft", "wither_skull"));
- ENTITY_CLASS_MAPPINGS.put(Wolf.class, new Pair<>("minecraft", "wolf"));
- ENTITY_CLASS_MAPPINGS.put(Zoglin.class, new Pair<>("minecraft", "zoglin"));
- ENTITY_CLASS_MAPPINGS.put(Zombie.class, new Pair<>("minecraft", "zombie"));
- ENTITY_CLASS_MAPPINGS.put(ZombieHorse.class, new Pair<>("minecraft", "zombie_horse"));
- ENTITY_CLASS_MAPPINGS.put(ZombieVillager.class, new Pair<>("minecraft", "zombie_villager"));
- ENTITY_CLASS_MAPPINGS.put(ZombifiedPiglin.class, new Pair<>("minecraft", "zombified_piglin"));
- ENTITY_CLASS_MAPPINGS.put(PlayerEntity.class, new Pair<>("minecraft", "player"));
- ENTITY_CLASS_MAPPINGS.put(FishingHook.class, new Pair<>("minecraft", "fishing_bobber"));
+ ENTITY_CLASS_MAPPINGS.put(AreaEffectCloud.class, new ModIdentifier("area_effect_cloud"));
+ ENTITY_CLASS_MAPPINGS.put(ArmorStand.class, new ModIdentifier("armor_stand"));
+ ENTITY_CLASS_MAPPINGS.put(Arrow.class, new ModIdentifier("arrow"));
+ ENTITY_CLASS_MAPPINGS.put(Bat.class, new ModIdentifier("bat"));
+ ENTITY_CLASS_MAPPINGS.put(Bee.class, new ModIdentifier("bee"));
+ ENTITY_CLASS_MAPPINGS.put(Blaze.class, new ModIdentifier("blaze"));
+ ENTITY_CLASS_MAPPINGS.put(Boat.class, new ModIdentifier("boat"));
+ ENTITY_CLASS_MAPPINGS.put(Cat.class, new ModIdentifier("cat"));
+ ENTITY_CLASS_MAPPINGS.put(CaveSpider.class, new ModIdentifier("cave_spider"));
+ ENTITY_CLASS_MAPPINGS.put(Chicken.class, new ModIdentifier("chicken"));
+ ENTITY_CLASS_MAPPINGS.put(Cod.class, new ModIdentifier("cod"));
+ ENTITY_CLASS_MAPPINGS.put(Cow.class, new ModIdentifier("cow"));
+ ENTITY_CLASS_MAPPINGS.put(Creeper.class, new ModIdentifier("creeper"));
+ ENTITY_CLASS_MAPPINGS.put(Dolphin.class, new ModIdentifier("dolphin"));
+ ENTITY_CLASS_MAPPINGS.put(Donkey.class, new ModIdentifier("donkey"));
+ ENTITY_CLASS_MAPPINGS.put(DragonFireball.class, new ModIdentifier("dragon_fireball"));
+ ENTITY_CLASS_MAPPINGS.put(Drowned.class, new ModIdentifier("drowned"));
+ ENTITY_CLASS_MAPPINGS.put(ElderGuardian.class, new ModIdentifier("elder_guardian"));
+ ENTITY_CLASS_MAPPINGS.put(EndCrystal.class, new ModIdentifier("end_crystal"));
+ ENTITY_CLASS_MAPPINGS.put(EnderDragon.class, new ModIdentifier("ender_dragon"));
+ ENTITY_CLASS_MAPPINGS.put(Enderman.class, new ModIdentifier("enderman"));
+ ENTITY_CLASS_MAPPINGS.put(Endermite.class, new ModIdentifier("endermite"));
+ ENTITY_CLASS_MAPPINGS.put(Evoker.class, new ModIdentifier("evoker"));
+ ENTITY_CLASS_MAPPINGS.put(EvokerFangs.class, new ModIdentifier("evoker_fangs"));
+ ENTITY_CLASS_MAPPINGS.put(ExperienceOrb.class, new ModIdentifier("experience_orb"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownEyeOfEnder.class, new ModIdentifier("eye_of_ender"));
+ ENTITY_CLASS_MAPPINGS.put(FallingBlock.class, new ModIdentifier("falling_block"));
+ ENTITY_CLASS_MAPPINGS.put(FireworkRocketEntity.class, new ModIdentifier("firework_rocket"));
+ ENTITY_CLASS_MAPPINGS.put(Fox.class, new ModIdentifier("fox"));
+ ENTITY_CLASS_MAPPINGS.put(Ghast.class, new ModIdentifier("ghast"));
+ ENTITY_CLASS_MAPPINGS.put(Giant.class, new ModIdentifier("giant"));
+ ENTITY_CLASS_MAPPINGS.put(Guardian.class, new ModIdentifier("guardian"));
+ ENTITY_CLASS_MAPPINGS.put(Hoglin.class, new ModIdentifier("hoglin"));
+ ENTITY_CLASS_MAPPINGS.put(Horse.class, new ModIdentifier("horse"));
+ ENTITY_CLASS_MAPPINGS.put(Husk.class, new ModIdentifier("husk"));
+ ENTITY_CLASS_MAPPINGS.put(Illusioner.class, new ModIdentifier("illusioner"));
+ ENTITY_CLASS_MAPPINGS.put(IronGolem.class, new ModIdentifier("iron_golem"));
+ ENTITY_CLASS_MAPPINGS.put(ItemEntity.class, new ModIdentifier("item"));
+ ENTITY_CLASS_MAPPINGS.put(ItemFrame.class, new ModIdentifier("item_frame"));
+ ENTITY_CLASS_MAPPINGS.put(LargeFireball.class, new ModIdentifier("fireball"));
+ ENTITY_CLASS_MAPPINGS.put(LeashFenceKnotEntity.class, new ModIdentifier("leash_knot"));
+ ENTITY_CLASS_MAPPINGS.put(LightningBolt.class, new ModIdentifier("lightning_bolt"));
+ ENTITY_CLASS_MAPPINGS.put(Llama.class, new ModIdentifier("llama"));
+ ENTITY_CLASS_MAPPINGS.put(LlamaSpit.class, new ModIdentifier("llama_spit"));
+ ENTITY_CLASS_MAPPINGS.put(MagmaCube.class, new ModIdentifier("magma_cube"));
+ ENTITY_CLASS_MAPPINGS.put(Minecart.class, new ModIdentifier("minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartChest.class, new ModIdentifier("chest_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartCommandBlock.class, new ModIdentifier("command_block_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartFurnace.class, new ModIdentifier("furnace_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartHopper.class, new ModIdentifier("hopper_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartSpawner.class, new ModIdentifier("spawner_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(MinecartTNT.class, new ModIdentifier("tnt_minecart"));
+ ENTITY_CLASS_MAPPINGS.put(Mule.class, new ModIdentifier("mule"));
+ ENTITY_CLASS_MAPPINGS.put(Mooshroom.class, new ModIdentifier("mooshroom"));
+ ENTITY_CLASS_MAPPINGS.put(Ocelot.class, new ModIdentifier("ocelot"));
+ ENTITY_CLASS_MAPPINGS.put(Painting.class, new ModIdentifier("painting"));
+ ENTITY_CLASS_MAPPINGS.put(Panda.class, new ModIdentifier("panda"));
+ ENTITY_CLASS_MAPPINGS.put(Parrot.class, new ModIdentifier("parrot"));
+ ENTITY_CLASS_MAPPINGS.put(Phantom.class, new ModIdentifier("phantom"));
+ ENTITY_CLASS_MAPPINGS.put(Pig.class, new ModIdentifier("pig"));
+ ENTITY_CLASS_MAPPINGS.put(Piglin.class, new ModIdentifier("piglin"));
+ ENTITY_CLASS_MAPPINGS.put(PiglinBrute.class, new ModIdentifier("piglin_brute"));
+ ENTITY_CLASS_MAPPINGS.put(Pillager.class, new ModIdentifier("pillager"));
+ ENTITY_CLASS_MAPPINGS.put(PolarBear.class, new ModIdentifier("polar_bear"));
+ ENTITY_CLASS_MAPPINGS.put(PrimedTNT.class, new ModIdentifier("tnt"));
+ ENTITY_CLASS_MAPPINGS.put(PufferFish.class, new ModIdentifier("pufferfish"));
+ ENTITY_CLASS_MAPPINGS.put(Rabbit.class, new ModIdentifier("rabbit"));
+ ENTITY_CLASS_MAPPINGS.put(Ravenger.class, new ModIdentifier("ravager"));
+ ENTITY_CLASS_MAPPINGS.put(Salmon.class, new ModIdentifier("salmon"));
+ ENTITY_CLASS_MAPPINGS.put(Sheep.class, new ModIdentifier("sheep"));
+ ENTITY_CLASS_MAPPINGS.put(Shulker.class, new ModIdentifier("shulker"));
+ ENTITY_CLASS_MAPPINGS.put(ShulkerBullet.class, new ModIdentifier("shulker_bullet"));
+ ENTITY_CLASS_MAPPINGS.put(Silverfish.class, new ModIdentifier("silverfish"));
+ ENTITY_CLASS_MAPPINGS.put(Skeleton.class, new ModIdentifier("skeleton"));
+ ENTITY_CLASS_MAPPINGS.put(SkeletonHorse.class, new ModIdentifier("skeleton_horse"));
+ ENTITY_CLASS_MAPPINGS.put(Slime.class, new ModIdentifier("slime"));
+ ENTITY_CLASS_MAPPINGS.put(SmallFireball.class, new ModIdentifier("small_fireball"));
+ ENTITY_CLASS_MAPPINGS.put(SnowGolem.class, new ModIdentifier("snow_golem"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownSnowball.class, new ModIdentifier("snowball"));
+ ENTITY_CLASS_MAPPINGS.put(SpectralArrow.class, new ModIdentifier("spectral_arrow"));
+ ENTITY_CLASS_MAPPINGS.put(Spider.class, new ModIdentifier("spider"));
+ ENTITY_CLASS_MAPPINGS.put(Squid.class, new ModIdentifier("squid"));
+ ENTITY_CLASS_MAPPINGS.put(Stray.class, new ModIdentifier("stray"));
+ ENTITY_CLASS_MAPPINGS.put(Strider.class, new ModIdentifier("strider"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownEgg.class, new ModIdentifier("egg"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownEnderPearl.class, new ModIdentifier("ender_pearl"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownExperienceBottle.class, new ModIdentifier("experience_bottle"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownPotion.class, new ModIdentifier("potion"));
+ ENTITY_CLASS_MAPPINGS.put(ThrownTrident.class, new ModIdentifier("trident"));
+ ENTITY_CLASS_MAPPINGS.put(TraderLlama.class, new ModIdentifier("trader_llama"));
+ ENTITY_CLASS_MAPPINGS.put(TropicalFish.class, new ModIdentifier("tropical_fish"));
+ ENTITY_CLASS_MAPPINGS.put(Turtle.class, new ModIdentifier("turtle"));
+ ENTITY_CLASS_MAPPINGS.put(Vex.class, new ModIdentifier("vex"));
+ ENTITY_CLASS_MAPPINGS.put(Villager.class, new ModIdentifier("villager"));
+ ENTITY_CLASS_MAPPINGS.put(Vindicator.class, new ModIdentifier("vindicator"));
+ ENTITY_CLASS_MAPPINGS.put(WanderingTrader.class, new ModIdentifier("wandering_trader"));
+ ENTITY_CLASS_MAPPINGS.put(Witch.class, new ModIdentifier("witch"));
+ ENTITY_CLASS_MAPPINGS.put(WitherBoss.class, new ModIdentifier("wither"));
+ ENTITY_CLASS_MAPPINGS.put(WitherSkeleton.class, new ModIdentifier("wither_skeleton"));
+ ENTITY_CLASS_MAPPINGS.put(WitherSkull.class, new ModIdentifier("wither_skull"));
+ ENTITY_CLASS_MAPPINGS.put(Wolf.class, new ModIdentifier("wolf"));
+ ENTITY_CLASS_MAPPINGS.put(Zoglin.class, new ModIdentifier("zoglin"));
+ ENTITY_CLASS_MAPPINGS.put(Zombie.class, new ModIdentifier("zombie"));
+ ENTITY_CLASS_MAPPINGS.put(ZombieHorse.class, new ModIdentifier("zombie_horse"));
+ ENTITY_CLASS_MAPPINGS.put(ZombieVillager.class, new ModIdentifier("zombie_villager"));
+ ENTITY_CLASS_MAPPINGS.put(ZombifiedPiglin.class, new ModIdentifier("zombified_piglin"));
+ ENTITY_CLASS_MAPPINGS.put(PlayerEntity.class, new ModIdentifier("player"));
+ ENTITY_CLASS_MAPPINGS.put(FishingHook.class, new ModIdentifier("fishing_bobber"));
}
public static Class extends Entity> getByIdentifier(String mod, String identifier) {
- return ENTITY_CLASS_MAPPINGS.inverse().get(new Pair<>(mod, identifier));
+ return ENTITY_CLASS_MAPPINGS.inverse().get(new ModIdentifier(mod, identifier));
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/IdentifierSet.java b/src/main/java/de/bixilon/minosoft/data/IdentifierSet.java
index 390d03f30..1fcd83cc9 100644
--- a/src/main/java/de/bixilon/minosoft/data/IdentifierSet.java
+++ b/src/main/java/de/bixilon/minosoft/data/IdentifierSet.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.data;
public class IdentifierSet extends MapSet {
+
public IdentifierSet(Integer key, String value) {
super(key, value);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/PlayerPropertyData.java b/src/main/java/de/bixilon/minosoft/data/PlayerPropertyData.java
index 9ce77b188..26944f4d2 100644
--- a/src/main/java/de/bixilon/minosoft/data/PlayerPropertyData.java
+++ b/src/main/java/de/bixilon/minosoft/data/PlayerPropertyData.java
@@ -28,11 +28,16 @@ public class PlayerPropertyData {
return this.name;
}
+ public String getValue() {
+ return value;
+ }
+
public String getSignature() {
return signature;
}
- public String getValue() {
- return value;
+ @Override
+ public String toString() {
+ return String.format("%s=%s", getName(), getValue());
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java
index 4edd558a7..8000b02a9 100644
--- a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java
+++ b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.config.ConfigurationPaths;
import de.bixilon.minosoft.config.StaticConfiguration;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.logging.LogLevels;
+import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import de.bixilon.minosoft.util.CountUpAndDownLatch;
import de.bixilon.minosoft.util.HTTP;
import de.bixilon.minosoft.util.Util;
@@ -75,7 +76,7 @@ public class AssetsManager {
}
try {
downloadAssetsIndex();
- } catch (IOException e) {
+ } catch (Exception e) {
Log.printException(e, LogLevels.DEBUG);
Log.warn("Could not download assets index. Please check your internet connection");
}
@@ -99,7 +100,7 @@ public class AssetsManager {
assets.keySet().parallelStream().forEach((filename) -> {
try {
String hash = assets.get(filename);
- boolean compressed = source == AssetsSource.MOJANG;
+ boolean compressed = (source == AssetsSource.MOJANG);
if (!verifyAssetHash(hash, compressed)) {
AssetsManager.downloadAsset(source, hash);
}
@@ -272,9 +273,9 @@ public class AssetsManager {
throw new RuntimeException(e);
}
- byte[] buffer = new byte[4096];
+ byte[] buffer = new byte[ProtocolDefinition.DEFAULT_BUFFER_SIZE];
int length;
- while ((length = data.read(buffer, 0, 4096)) != -1) {
+ while ((length = data.read(buffer, 0, buffer.length)) != -1) {
crypt.update(buffer, 0, length);
out.write(buffer, 0, length);
}
@@ -308,6 +309,6 @@ public class AssetsManager {
if (hash == null) {
throw new FileNotFoundException("Could not find asset with hash: null");
}
- return StaticConfiguration.HOME_DIR + String.format("assets/objects/%s/%s.gz", hash.substring(0, 2), hash);
+ return StaticConfiguration.HOME_DIRECTORY + String.format("assets/objects/%s/%s.gz", hash.substring(0, 2), hash);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.java b/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.java
index 994718c28..f916a5921 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.java
@@ -14,17 +14,14 @@
package de.bixilon.minosoft.data.entities;
import com.google.gson.JsonObject;
+import de.bixilon.minosoft.data.mappings.ModIdentifier;
-public class EntityInformation {
- private final String mod;
- private final String identifier;
-
+public class EntityInformation extends ModIdentifier {
private final float width;
private final float height;
public EntityInformation(String mod, String identifier, float width, float height) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.width = width;
this.height = height;
}
@@ -33,14 +30,6 @@ public class EntityInformation {
return new EntityInformation(mod, identifier, data.get("width").getAsFloat(), data.get("height").getAsFloat());
}
- public String getMod() {
- return mod;
- }
-
- public String getIdentifier() {
- return identifier;
- }
-
public float getWidth() {
return width;
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java
index e3a3f324f..9dc854728 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java
@@ -199,7 +199,7 @@ public class EntityMetaData {
}
public boolean getBitMask(EntityMetaDataFields field, int bitMask) {
- return BitByte.isBitMask(getInt(field), bitMask);
+ return BitByte.isBitMask(getByte(field), bitMask);
}
public Object get(EntityMetaDataFields field) {
@@ -231,14 +231,7 @@ public class EntityMetaData {
}
public int getInt(EntityMetaDataFields field) {
- Object object = get(field);
- if (object instanceof Integer i) {
- return i;
- }
- if (object instanceof Byte b) {
- return b;
- }
- return 0;
+ return (int) get(field);
}
public Short getShort(EntityMetaDataFields field) {
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.java b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.java
index a3c6aeb14..fb3e55658 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaDataFields.java
@@ -52,7 +52,7 @@ public enum EntityMetaDataFields {
AREA_EFFECT_CLOUD_RADIUS(0.5f),
AREA_EFFECT_CLOUD_COLOR(0),
AREA_EFFECT_CLOUD_WAITING(false),
- AREA_EFFECT_CLOUD_PARTICLE(new ParticleData(new Particle("minecraft", "effect"))),
+ AREA_EFFECT_CLOUD_PARTICLE(new ParticleData(new Particle("effect"))),
ABSTRACT_ARROW_FLAGS((byte) 0),
ABSTRACT_ARROW_PIERCE_LEVEL((byte) 0),
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EvokerFangs.java b/src/main/java/de/bixilon/minosoft/data/entities/EvokerFangs.java
index d38a51e88..a27fc64d6 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/EvokerFangs.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/EvokerFangs.java
@@ -19,6 +19,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class EvokerFangs extends Entity {
+
public EvokerFangs(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/AreaEffectCloud.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/AreaEffectCloud.java
index 73f201be0..8034015c5 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/AreaEffectCloud.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/AreaEffectCloud.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class AreaEffectCloud extends Entity {
+
public AreaEffectCloud(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/EvokerFangs.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/EvokerFangs.java
index fe4d1fe60..aad29fe25 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/EvokerFangs.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/EvokerFangs.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class EvokerFangs extends Entity {
+
public EvokerFangs(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/LightningBolt.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/LightningBolt.java
index d6141ec12..f705a296a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/LightningBolt.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/LightningBolt.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class LightningBolt extends Entity {
+
public LightningBolt(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/UnknownEntityException.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/UnknownEntityException.java
index f0c89de84..b6028c51e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/UnknownEntityException.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/UnknownEntityException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.data.entities.entities;
public class UnknownEntityException extends Exception {
+
public UnknownEntityException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/ambient/Bat.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/ambient/Bat.java
index 262680259..34b8c2593 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/ambient/Bat.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/ambient/Bat.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Bat extends AmbientCreature {
+
public Bat(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Bee.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Bee.java
index 1fa6962e3..4ffb3a66b 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Bee.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Bee.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Bee extends Animal {
+
public Bee(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cat.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cat.java
index 9a262b331..21f58de6e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cat.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cat.java
@@ -25,6 +25,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Cat extends TamableAnimal {
+
public Cat(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Chicken.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Chicken.java
index 3c5af7d8f..9baf9a438 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Chicken.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Chicken.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Chicken extends Animal {
+
public Chicken(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cow.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cow.java
index 1d86623a2..d04ea3b9a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cow.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Cow.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Cow extends Animal {
+
public Cow(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Fox.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Fox.java
index e33bb29cc..1a687fa34 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Fox.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Fox.java
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class Fox extends Animal {
+
public Fox(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/IronGolem.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/IronGolem.java
index 424ccd67c..21a63c4a5 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/IronGolem.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/IronGolem.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class IronGolem extends AbstractGolem {
+
public IronGolem(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Mooshroom.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Mooshroom.java
index 55d784127..369df3501 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Mooshroom.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Mooshroom.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Mooshroom extends Cow {
+
public Mooshroom(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Ocelot.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Ocelot.java
index 272ccc917..c1152bb50 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Ocelot.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Ocelot.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Ocelot extends Animal {
+
public Ocelot(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Panda.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Panda.java
index ed1e5dbcd..467910125 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Panda.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Panda.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Panda extends Animal {
+
public Panda(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Parrot.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Parrot.java
index f401c1797..2fd40b63a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Parrot.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Parrot.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Parrot extends ShoulderRidingAnimal {
+
public Parrot(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Pig.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Pig.java
index 7b973efcc..4c3ca1a18 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Pig.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Pig.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Pig extends Animal {
+
public Pig(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/PolarBear.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/PolarBear.java
index c2a9e5776..c10152f24 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/PolarBear.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/PolarBear.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class PolarBear extends Animal {
+
public PolarBear(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Rabbit.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Rabbit.java
index f04af585c..4de82083f 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Rabbit.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Rabbit.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Rabbit extends Animal {
+
public Rabbit(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Sheep.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Sheep.java
index e1ad4e202..a993c6d99 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Sheep.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Sheep.java
@@ -24,6 +24,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Sheep extends Animal {
+
public Sheep(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/ShoulderRidingAnimal.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/ShoulderRidingAnimal.java
index 29177a632..1e984cb4a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/ShoulderRidingAnimal.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/ShoulderRidingAnimal.java
@@ -21,6 +21,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ShoulderRidingAnimal extends TamableAnimal {
+
public ShoulderRidingAnimal(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/SnowGolem.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/SnowGolem.java
index e40241e6b..845105c6d 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/SnowGolem.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/SnowGolem.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class SnowGolem extends AbstractGolem {
+
public SnowGolem(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Strider.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Strider.java
index 9801f6dee..7c9372f7e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Strider.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Strider.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Strider extends Animal {
+
public Strider(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Turtle.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Turtle.java
index 1821cf41f..f5d0f95ae 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Turtle.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Turtle.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class Turtle extends Animal {
+
public Turtle(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Wolf.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Wolf.java
index 728c964fe..af5599ae4 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Wolf.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/Wolf.java
@@ -25,6 +25,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Wolf extends TamableAnimal {
+
public Wolf(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/hoglin/Hoglin.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/hoglin/Hoglin.java
index 5ca0cb71a..e6b2094d2 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/hoglin/Hoglin.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/hoglin/Hoglin.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Hoglin extends Animal {
+
public Hoglin(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Donkey.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Donkey.java
index 8244bd674..d8dae945e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Donkey.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Donkey.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Donkey extends AbstractChestedHorse {
+
public Donkey(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Horse.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Horse.java
index 5fb315161..f30a814d2 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Horse.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Horse.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Horse extends AbstractHorse {
+
public Horse(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Llama.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Llama.java
index fe3a1ed11..5b6fde513 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Llama.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Llama.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Llama extends AbstractChestedHorse {
+
public Llama(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Mule.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Mule.java
index 3556e75df..2ede9cc44 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Mule.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/Mule.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Mule extends AbstractChestedHorse {
+
public Mule(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/SkeletonHorse.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/SkeletonHorse.java
index b7a7d63d5..2ea9d043b 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/SkeletonHorse.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/SkeletonHorse.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class SkeletonHorse extends AbstractHorse {
+
public SkeletonHorse(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/TraderLlama.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/TraderLlama.java
index 8725d0f7d..8838d39fc 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/TraderLlama.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/TraderLlama.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class TraderLlama extends Llama {
+
public TraderLlama(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/ZombieHorse.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/ZombieHorse.java
index 8d5e54582..67bc330eb 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/ZombieHorse.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/horse/ZombieHorse.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ZombieHorse extends AbstractHorse {
+
public ZombieHorse(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Cod.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Cod.java
index 47d36d1fa..fc6f100ff 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Cod.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Cod.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Cod extends AbstractSchoolingFish {
+
public Cod(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Dolphin.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Dolphin.java
index 70f5184ea..fc74d26ea 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Dolphin.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Dolphin.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class Dolphin extends WaterAnimal {
+
public Dolphin(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/PufferFish.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/PufferFish.java
index 1896892ee..8d1414ac0 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/PufferFish.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/PufferFish.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class PufferFish extends AbstractFish {
+
public PufferFish(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Salmon.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Salmon.java
index 86adef71a..13708131a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Salmon.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Salmon.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Salmon extends AbstractSchoolingFish {
+
public Salmon(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Squid.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Squid.java
index 88c4204e0..746b913b3 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Squid.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/Squid.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Squid extends WaterAnimal {
+
public Squid(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/TropicalFish.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/TropicalFish.java
index 92e6f7fc5..f77d853cd 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/TropicalFish.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/animal/water/TropicalFish.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class TropicalFish extends AbstractSchoolingFish {
+
public TropicalFish(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EndCrystal.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EndCrystal.java
index 0939261e4..f17f8e3c7 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EndCrystal.java
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class EndCrystal extends Entity {
+
public EndCrystal(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EnderDragon.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EnderDragon.java
index c2ed780b7..140317ce1 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/enderdragon/EnderDragon.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class EnderDragon extends Mob {
+
public EnderDragon(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/wither/WitherBoss.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/wither/WitherBoss.java
index 7f4e217b0..d29e66e3a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/wither/WitherBoss.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/boss/wither/WitherBoss.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class WitherBoss extends Monster {
+
public WitherBoss(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ArmorStand.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ArmorStand.java
index 05ac8f034..f294de408 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ArmorStand.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ArmorStand.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ArmorStand extends LivingEntity {
+
public ArmorStand(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.java
index aa2f50a50..115fd5c4e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/ItemFrame.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class ItemFrame extends HangingEntity {
+
public ItemFrame(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/LeashFenceKnotEntity.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/LeashFenceKnotEntity.java
index b7c91f674..e75b8a9bd 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/LeashFenceKnotEntity.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/LeashFenceKnotEntity.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class LeashFenceKnotEntity extends HangingEntity {
+
public LeashFenceKnotEntity(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.java
index 14197504a..1dc0e54cc 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/decoration/Painting.java
@@ -31,7 +31,7 @@ public class Painting extends Entity {
public Painting(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
direction = Directions.NORTH;
- motive = new Motive("minecraft", "kebab");
+ motive = new Motive("kebab");
}
public Painting(Connection connection, int entityId, UUID uuid, BlockPosition position, Directions direction, Motive motive) {
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.java
index 4424f6393..cbc94aecc 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.java
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class ItemEntity extends Entity {
+
public ItemEntity(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/PrimedTNT.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/PrimedTNT.java
index c9ced5213..29a292ab4 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/PrimedTNT.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/PrimedTNT.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class PrimedTNT extends Entity {
+
public PrimedTNT(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Blaze.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Blaze.java
index f415df5bc..b199cf5ef 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Blaze.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Blaze.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Blaze extends Monster {
+
public Blaze(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/CaveSpider.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/CaveSpider.java
index 732e38116..90470aaa3 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/CaveSpider.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/CaveSpider.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class CaveSpider extends Spider {
+
public CaveSpider(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Creeper.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Creeper.java
index 055dedba7..a01e89b51 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Creeper.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Creeper.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Creeper extends Monster {
+
public Creeper(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Drowned.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Drowned.java
index 623d148ab..c647e932f 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Drowned.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Drowned.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Drowned extends Zombie {
+
public Drowned(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ElderGuardian.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ElderGuardian.java
index 67f940045..d77453519 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ElderGuardian.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ElderGuardian.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ElderGuardian extends Guardian {
+
public ElderGuardian(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Enderman.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Enderman.java
index cc7833ad7..8d8638aec 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Enderman.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Enderman.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
import java.util.UUID;
public class Enderman extends AbstractSkeleton {
+
public Enderman(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Endermite.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Endermite.java
index 0d8741922..18d3205d0 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Endermite.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Endermite.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Endermite extends Monster {
+
public Endermite(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Ghast.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Ghast.java
index 82e0e103e..25840cb14 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Ghast.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Ghast.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Ghast extends FlyingMob {
+
public Ghast(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Giant.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Giant.java
index 1ee7da5cd..27ca045c4 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Giant.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Giant.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Giant extends Monster {
+
public Giant(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Guardian.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Guardian.java
index c1b38f175..9094a0529 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Guardian.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Guardian.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Guardian extends Monster {
+
public Guardian(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Husk.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Husk.java
index d11966a38..636b83a6d 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Husk.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Husk.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Husk extends Zombie {
+
public Husk(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/MagmaCube.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/MagmaCube.java
index 6191e237f..1fad91aea 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/MagmaCube.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/MagmaCube.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MagmaCube extends Slime {
+
public MagmaCube(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Phantom.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Phantom.java
index c32c4e65b..e23c21789 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Phantom.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Phantom.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Phantom extends FlyingMob {
+
public Phantom(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Silverfish.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Silverfish.java
index 64a9d974a..cdeb43f87 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Silverfish.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Silverfish.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Silverfish extends Monster {
+
public Silverfish(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Skeleton.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Skeleton.java
index 194c79b76..d512f50cf 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Skeleton.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Skeleton.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Skeleton extends AbstractSkeleton {
+
public Skeleton(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Slime.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Slime.java
index e12fe9056..e42a55e2d 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Slime.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Slime.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Slime extends Mob {
+
public Slime(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Spider.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Spider.java
index 244e3eae4..f77469c49 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Spider.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Spider.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Spider extends Monster {
+
public Spider(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Stray.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Stray.java
index a22efa296..6b6b76344 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Stray.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Stray.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Stray extends AbstractSkeleton {
+
public Stray(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Vex.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Vex.java
index 531b43139..cd23675df 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Vex.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Vex.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Vex extends Monster {
+
public Vex(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/WitherSkeleton.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/WitherSkeleton.java
index 72cf3b9bd..e6f50f342 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/WitherSkeleton.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/WitherSkeleton.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class WitherSkeleton extends AbstractSkeleton {
+
public WitherSkeleton(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zoglin.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zoglin.java
index ec0a172ea..9eca4c1c5 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zoglin.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zoglin.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Zoglin extends Monster {
+
public Zoglin(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zombie.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zombie.java
index 68f3c0b96..47861c8a9 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zombie.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/Zombie.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Zombie extends Monster {
+
public Zombie(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombieVillager.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombieVillager.java
index 3c63d0309..57128c0e1 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombieVillager.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombieVillager.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ZombieVillager extends Zombie {
+
public ZombieVillager(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombifiedPiglin.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombifiedPiglin.java
index ca707d584..0de33540d 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombifiedPiglin.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/ZombifiedPiglin.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ZombifiedPiglin extends Zombie {
+
public ZombifiedPiglin(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/Piglin.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/Piglin.java
index ed3ca99bd..db5983973 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/Piglin.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/Piglin.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Piglin extends AbstractPiglin {
+
public Piglin(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/PiglinBrute.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/PiglinBrute.java
index 22cac8cb8..de51bb1b3 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/PiglinBrute.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/piglin/PiglinBrute.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class PiglinBrute extends AbstractPiglin {
+
public PiglinBrute(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Evoker.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Evoker.java
index eab0677b4..75e4763c6 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Evoker.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Evoker.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Evoker extends SpellcasterIllager {
+
public Evoker(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Illusioner.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Illusioner.java
index abaa0e1f1..1a99ee91d 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Illusioner.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Illusioner.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Illusioner extends SpellcasterIllager {
+
public Illusioner(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Pillager.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Pillager.java
index d1634ad5f..c87d5e726 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Pillager.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Pillager.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Pillager extends AbstractIllager {
+
public Pillager(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Ravenger.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Ravenger.java
index 10c6ff548..31b4da6b3 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Ravenger.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Ravenger.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Ravenger extends Raider {
+
public Ravenger(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/SpellcasterIllager.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/SpellcasterIllager.java
index ddaf65e3a..2edfdc60c 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/SpellcasterIllager.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/SpellcasterIllager.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class SpellcasterIllager extends AbstractIllager {
+
public SpellcasterIllager(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Vindicator.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Vindicator.java
index 8a944ceaa..600319610 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Vindicator.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Vindicator.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Vindicator extends AbstractIllager {
+
public Vindicator(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Witch.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Witch.java
index 0ef9b5f29..d6d4f3e13 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Witch.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/monster/raid/Witch.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Witch extends Raider {
+
public Witch(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/DragonFireball.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/DragonFireball.java
index 6a6ecaafa..4f3b4409b 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/DragonFireball.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/DragonFireball.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class DragonFireball extends AbstractHurtingProjectile {
+
public DragonFireball(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/FishingHook.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/FishingHook.java
index 5e1cee76a..a66c82c29 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/FishingHook.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/FishingHook.java
@@ -22,9 +22,10 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class FishingHook extends Projectile {
- public FishingHook(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
- super(connection, entityId, uuid, location, rotation);
- }
+
+ public FishingHook(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
+ super(connection, entityId, uuid, location, rotation);
+ }
@EntityMetaDataFunction(identifier = "hookedEntityId")
public int getHookedEntityId() {
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LargeFireball.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LargeFireball.java
index c378eb0f6..16826d6ac 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LargeFireball.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LargeFireball.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class LargeFireball extends Fireball {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "fire_charge"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("fire_charge"));
public LargeFireball(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LlamaSpit.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LlamaSpit.java
index e16b8b0c2..cca4d14b5 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LlamaSpit.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/LlamaSpit.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class LlamaSpit extends Projectile {
+
public LlamaSpit(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ShulkerBullet.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ShulkerBullet.java
index ef98cde24..4cd3987c4 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ShulkerBullet.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ShulkerBullet.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ShulkerBullet extends Projectile {
+
public ShulkerBullet(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/SmallFireball.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/SmallFireball.java
index e8a036b99..daba1255e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/SmallFireball.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/SmallFireball.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class SmallFireball extends Fireball {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "fire_charge"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("fire_charge"));
public SmallFireball(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEgg.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEgg.java
index a41847073..18dd993d9 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEgg.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEgg.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownEgg extends ThrowableItemProjectile {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "egg"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("egg"));
public ThrownEgg(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEnderPearl.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEnderPearl.java
index e8f132fb1..9425359b9 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEnderPearl.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEnderPearl.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownEnderPearl extends ThrowableItemProjectile {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "ender_pearl"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("ender_pearl"));
public ThrownEnderPearl(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownExperienceBottle.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownExperienceBottle.java
index d6e66833e..8da8e3c00 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownExperienceBottle.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownExperienceBottle.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownExperienceBottle extends ThrowableItemProjectile {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "experience_bottle"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("experience_bottle"));
public ThrownExperienceBottle(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEyeOfEnder.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEyeOfEnder.java
index 7b579d60d..78165c020 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEyeOfEnder.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownEyeOfEnder.java
@@ -25,7 +25,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownEyeOfEnder extends Entity {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "ender_eye"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("ender_eye"));
public ThrownEyeOfEnder(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownSnowball.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownSnowball.java
index 6a8542e25..ffd69b85a 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownSnowball.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownSnowball.java
@@ -22,7 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownSnowball extends ThrowableItemProjectile {
- private static final Slot DEFAULT_ITEM = new Slot(new Item("minecraft", "snowball"));
+ private static final Slot DEFAULT_ITEM = new Slot(new Item("snowball"));
public ThrownSnowball(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownTrident.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownTrident.java
index 3accdce3a..3e15d02da 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownTrident.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/ThrownTrident.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class ThrownTrident extends AbstractArrow {
+
public ThrownTrident(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/WitherSkull.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/WitherSkull.java
index 99bcfdf7f..ee4b99572 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/WitherSkull.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/projectile/WitherSkull.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class WitherSkull extends AbstractHurtingProjectile {
+
public WitherSkull(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Boat.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Boat.java
index 027531217..bc981aeb6 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Boat.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Boat.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Boat extends Entity {
+
public Boat(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Minecart.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Minecart.java
index a17e7d06e..13b624ab1 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Minecart.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/Minecart.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class Minecart extends AbstractMinecart {
+
public Minecart(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartChest.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartChest.java
index 20251c2b7..5e05ce2de 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartChest.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartChest.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartChest extends AbstractMinecart {
+
public MinecartChest(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartCommandBlock.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartCommandBlock.java
index db98a05f9..87eddf675 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartCommandBlock.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartCommandBlock.java
@@ -23,6 +23,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartCommandBlock extends AbstractMinecart {
+
public MinecartCommandBlock(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartFurnace.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartFurnace.java
index 615c33a2c..a8c6dfb19 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartFurnace.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartFurnace.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartFurnace extends AbstractMinecartContainer {
+
public MinecartFurnace(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartHopper.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartHopper.java
index b44ba6366..69ed7b065 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartHopper.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartHopper.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartHopper extends AbstractMinecartContainer {
+
public MinecartHopper(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartSpawner.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartSpawner.java
index 7c35859d2..f31d0266e 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartSpawner.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartSpawner.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartSpawner extends AbstractMinecart {
+
public MinecartSpawner(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartTNT.java b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartTNT.java
index 3578bb349..571cfbb31 100644
--- a/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartTNT.java
+++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/vehicle/MinecartTNT.java
@@ -20,6 +20,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import java.util.UUID;
public class MinecartTNT extends AbstractMinecart {
+
public MinecartTNT(Connection connection, int entityId, UUID uuid, Location location, EntityRotation rotation) {
super(connection, entityId, uuid, location, rotation);
}
diff --git a/src/main/java/de/bixilon/minosoft/data/inventory/Slot.java b/src/main/java/de/bixilon/minosoft/data/inventory/Slot.java
index 480d3d6d5..ec3badbc2 100644
--- a/src/main/java/de/bixilon/minosoft/data/inventory/Slot.java
+++ b/src/main/java/de/bixilon/minosoft/data/inventory/Slot.java
@@ -17,6 +17,7 @@ import de.bixilon.minosoft.data.mappings.Enchantment;
import de.bixilon.minosoft.data.mappings.Item;
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
import de.bixilon.minosoft.data.text.ChatComponent;
+import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import de.bixilon.minosoft.util.BitByte;
import de.bixilon.minosoft.util.nbt.tag.*;
@@ -261,7 +262,7 @@ public class Slot {
}
public String getSkullOwner() {
- if (!item.getMod().equals("minecraft") || !item.getIdentifier().equals("skull")) {
+ if (!item.getMod().equals(ProtocolDefinition.DEFAULT_MOD) || !item.getIdentifier().equals("skull")) {
throw new IllegalArgumentException("Item is not a skull!");
}
return skullOwner;
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/BlockId.java b/src/main/java/de/bixilon/minosoft/data/mappings/BlockId.java
index 560a5b9bf..1c6de83b3 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/BlockId.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/BlockId.java
@@ -13,17 +13,13 @@
package de.bixilon.minosoft.data.mappings;
-public record BlockId(String mod, String identifier) {
- public String getMod() {
- return mod;
+public class BlockId extends ModIdentifier {
+
+ public BlockId(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", getMod(), getIdentifier());
+ public BlockId(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/Dimension.java b/src/main/java/de/bixilon/minosoft/data/mappings/Dimension.java
index 21a9398f8..f861f4b89 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/Dimension.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/Dimension.java
@@ -13,39 +13,18 @@
package de.bixilon.minosoft.data.mappings;
-public class Dimension {
- final String mod;
- final String identifier;
+public class Dimension extends ModIdentifier {
final boolean hasSkyLight;
public Dimension(String mod, String identifier, boolean hasSkyLight) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.hasSkyLight = hasSkyLight;
}
- public String getMod() {
- return mod;
- }
-
- public String getIdentifier() {
- return identifier;
- }
-
public boolean hasSkyLight() {
return hasSkyLight;
}
- @Override
- public String toString() {
- return String.format("%s:%s", getMod(), getIdentifier());
- }
-
- @Override
- public int hashCode() {
- return mod.hashCode() * identifier.hashCode();
- }
-
@Override
public boolean equals(Object obj) {
if (super.equals(obj)) {
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/Enchantment.java b/src/main/java/de/bixilon/minosoft/data/mappings/Enchantment.java
index aea9eb09f..fa6277123 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/Enchantment.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/Enchantment.java
@@ -13,17 +13,13 @@
package de.bixilon.minosoft.data.mappings;
-public record Enchantment(String mod, String identifier) {
- public String getMod() {
- return mod;
+public class Enchantment extends ModIdentifier {
+
+ public Enchantment(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", mod, identifier);
+ public Enchantment(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/Item.java b/src/main/java/de/bixilon/minosoft/data/mappings/Item.java
index 2cafac1a1..2f33fc1b8 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/Item.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/Item.java
@@ -13,48 +13,13 @@
package de.bixilon.minosoft.data.mappings;
-public class Item {
- final String mod;
- final String identifier;
+public class Item extends ModIdentifier {
public Item(String fullIdentifier) {
- String[] split = fullIdentifier.split(":");
- this.mod = split[0];
- this.identifier = split[1];
+ super(fullIdentifier);
}
public Item(String mod, String identifier) {
- this.mod = mod;
- this.identifier = identifier;
- }
-
- public String getMod() {
- return mod;
- }
-
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", getMod(), getIdentifier());
- }
-
- @Override
- public int hashCode() {
- return mod.hashCode() * identifier.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (super.equals(obj)) {
- return true;
- }
- if (hashCode() != obj.hashCode()) {
- return false;
- }
- Item their = (Item) obj;
- return getIdentifier().equals(their.getIdentifier()) && getMod().equals(their.getMod());
+ super(mod, identifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/MappingsLoadingException.java b/src/main/java/de/bixilon/minosoft/data/mappings/MappingsLoadingException.java
index a67f054a8..5336cc078 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/MappingsLoadingException.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/MappingsLoadingException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.data.mappings;
public class MappingsLoadingException extends Exception {
+
public MappingsLoadingException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/MobEffect.java b/src/main/java/de/bixilon/minosoft/data/mappings/MobEffect.java
index cef85b16b..a70ca38ad 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/MobEffect.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/MobEffect.java
@@ -13,17 +13,13 @@
package de.bixilon.minosoft.data.mappings;
-public record MobEffect(String mod, String identifier) {
- public String getMod() {
- return mod;
+public class MobEffect extends ModIdentifier {
+
+ public MobEffect(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", getMod(), getIdentifier());
+ public MobEffect(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/ModIdentifier.java b/src/main/java/de/bixilon/minosoft/data/mappings/ModIdentifier.java
new file mode 100644
index 000000000..b942888b9
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/ModIdentifier.java
@@ -0,0 +1,67 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.data.mappings;
+
+import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
+
+public class ModIdentifier {
+ protected final String mod;
+ protected final String identifier;
+
+ public ModIdentifier(String mod, String identifier) {
+ this.mod = mod;
+ this.identifier = identifier;
+ }
+
+ public ModIdentifier(String fullIdentifier) {
+ String[] split = fullIdentifier.split(":");
+ if (split.length == 1) {
+ this.mod = ProtocolDefinition.DEFAULT_MOD;
+ this.identifier = fullIdentifier;
+ return;
+ }
+ this.mod = split[0];
+ this.identifier = split[1];
+ }
+
+ public String getMod() {
+ return mod;
+ }
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s:%s", mod, identifier);
+ }
+
+ @Override
+ public int hashCode() {
+ return mod.hashCode() * identifier.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (super.equals(obj)) {
+ return true;
+ }
+ if (hashCode() != obj.hashCode()) {
+ return false;
+ }
+ Item their = (Item) obj;
+ return getIdentifier().equals(their.getIdentifier()) && getMod().equals(their.getMod());
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/Motive.java b/src/main/java/de/bixilon/minosoft/data/mappings/Motive.java
index d387caea5..84915efe7 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/Motive.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/Motive.java
@@ -13,17 +13,13 @@
package de.bixilon.minosoft.data.mappings;
-public record Motive(String mod, String identifier) {
- public String getMod() {
- return mod;
+public class Motive extends ModIdentifier {
+
+ public Motive(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", getMod(), getIdentifier());
+ public Motive(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.java b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.java
index 3240f3c45..374f6f164 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.java
@@ -15,47 +15,47 @@ package de.bixilon.minosoft.data.mappings.blocks;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import de.bixilon.minosoft.data.mappings.ModIdentifier;
import java.util.HashSet;
import java.util.Map;
-public class Block {
- final String mod;
- final String identifier;
+public class Block extends ModIdentifier {
final BlockRotations rotation;
final HashSet properties;
public Block(String mod, String identifier, HashSet properties, BlockRotations rotation) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.properties = properties;
this.rotation = rotation;
}
public Block(String mod, String identifier, HashSet properties) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.properties = properties;
this.rotation = BlockRotations.NONE;
}
public Block(String mod, String identifier, BlockRotations rotation) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.properties = new HashSet<>();
this.rotation = rotation;
}
public Block(String mod, String identifier) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
+ this.properties = new HashSet<>();
+ this.rotation = BlockRotations.NONE;
+ }
+
+ public Block(String fullIdentifier) {
+ super(fullIdentifier);
this.properties = new HashSet<>();
this.rotation = BlockRotations.NONE;
}
public Block(String mod, String identifier, JsonObject properties) {
- this.mod = mod;
- this.identifier = identifier;
+ super(mod, identifier);
this.properties = new HashSet<>();
BlockRotations rotation = BlockRotations.NONE;
for (Map.Entry property : properties.entrySet()) {
@@ -120,13 +120,15 @@ public class Block {
@Override
public boolean equals(Object obj) {
- if (super.equals(obj)) {
+ if (this == obj) {
return true;
}
if (hashCode() != obj.hashCode()) {
return false;
}
- Block their = (Block) obj;
+ if (!(obj instanceof Block their)) {
+ return false;
+ }
return getIdentifier().equals(their.getIdentifier()) && getRotation() == their.getRotation() && getProperties().equals(their.getProperties()) && getMod().equals(their.getMod());
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Blocks.java b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Blocks.java
index 07ae291de..011feefd7 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Blocks.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Blocks.java
@@ -20,7 +20,7 @@ import com.google.gson.JsonObject;
import java.util.HashSet;
public class Blocks {
- public static final Block nullBlock = new Block("minecraft", "air");
+ public static final Block nullBlock = new Block("air");
public static HashBiMap load(String mod, JsonObject json, boolean metaData) {
HashBiMap versionMapping = HashBiMap.create();
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/particle/Particle.java b/src/main/java/de/bixilon/minosoft/data/mappings/particle/Particle.java
index 0c8add7da..2e52e47a4 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/particle/Particle.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/particle/Particle.java
@@ -13,17 +13,15 @@
package de.bixilon.minosoft.data.mappings.particle;
-public record Particle(String mod, String identifier) {
- public String getMod() {
- return mod;
+import de.bixilon.minosoft.data.mappings.ModIdentifier;
+
+public class Particle extends ModIdentifier {
+
+ public Particle(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", mod, identifier);
+ public Particle(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/recipes/Ingredient.java b/src/main/java/de/bixilon/minosoft/data/mappings/recipes/Ingredient.java
index 916ba9942..dd7410fc4 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/recipes/Ingredient.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/recipes/Ingredient.java
@@ -15,18 +15,7 @@ package de.bixilon.minosoft.data.mappings.recipes;
import de.bixilon.minosoft.data.inventory.Slot;
-import java.util.Arrays;
-import java.util.HashSet;
-
public record Ingredient(Slot[] slot) {
- public static boolean slotEquals(Slot[] one, Slot[] two) {
- if (one.length != two.length) {
- return false;
- }
- HashSet first = new HashSet<>(Arrays.asList(one));
- HashSet second = new HashSet<>(Arrays.asList(two));
- return first.equals(second);
- }
public Slot[] getSlot() {
return slot;
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/statistics/Statistic.java b/src/main/java/de/bixilon/minosoft/data/mappings/statistics/Statistic.java
index 8ae2c19cd..a48411ae8 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/statistics/Statistic.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/statistics/Statistic.java
@@ -13,17 +13,15 @@
package de.bixilon.minosoft.data.mappings.statistics;
-public record Statistic(String mod, String identifier) {
- public String getMod() {
- return mod;
+import de.bixilon.minosoft.data.mappings.ModIdentifier;
+
+public class Statistic extends ModIdentifier {
+
+ public Statistic(String mod, String identifier) {
+ super(mod, identifier);
}
- public String getIdentifier() {
- return identifier;
- }
-
- @Override
- public String toString() {
- return String.format("%s:%s", mod, identifier);
+ public Statistic(String fullIdentifier) {
+ super(fullIdentifier);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java
index c553cc254..cc117e7ea 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java
@@ -490,10 +490,19 @@ public class VersionMapping {
}
// meta data index
if (data.has("data")) {
- JsonArray metaDataJson = data.getAsJsonArray("data");
- for (JsonElement jsonElement : metaDataJson) {
- String field = jsonElement.getAsString();
- entityMetaIndexMap.put(EntityMetaDataFields.valueOf(field), metaDataIndexOffset++);
+ JsonElement metaDataJson = data.get("data");
+ if (metaDataJson instanceof JsonArray metaDataJsonArray) {
+ for (JsonElement jsonElement : metaDataJsonArray) {
+ String field = jsonElement.getAsString();
+ entityMetaIndexMap.put(EntityMetaDataFields.valueOf(field), metaDataIndexOffset++);
+ }
+ } else if (metaDataJson instanceof JsonObject metaDataJsonObject) {
+ for (String key : metaDataJsonObject.keySet()) {
+ entityMetaIndexMap.put(EntityMetaDataFields.valueOf(key), metaDataJsonObject.get(key).getAsInt());
+ metaDataIndexOffset++;
+ }
+ } else {
+ throw new RuntimeException("entities.json is invalid");
}
}
entityMetaIndexOffsetParentMapping.put(identifier, new Pair<>(parent, metaDataIndexOffset));
diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/Versions.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/Versions.java
index 629dab14b..667fa956c 100644
--- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/Versions.java
+++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/Versions.java
@@ -136,7 +136,7 @@ public class Versions {
data = files.get(mapping.getFilename() + ".json");
}
if (data == null) {
- loadVersionMappings(mapping, "minecraft", data, version);
+ loadVersionMappings(mapping, ProtocolDefinition.DEFAULT_MOD, data, version);
continue;
}
for (String mod : data.keySet()) {
diff --git a/src/main/java/de/bixilon/minosoft/data/world/Chunk.java b/src/main/java/de/bixilon/minosoft/data/world/Chunk.java
index 90dcd11eb..ed5b1460e 100644
--- a/src/main/java/de/bixilon/minosoft/data/world/Chunk.java
+++ b/src/main/java/de/bixilon/minosoft/data/world/Chunk.java
@@ -13,6 +13,7 @@
package de.bixilon.minosoft.data.world;
+import de.bixilon.minosoft.data.entities.block.BlockEntityMetaData;
import de.bixilon.minosoft.data.mappings.blocks.Block;
import de.bixilon.minosoft.data.mappings.blocks.Blocks;
import de.bixilon.minosoft.render.blockModels.Face.RenderConstants;
@@ -67,4 +68,25 @@ public class Chunk {
public ConcurrentHashMap getSections() {
return sections;
}
+
+
+ public void setBlockEntityData(InChunkLocation position, BlockEntityMetaData data) {
+ ChunkSection section = sections.get((byte) (position.getY() / 16));
+ if (section == null) {
+ return;
+ }
+ section.setBlockEntityData(position.getInChunkSectionLocation(), data);
+ }
+
+ public BlockEntityMetaData getBlockEntityData(InChunkLocation position) {
+ ChunkSection section = sections.get((byte) (position.getY() / 16));
+ if (section == null) {
+ return null;
+ }
+ return section.getBlockEntityData(position.getInChunkSectionLocation());
+ }
+
+ public void setBlockEntityData(HashMap blockEntities) {
+ blockEntities.forEach(this::setBlockEntityData);
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.java b/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.java
index ea1ce909b..a04d5c255 100644
--- a/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.java
+++ b/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.java
@@ -13,6 +13,7 @@
package de.bixilon.minosoft.data.world;
+import de.bixilon.minosoft.data.entities.block.BlockEntityMetaData;
import de.bixilon.minosoft.data.mappings.blocks.Block;
import de.bixilon.minosoft.data.mappings.blocks.Blocks;
@@ -22,14 +23,23 @@ import java.util.concurrent.ConcurrentHashMap;
* Collection of 16x16x16 blocks
*/
public class ChunkSection {
- final ConcurrentHashMap blocks;
+ private final ConcurrentHashMap blocks;
+ private final ConcurrentHashMap blockEntityMeta = new ConcurrentHashMap<>();
+ private final ConcurrentHashMap light;
+ private final ConcurrentHashMap skyLight;
public ChunkSection(ConcurrentHashMap blocks) {
+ this(blocks, new ConcurrentHashMap<>(), new ConcurrentHashMap<>());
+ }
+
+ public ChunkSection(ConcurrentHashMap blocks, ConcurrentHashMap light, ConcurrentHashMap skyLight) {
this.blocks = blocks;
+ this.light = light;
+ this.skyLight = skyLight;
}
public ChunkSection() {
- this.blocks = new ConcurrentHashMap<>();
+ this(new ConcurrentHashMap<>());
}
public Block getBlock(int x, int y, int z) {
@@ -45,14 +55,43 @@ public class ChunkSection {
}
public void setBlock(InChunkSectionLocation location, Block block) {
+ if (blocks.get(location).equals(block)) {
+ return;
+ }
if (block == null || block.equals(Blocks.nullBlock)) {
blocks.remove(location);
return;
}
blocks.put(location, block);
+ blockEntityMeta.remove(location);
+ }
+
+ public void setBlockEntityData(InChunkSectionLocation position, BlockEntityMetaData data) {
+ // ToDo check if block is really a block entity (command block, spawner, skull, flower pot)
+ blockEntityMeta.put(position, data);
}
public ConcurrentHashMap getBlocks() {
return blocks;
}
+
+ public ConcurrentHashMap getBlockEntityMeta() {
+ return blockEntityMeta;
+ }
+
+ public ConcurrentHashMap getLight() {
+ return light;
+ }
+
+ public ConcurrentHashMap getSkyLight() {
+ return skyLight;
+ }
+
+ public BlockEntityMetaData getBlockEntityData(InChunkSectionLocation position) {
+ return blockEntityMeta.get(position);
+ }
+
+ public void setBlockEntityData(ConcurrentHashMap blockEntities) {
+ blockEntities.forEach(blockEntityMeta::put);
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/data/world/World.java b/src/main/java/de/bixilon/minosoft/data/world/World.java
index a6cef1705..490f07f7e 100644
--- a/src/main/java/de/bixilon/minosoft/data/world/World.java
+++ b/src/main/java/de/bixilon/minosoft/data/world/World.java
@@ -28,7 +28,6 @@ import java.util.concurrent.ConcurrentHashMap;
public class World {
final ConcurrentHashMap chunks = new ConcurrentHashMap<>();
final ConcurrentHashMap entities = new ConcurrentHashMap<>();
- final HashMap blockEntityMeta = new HashMap<>();
boolean hardcore;
boolean raining;
Dimension dimension; // used for sky color, etc
@@ -109,16 +108,23 @@ public class World {
}
public void setBlockEntityData(BlockPosition position, BlockEntityMetaData data) {
- // ToDo check if block is really a block entity (command block, spawner, skull, flower pot)
- blockEntityMeta.put(position, data);
+ Chunk chunk = chunks.get(position.getChunkLocation());
+ if (chunk == null) {
+ return;
+ }
+ chunk.setBlockEntityData(position.getInChunkLocation(), data);
}
public BlockEntityMetaData getBlockEntityData(BlockPosition position) {
- return blockEntityMeta.get(position);
+ Chunk chunk = chunks.get(position.getChunkLocation());
+ if (chunk == null) {
+ return null;
+ }
+ return chunk.getBlockEntityData(position.getInChunkLocation());
}
public void setBlockEntityData(HashMap blockEntities) {
- blockEntities.forEach(blockEntityMeta::put);
+ blockEntities.forEach(this::setBlockEntityData);
}
public Chunk getChunk(ChunkLocation chunkLocation) {
diff --git a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java
index 868d0a795..c0b30efc5 100644
--- a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java
+++ b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java
@@ -20,6 +20,9 @@ import de.bixilon.minosoft.data.locale.Strings;
import de.bixilon.minosoft.data.mappings.versions.Version;
import de.bixilon.minosoft.data.mappings.versions.Versions;
import de.bixilon.minosoft.logging.Log;
+import de.bixilon.minosoft.modding.event.EventInvokerCallback;
+import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent;
+import de.bixilon.minosoft.modding.event.events.ServerListPingArriveEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.ping.ForgeModInfo;
import de.bixilon.minosoft.protocol.ping.ServerListPing;
@@ -134,7 +137,8 @@ public class ServerListCell extends ListCell implements Initializable {
if (server.getLastPing() == null) {
server.ping();
}
- server.getLastPing().addPingCallback(ping -> Platform.runLater(() -> {
+ server.getLastPing().registerEvent(new EventInvokerCallback(ServerListPingArriveEvent.class, event -> Platform.runLater(() -> {
+ ServerListPing ping = event.getServerListPing();
if (server != this.server) {
// cell does not contains us anymore
return;
@@ -193,7 +197,7 @@ public class ServerListCell extends ListCell implements Initializable {
canConnect = false;
setErrorMotd(String.format("%s: %s", server.getLastPing().getLastConnectionException().getClass().getCanonicalName(), server.getLastPing().getLastConnectionException().getLocalizedMessage()));
}
- }));
+ })));
}
private void resetCell() {
@@ -265,7 +269,7 @@ public class ServerListCell extends ListCell implements Initializable {
}
optionsConnect.setDisable(true);
connection.connect(server.getLastPing().getAddress(), version);
- connection.addConnectionChangeCallback(this::handleConnectionCallback);
+ connection.registerEvent(new EventInvokerCallback<>(this::handleConnectionCallback));
server.addConnection(connection);
}
@@ -334,7 +338,8 @@ public class ServerListCell extends ListCell implements Initializable {
dialog.showAndWait();
}
- private void handleConnectionCallback(Connection connection) {
+ private void handleConnectionCallback(ConnectionStateChangeEvent event) {
+ Connection connection = event.getConnection();
if (!server.getConnections().contains(connection)) {
// the card got recycled
return;
diff --git a/src/main/java/de/bixilon/minosoft/gui/main/SessionListCell.java b/src/main/java/de/bixilon/minosoft/gui/main/SessionListCell.java
index 3ace14379..c9d997d3a 100644
--- a/src/main/java/de/bixilon/minosoft/gui/main/SessionListCell.java
+++ b/src/main/java/de/bixilon/minosoft/gui/main/SessionListCell.java
@@ -15,6 +15,8 @@ package de.bixilon.minosoft.gui.main;
import de.bixilon.minosoft.data.locale.LocaleManager;
import de.bixilon.minosoft.data.locale.Strings;
+import de.bixilon.minosoft.modding.event.EventInvokerCallback;
+import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
@@ -81,12 +83,13 @@ public class SessionListCell extends ListCell implements Initializab
}
setStyle(null);
this.connection = connection;
- connection.addConnectionChangeCallback(this::handleConnectionCallback);
+ connection.registerEvent(new EventInvokerCallback<>(this::handleConnectionCallback));
connectionId.setText(String.format("#%d", connection.getConnectionId()));
account.setText(connection.getPlayer().getAccount().getPlayerName());
}
- private void handleConnectionCallback(Connection connection) {
+ private void handleConnectionCallback(ConnectionStateChangeEvent event) {
+ Connection connection = event.getConnection();
if (this.connection != connection) {
// the card got recycled
return;
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventInvoker.java b/src/main/java/de/bixilon/minosoft/modding/event/EventInvoker.java
new file mode 100644
index 000000000..0c8de01c0
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/modding/event/EventInvoker.java
@@ -0,0 +1,41 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.modding.event;
+
+import de.bixilon.minosoft.modding.event.events.ConnectionEvent;
+import de.bixilon.minosoft.modding.loading.Priorities;
+
+public abstract class EventInvoker {
+ protected final EventListener listener;
+ protected final boolean ignoreCancelled;
+ protected final Priorities priority;
+
+ public EventInvoker(boolean ignoreCancelled, Priorities priority, EventListener listener) {
+ this.ignoreCancelled = ignoreCancelled;
+ this.listener = listener;
+ this.priority = priority;
+ }
+
+ public boolean isIgnoreCancelled() {
+ return ignoreCancelled;
+ }
+
+ public Priorities getPriority() {
+ return priority;
+ }
+
+ public abstract void invoke(ConnectionEvent event);
+
+ public abstract Class extends ConnectionEvent> getEventType();
+}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerCallback.java b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerCallback.java
new file mode 100644
index 000000000..7dd95d41a
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerCallback.java
@@ -0,0 +1,54 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.modding.event;
+
+import de.bixilon.minosoft.modding.event.events.ConnectionEvent;
+import de.bixilon.minosoft.modding.loading.Priorities;
+
+public class EventInvokerCallback extends EventInvoker {
+ private final InvokerCallback callback;
+
+ Class extends ConnectionEvent> eventType = ConnectionEvent.class;
+
+ public EventInvokerCallback(boolean ignoreCancelled, InvokerCallback callback) {
+ super(ignoreCancelled, Priorities.NORMAL, null);
+ this.callback = callback;
+ }
+
+
+ // if you need instant fireing support
+ public EventInvokerCallback(Class extends ConnectionEvent> eventType, InvokerCallback callback) {
+ this(false, callback);
+ this.eventType = eventType; // ToDo: how to get the class of V? seems to be impossible
+ }
+
+ public EventInvokerCallback(InvokerCallback callback) {
+ this(false, callback);
+ }
+
+ public void invoke(ConnectionEvent event) {
+ if (eventType != event.getClass()) {
+ return;
+ }
+ callback.handle((V) event);
+ }
+
+ public Class extends ConnectionEvent> getEventType() {
+ return eventType;
+ }
+
+ public interface InvokerCallback {
+ void handle(V event);
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventMethod.java b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.java
similarity index 66%
rename from src/main/java/de/bixilon/minosoft/modding/event/EventMethod.java
rename to src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.java
index 5d72c83d1..459e47431 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/EventMethod.java
+++ b/src/main/java/de/bixilon/minosoft/modding/event/EventInvokerMethod.java
@@ -16,23 +16,23 @@ package de.bixilon.minosoft.modding.event;
import de.bixilon.minosoft.modding.event.events.CancelableEvent;
import de.bixilon.minosoft.modding.event.events.ConnectionEvent;
import de.bixilon.minosoft.modding.event.events.annotations.EventHandler;
+import de.bixilon.minosoft.modding.loading.Priorities;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-public class EventMethod {
- private final EventHandler annotation;
- private final EventListener listener;
+public class EventInvokerMethod extends EventInvoker {
private final Method method;
+ private final Class extends ConnectionEvent> eventType;
- public EventMethod(EventHandler annotation, EventListener listener, Method method) {
- this.annotation = annotation;
- this.listener = listener;
+ public EventInvokerMethod(boolean ignoreCancelled, Priorities priority, EventListener listener, Method method) {
+ super(ignoreCancelled, priority, listener);
this.method = method;
+ eventType = (Class extends ConnectionEvent>) method.getParameters()[0].getType();
}
- public EventHandler getAnnotation() {
- return annotation;
+ public EventInvokerMethod(EventHandler annotation, EventListener listener, Method method) {
+ this(annotation.ignoreCancelled(), annotation.priority(), listener, method);
}
public Method getMethod() {
@@ -43,7 +43,7 @@ public class EventMethod {
if (!method.getParameters()[0].getType().isAssignableFrom(event.getClass())) {
return;
}
- if (!annotation.ignoreCancelled() && event instanceof CancelableEvent cancelableEvent && cancelableEvent.isCancelled()) {
+ if (!ignoreCancelled && event instanceof CancelableEvent cancelableEvent && cancelableEvent.isCancelled()) {
return;
}
try {
@@ -52,4 +52,8 @@ public class EventMethod {
e.printStackTrace();
}
}
+
+ public Class extends ConnectionEvent> getEventType() {
+ return eventType;
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventManager.java b/src/main/java/de/bixilon/minosoft/modding/event/EventManager.java
index a2abeba77..9fbfebebf 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/EventManager.java
+++ b/src/main/java/de/bixilon/minosoft/modding/event/EventManager.java
@@ -23,16 +23,16 @@ import java.util.HashMap;
import java.util.HashSet;
public class EventManager {
- private final HashSet globalEventListeners = new HashSet<>();
- private final HashMap, HashSet> specificEventListeners = new HashMap<>();
+ private final HashSet globalEventListeners = new HashSet<>();
+ private final HashMap, HashSet> specificEventListeners = new HashMap<>();
public void registerGlobalListener(EventListener listener) {
globalEventListeners.addAll(getEventMethods(listener));
}
- private HashSet getEventMethods(EventListener listener) {
+ private HashSet getEventMethods(EventListener listener) {
Class extends EventListener> clazz = listener.getClass();
- HashSet eventMethods = new HashSet<>();
+ HashSet eventInvokers = new HashSet<>();
for (Method method : clazz.getMethods()) {
EventHandler annotation = method.getAnnotation(EventHandler.class);
if (annotation == null) {
@@ -44,12 +44,12 @@ public class EventManager {
if (!ConnectionEvent.class.isAssignableFrom(method.getParameters()[0].getType())) {
continue;
}
- eventMethods.add(new EventMethod(annotation, listener, method));
+ eventInvokers.add(new EventInvokerMethod(annotation, listener, method));
}
- return eventMethods;
+ return eventInvokers;
}
- public HashSet getGlobalEventListeners() {
+ public HashSet getGlobalEventListeners() {
return globalEventListeners;
}
@@ -61,7 +61,7 @@ public class EventManager {
specificEventListeners.put(serverAddresses, getEventMethods(listener));
}
- public HashMap, HashSet> getSpecificEventListeners() {
+ public HashMap, HashSet> getSpecificEventListeners() {
return specificEventListeners;
}
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionStateChangeEvent.java b/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionStateChangeEvent.java
new file mode 100644
index 000000000..6bb8ef047
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ConnectionStateChangeEvent.java
@@ -0,0 +1,41 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.modding.event.events;
+
+import de.bixilon.minosoft.modding.event.events.annotations.Unsafe;
+import de.bixilon.minosoft.protocol.network.Connection;
+import de.bixilon.minosoft.protocol.protocol.ConnectionStates;
+
+/**
+ * Fired when the connection state was just changed
+ */
+@Unsafe
+public class ConnectionStateChangeEvent extends ConnectionEvent {
+ private final ConnectionStates previousState;
+ private final ConnectionStates currentState;
+
+ public ConnectionStateChangeEvent(Connection connection, ConnectionStates previousState, ConnectionStates currentState) {
+ super(connection);
+ this.previousState = previousState;
+ this.currentState = currentState;
+ }
+
+ public ConnectionStates getPreviousState() {
+ return previousState;
+ }
+
+ public ConnectionStates getCurrentState() {
+ return currentState;
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/gui/main/ConnectionChangeCallback.java b/src/main/java/de/bixilon/minosoft/modding/event/events/ServerListPingArriveEvent.java
similarity index 56%
rename from src/main/java/de/bixilon/minosoft/gui/main/ConnectionChangeCallback.java
rename to src/main/java/de/bixilon/minosoft/modding/event/events/ServerListPingArriveEvent.java
index 2442a2483..be8095f6e 100644
--- a/src/main/java/de/bixilon/minosoft/gui/main/ConnectionChangeCallback.java
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ServerListPingArriveEvent.java
@@ -11,10 +11,26 @@
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
*/
-package de.bixilon.minosoft.gui.main;
+package de.bixilon.minosoft.modding.event.events;
import de.bixilon.minosoft.protocol.network.Connection;
+import de.bixilon.minosoft.protocol.ping.ServerListPing;
-public interface ConnectionChangeCallback {
- void handle(Connection connection);
+import javax.annotation.Nullable;
+
+/**
+ * Fired when a ping arrives from the server or the ping already arrived and the event got registered to late
+ */
+public class ServerListPingArriveEvent extends ConnectionEvent {
+ private final ServerListPing serverListPing;
+
+ public ServerListPingArriveEvent(Connection connection, ServerListPing serverListPing) {
+ super(connection);
+ this.serverListPing = serverListPing;
+ }
+
+ @Nullable
+ public ServerListPing getServerListPing() {
+ return serverListPing;
+ }
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/Unsafe.java b/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/Unsafe.java
index bd3ce413a..7b38bf237 100644
--- a/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/Unsafe.java
+++ b/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/Unsafe.java
@@ -13,5 +13,9 @@
package de.bixilon.minosoft.modding.event.events.annotations;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
public @interface Unsafe {
}
diff --git a/src/main/java/de/bixilon/minosoft/modding/loading/ModLoader.java b/src/main/java/de/bixilon/minosoft/modding/loading/ModLoader.java
index 42ac4afa0..eb12dd05f 100644
--- a/src/main/java/de/bixilon/minosoft/modding/loading/ModLoader.java
+++ b/src/main/java/de/bixilon/minosoft/modding/loading/ModLoader.java
@@ -41,7 +41,7 @@ public class ModLoader {
// load all jars, parse the mod.json
// sort the list and prioritize
// load all lists and dependencies async
- File[] files = new File(StaticConfiguration.HOME_DIR + "mods").listFiles();
+ File[] files = new File(StaticConfiguration.HOME_DIRECTORY + "mods").listFiles();
if (files == null) {
// no mods to load
return;
diff --git a/src/main/java/de/bixilon/minosoft/modding/loading/ModLoadingException.java b/src/main/java/de/bixilon/minosoft/modding/loading/ModLoadingException.java
index c056e5a93..f90349e9b 100644
--- a/src/main/java/de/bixilon/minosoft/modding/loading/ModLoadingException.java
+++ b/src/main/java/de/bixilon/minosoft/modding/loading/ModLoadingException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.modding.loading;
public class ModLoadingException extends Exception {
+
public ModLoadingException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java
index 936b4a19c..32529848a 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java
@@ -21,21 +21,16 @@ import de.bixilon.minosoft.data.mappings.recipes.Recipes;
import de.bixilon.minosoft.data.mappings.versions.Version;
import de.bixilon.minosoft.data.mappings.versions.VersionMapping;
import de.bixilon.minosoft.data.mappings.versions.Versions;
-import de.bixilon.minosoft.gui.main.ConnectionChangeCallback;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.logging.LogLevels;
-import de.bixilon.minosoft.modding.event.EventMethod;
-import de.bixilon.minosoft.modding.event.events.CancelableEvent;
-import de.bixilon.minosoft.modding.event.events.ConnectionEvent;
-import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent;
-import de.bixilon.minosoft.modding.event.events.PacketSendEvent;
+import de.bixilon.minosoft.modding.event.EventInvoker;
+import de.bixilon.minosoft.modding.event.events.*;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.ServerboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.handshaking.PacketHandshake;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketLoginStart;
import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusPing;
import de.bixilon.minosoft.protocol.packets.serverbound.status.PacketStatusRequest;
-import de.bixilon.minosoft.protocol.ping.PingCallback;
import de.bixilon.minosoft.protocol.ping.ServerListPing;
import de.bixilon.minosoft.protocol.protocol.*;
import de.bixilon.minosoft.render.GameWindow;
@@ -45,7 +40,6 @@ import de.bixilon.minosoft.util.ServerAddress;
import org.xbill.DNS.TextParseException;
import javax.annotation.Nullable;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -57,14 +51,11 @@ public class Connection {
private final PacketSender sender = new PacketSender(this);
private final LinkedBlockingQueue handlingQueue = new LinkedBlockingQueue<>();
private final VelocityHandler velocityHandler = new VelocityHandler(this);
- private final HashSet pingCallbacks = new HashSet<>();
- private final HashSet connectionChangeCallbacks = new HashSet<>();
- private final LinkedList eventListeners = new LinkedList<>();
+ private final LinkedList eventListeners = new LinkedList<>();
private final int connectionId;
private final Player player;
private final String hostname;
- private RenderProperties renderProperties;
- LinkedList addresses;
+ private RenderProperties renderProperties; LinkedList addresses;
int desiredVersionNumber = -1;
ServerAddress address;
Thread handleThread;
@@ -285,15 +276,6 @@ public class Connection {
return connectionId;
}
- public void addPingCallback(PingCallback callback) {
- if (getConnectionState() == ConnectionStates.FAILED || getConnectionState() == ConnectionStates.FAILED_NO_RETRY || lastPing != null) {
- // ping done
- callback.handle(lastPing);
- return;
- }
- pingCallbacks.add(callback);
- }
-
public ConnectionStates getConnectionState() {
return state;
}
@@ -302,7 +284,7 @@ public class Connection {
if (this.state == state) {
return;
}
- Log.verbose("ConnectionStatus changed: " + state);
+ Log.verbose("ConnectionState changed: " + state);
ConnectionStates previousState = this.state;
this.state = state;
switch (state) {
@@ -323,7 +305,7 @@ public class Connection {
if (a == null || b == null) {
return 0;
}
- return -(b.getAnnotation().priority().ordinal() - a.getAnnotation().priority().ordinal());
+ return -(b.getPriority().ordinal() - a.getPriority().ordinal());
});
// connection established, starting threads and logging in
startHandlingThread();
@@ -377,11 +359,7 @@ public class Connection {
}
}
// handle callbacks
- connectionChangeCallbacks.forEach((callback -> callback.handle(this)));
- }
-
- public HashSet getPingCallbacks() {
- return pingCallbacks;
+ fireEvent(new ConnectionStateChangeEvent(this, previousState, state));
}
public int getDesiredVersionNumber() {
@@ -394,21 +372,23 @@ public class Connection {
public void handlePingCallbacks(@Nullable ServerListPing ping) {
this.lastPing = ping;
- pingCallbacks.forEach((callback -> callback.handle(ping)));
+ fireEvent(new ServerListPingArriveEvent(this, ping));
+ }
+
+ public void registerEvent(EventInvoker method) {
+ eventListeners.add(method);
+ if (method.getEventType() == ServerListPingArriveEvent.class) {
+ if (getConnectionState() == ConnectionStates.FAILED || getConnectionState() == ConnectionStates.FAILED_NO_RETRY || lastPing != null) {
+ // ping done
+ method.invoke(new ServerListPingArriveEvent(this, lastPing));
+ }
+ }
}
public Exception getLastConnectionException() {
return (lastException != null) ? lastException : network.getLastException();
}
- public void addConnectionChangeCallback(ConnectionChangeCallback callback) {
- connectionChangeCallbacks.add(callback);
- }
-
- public HashSet getConnectionChangeCallbacks() {
- return connectionChangeCallbacks;
- }
-
public ServerListPing getLastPing() {
return lastPing;
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/socket/SocketNetwork.java b/src/main/java/de/bixilon/minosoft/protocol/network/socket/SocketNetwork.java
index 617738097..9f1dda46d 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/network/socket/SocketNetwork.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/network/socket/SocketNetwork.java
@@ -49,7 +49,6 @@ public class SocketNetwork implements Network {
Socket socket;
OutputStream outputStream;
InputStream inputStream;
- boolean encryptionEnabled = false;
Exception lastException;
public SocketNetwork(Connection connection) {
@@ -149,21 +148,20 @@ public class SocketNetwork implements Network {
int numRead = 0;
int length = 0;
int read;
- do
- {
+ do {
read = inputStream.read();
if (read == -1) {
disconnect();
return;
}
- int value = (read & 0b01111111);
+ int value = (read & 0x7F);
length |= (value << (7 * numRead));
numRead++;
if (numRead > 5) {
throw new RuntimeException("VarInt is too big");
}
- } while ((read & 0b10000000) != 0);
+ } while ((read & 0x80) != 0);
if (length > ProtocolDefinition.PROTOCOL_PACKET_MAX_SIZE) {
Log.protocol(String.format("Server sent us a to big packet (%d bytes > %d bytes)", length, ProtocolDefinition.PROTOCOL_PACKET_MAX_SIZE));
inputStream.skip(length);
@@ -276,7 +274,6 @@ public class SocketNetwork implements Network {
Cipher cipherDecrypt = CryptManager.createNetCipherInstance(Cipher.DECRYPT_MODE, secretKey);
inputStream = new CipherInputStream(inputStream, cipherDecrypt);
outputStream = new CipherOutputStream(outputStream, cipherEncrypt);
- encryptionEnabled = true;
Log.debug("Encryption enabled!");
}
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketJoinGame.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketJoinGame.java
index d49a6a999..40e2eac5b 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketJoinGame.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketJoinGame.java
@@ -22,6 +22,7 @@ import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
+import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import de.bixilon.minosoft.util.BitByte;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
import de.bixilon.minosoft.util.nbt.tag.ListTag;
@@ -98,9 +99,9 @@ public class PacketJoinGame implements ClientboundPacket {
} else {
CompoundTag tag = (CompoundTag) buffer.readNBT();
if (tag.getByteTag("has_skylight").getValue() == 0x01) { //ToDo: this is just for not messing up the skylight
- dimension = dimensions.get("minecraft").get("overworld");
+ dimension = dimensions.get(ProtocolDefinition.DEFAULT_MOD).get("overworld");
} else {
- dimension = dimensions.get("minecraft").get("the_nether");
+ dimension = dimensions.get(ProtocolDefinition.DEFAULT_MOD).get("the_nether");
}
}
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/ping/PingCallback.java b/src/main/java/de/bixilon/minosoft/protocol/ping/PingCallback.java
deleted file mode 100644
index 4600e618a..000000000
--- a/src/main/java/de/bixilon/minosoft/protocol/ping/PingCallback.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Minosoft
- * Copyright (C) 2020 Moritz Zwerger
- *
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with this program.If not, see .
- *
- * This software is not affiliated with Mojang AB, the original developer of Minecraft.
- */
-
-package de.bixilon.minosoft.protocol.ping;
-
-public interface PingCallback {
- void handle(ServerListPing ping);
-}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java
index 317d10e34..ba5ceeb60 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java
@@ -82,7 +82,7 @@ public class InByteBuffer {
public byte[] readBytes(int count) {
byte[] ret = new byte[count];
System.arraycopy(bytes, position, ret, 0, count);
- position = position + count;
+ position += count;
return ret;
}
@@ -97,33 +97,26 @@ public class InByteBuffer {
}
public String readString() {
- int length = readVarInt();
- return new String(readBytes(length), StandardCharsets.UTF_8);
+ return new String(readBytes(readVarInt()), StandardCharsets.UTF_8);
}
public long readVarLong() {
- int numRead = 0;
+ int byteCount = 0;
long result = 0;
byte read;
- do
- {
+ do {
read = readByte();
- int value = (read & 0b01111111);
- result |= (value << (7 * numRead));
-
- numRead++;
- if (numRead > 10) {
- throw new RuntimeException("VarLong is too big");
+ result |= (read & 0x7F) << (7 * byteCount);
+ byteCount++;
+ if (byteCount > 10) {
+ throw new IllegalArgumentException("VarLong is too big");
}
- } while ((read & 0b10000000) != 0);
-
+ } while ((read & 0x80) != 0);
return result;
}
public boolean readBoolean() {
- boolean ret;
- ret = readByte() == 1;
- return ret;
+ return readByte() == 1;
}
public short[] readLEShorts(int num) {
@@ -152,21 +145,17 @@ public class InByteBuffer {
}
public int readVarInt() {
- // thanks https://wiki.vg/Protocol#VarInt_and_VarLong
- int numRead = 0;
+ int byteCount = 0;
int result = 0;
byte read;
- do
- {
+ do {
read = readByte();
- int value = (read & 0b01111111);
- result |= (value << (7 * numRead));
-
- numRead++;
- if (numRead > 5) {
- throw new RuntimeException("VarInt is too big");
+ result |= (read & 0x7F) << (7 * byteCount);
+ byteCount++;
+ if (byteCount > 5) {
+ throw new IllegalArgumentException("VarInt is too big");
}
- } while ((read & 0b10000000) != 0);
+ } while ((read & 0x80) != 0);
return result;
}
@@ -189,15 +178,13 @@ public class InByteBuffer {
public BlockPosition readPosition() {
//ToDo: protocol id 7
+ long raw = readLong();
+ int x = (int) (raw >> 38);
if (versionId < 440) {
- long raw = readLong();
- int x = (int) (raw >> 38);
short y = (short) ((raw >> 26) & 0xFFF);
int z = (int) (raw & 0x3FFFFFF);
return new BlockPosition(x, y, z);
}
- long raw = readLong();
- int x = (int) (raw >> 38);
short y = (short) (raw & 0xFFF);
int z = (int) (raw << 26 >> 38);
return new BlockPosition(x, y, z);
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.java
index 31a5470f8..2f3a14c4a 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.java
@@ -43,7 +43,7 @@ public class LANServerListener {
servers = HashBiMap.create();
MulticastSocket socket = new MulticastSocket(ProtocolDefinition.LAN_SERVER_BROADCAST_PORT);
socket.joinGroup(ProtocolDefinition.LAN_SERVER_BROADCAST_ADDRESS); // ToDo: do not use deprecated methods
- byte[] buf = new byte[65535];
+ byte[] buf = new byte[256]; // this should be enough, if the packet is longer, it is probably invalid
latch.countDown();
while (true) {
try {
@@ -52,7 +52,7 @@ public class LANServerListener {
Log.protocol(String.format("LAN UDP Broadcast from %s:%s -> %s", packet.getAddress().getHostAddress(), packet.getPort(), new String(buf)));
InetAddress sender = packet.getAddress();
if (servers.containsKey(sender)) {
- // This guy sent us already a server, maybe a duplicate or a DOS attack...Skip
+ // This guy sent us already a server, maybe just the regular 1.5 second interval, a duplicate or a DOS attack...We don't care
continue;
}
Server server = getServerByBroadcast(sender, packet.getData());
@@ -71,6 +71,7 @@ public class LANServerListener {
} catch (Exception e) {
e.printStackTrace();
+ latch.countDown();
}
servers = null;
Log.warn("Stopping LAN Server Listener Thread");
@@ -83,6 +84,9 @@ public class LANServerListener {
}
public static void removeAll() {
+ if (servers == null) {
+ return;
+ }
HashSet temp = new HashSet<>(servers.values());
for (Server server : temp) {
if (server.isConnected()) {
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java
index 135dc96fe..0ed8f00cf 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java
@@ -54,17 +54,13 @@ public class OutByteBuffer {
public void writeShort(short s) {
ByteBuffer buffer = ByteBuffer.allocate(Short.BYTES);
buffer.putShort(s);
- for (byte b : buffer.array()) {
- bytes.add(b);
- }
+ writeBytes(buffer.array());
}
public void writeInt(int i) {
ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES);
buffer.putInt(i);
- for (byte b : buffer.array()) {
- bytes.add(b);
- }
+ writeBytes(buffer.array());
}
public void writeBytes(byte[] b) {
@@ -76,9 +72,7 @@ public class OutByteBuffer {
public void writeLong(Long l) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(l);
- for (byte b : buffer.array()) {
- bytes.add(b);
- }
+ writeBytes(buffer.array());
}
public void writeTextComponent(ChatComponent chatComponent) {
@@ -89,21 +83,17 @@ public class OutByteBuffer {
writeString(j.toString());
}
- public void writeString(String s) {
- writeVarInt(s.length());
- for (byte b : s.getBytes(StandardCharsets.UTF_8)) {
- bytes.add(b);
- }
+ public void writeString(String string) {
+ writeVarInt(string.length());
+ writeBytes(string.getBytes(StandardCharsets.UTF_8));
}
public void writeVarLong(long value) {
- do
- {
- byte temp = (byte) (value & 0b01111111);
- // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone
+ do {
+ byte temp = (byte) (value & 0x7F);
value >>>= 7;
if (value != 0) {
- temp |= 0b10000000;
+ temp |= 0x80;
}
writeByte(temp);
} while (value != 0);
@@ -124,21 +114,17 @@ public class OutByteBuffer {
public void writeDouble(Double d) {
ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
buffer.putDouble(d);
- for (byte b : buffer.array()) {
- bytes.add(b);
- }
+ writeBytes(buffer.array());
}
public void writeUUID(UUID u) {
ByteBuffer buffer = ByteBuffer.allocate(16); // UUID.BYTES
buffer.putLong(u.getMostSignificantBits());
buffer.putLong(u.getLeastSignificantBits());
- for (byte b : buffer.array()) {
- bytes.add(b);
- }
+ writeBytes(buffer.array());
}
- public void writeFixedPointNumberInteger(double d) {
+ public void writeFixedPointNumberInt(double d) {
writeInt((int) (d * 32.0D));
}
@@ -162,11 +148,10 @@ public class OutByteBuffer {
// thanks https://wiki.vg/Protocol#VarInt_and_VarLong
do
{
- byte temp = (byte) (value & 0b01111111);
- // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone
+ byte temp = (byte) (value & 0x7F);
value >>>= 7;
if (value != 0) {
- temp |= 0b10000000;
+ temp |= 0x80;
}
writeByte(temp);
} while (value != 0);
@@ -177,11 +162,10 @@ public class OutByteBuffer {
// thanks https://wiki.vg/Protocol#VarInt_and_VarLong
do
{
- byte temp = (byte) (value & 0b01111111);
- // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone
+ byte temp = (byte) (value & 0x7F);
value >>>= 7;
if (value != 0) {
- temp |= 0b10000000;
+ temp |= 0x80;
}
bytes.add(count++, temp);
} while (value != 0);
@@ -216,10 +200,8 @@ public class OutByteBuffer {
bytes.add((byte) ((b) ? 0x01 : 0x00));
}
- public void writeStringNoLength(String s) {
- for (byte b : s.getBytes(StandardCharsets.UTF_8)) {
- bytes.add(b);
- }
+ public void writeStringNoLength(String string) {
+ writeBytes(string.getBytes(StandardCharsets.UTF_8));
}
public void writeBlockPositionByte(BlockPosition pos) {
@@ -236,15 +218,15 @@ public class OutByteBuffer {
return ret;
}
- public void writeIntegers(int[] data) {
- for (int integer : data) {
- writeInt(integer);
+ public void writeInts(int[] data) {
+ for (int i : data) {
+ writeInt(i);
}
}
public void writeLongs(long[] data) {
- for (long long_long : data) {
- writeLong(long_long);
+ for (long l : data) {
+ writeLong(l);
}
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java
index 5376698a1..83396d544 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java
@@ -117,7 +117,9 @@ public class PacketHandler {
connection.getPlayer().getWorld().setHardcore(pkg.isHardcore());
connection.getMapping().setDimensions(pkg.getDimensions());
connection.getPlayer().getWorld().setDimension(pkg.getDimension());
- connection.getPlayer().setEntity(new PlayerEntity(connection, pkg.getEntityId(), connection.getPlayer().getPlayerUUID(), null, null, connection.getPlayer().getPlayerName(), new PlayerPropertyData[]{}, null));
+ PlayerEntity entity = new PlayerEntity(connection, pkg.getEntityId(), connection.getPlayer().getPlayerUUID(), null, null, connection.getPlayer().getPlayerName(), new PlayerPropertyData[]{}, null);
+ connection.getPlayer().setEntity(entity);
+ connection.getPlayer().getWorld().addEntity(entity);
connection.getSender().sendChatMessage("I am alive! ~ Minosoft");
}
@@ -376,13 +378,7 @@ public class PacketHandler {
}
public void handle(PacketEntityMetadata pkg) {
- Entity entity;
- if (pkg.getEntityId() == connection.getPlayer().getEntity().getEntityId()) {
- // our own meta data...set it
- entity = connection.getPlayer().getEntity();
- } else {
- entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
- }
+ Entity entity= connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
if(entity == null){
// thanks mojang
return;
@@ -472,13 +468,7 @@ public class PacketHandler {
}
public void handle(PacketEntityEffect pkg) {
- Entity entity;
- if (pkg.getEntityId() == connection.getPlayer().getEntity().getEntityId()) {
- // that's us!
- entity = connection.getPlayer().getEntity();
- } else {
- entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
- }
+ Entity entity= connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
if(entity == null){
// thanks mojang
return;
@@ -487,13 +477,7 @@ public class PacketHandler {
}
public void handle(PacketRemoveEntityEffect pkg) {
- Entity entity;
- if (pkg.getEntityId() == connection.getPlayer().getEntity().getEntityId()) {
- // that's us!
- entity = connection.getPlayer().getEntity();
- } else {
- entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
- }
+ Entity entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
if(entity == null){
// thanks mojang
return;
@@ -533,13 +517,7 @@ public class PacketHandler {
}
public void handle(PacketAttachEntity pkg) {
- Entity entity;
- if (pkg.getEntityId() == connection.getPlayer().getEntity().getEntityId()) {
- // that's us!
- entity = connection.getPlayer().getEntity();
- } else {
- entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
- }
+ Entity entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId());
if(entity == null){
// thanks mojang
return;
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketParseException.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketParseException.java
index e14b50902..7c68c0487 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketParseException.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketParseException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.protocol.protocol;
public class PacketParseException extends Exception {
+
public PacketParseException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java
index caa427b44..c31beea0d 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java
@@ -35,6 +35,10 @@ public final class ProtocolDefinition {
public static final InetAddress LAN_SERVER_BROADCAST_ADDRESS;
public static final int LAN_SERVER_MAXIMUM_SERVERS = 100; // maximum number of lan servers, set because otherwise dos attacks would be easy
+ public static final String DEFAULT_MOD = "minecraft";
+
+ public static final int DEFAULT_BUFFER_SIZE = 4096;
+
static {
try {
LAN_SERVER_BROADCAST_ADDRESS = InetAddress.getByName("224.0.2.60");
diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/UnknownPacketException.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/UnknownPacketException.java
index 5bbda1d67..bc1fad805 100644
--- a/src/main/java/de/bixilon/minosoft/protocol/protocol/UnknownPacketException.java
+++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/UnknownPacketException.java
@@ -14,6 +14,7 @@
package de.bixilon.minosoft.protocol.protocol;
public class UnknownPacketException extends Exception {
+
public UnknownPacketException() {
}
diff --git a/src/main/java/de/bixilon/minosoft/render/texture/TextureLoader.java b/src/main/java/de/bixilon/minosoft/render/texture/TextureLoader.java
index a3034f76e..8a2632d49 100644
--- a/src/main/java/de/bixilon/minosoft/render/texture/TextureLoader.java
+++ b/src/main/java/de/bixilon/minosoft/render/texture/TextureLoader.java
@@ -48,7 +48,7 @@ public class TextureLoader {
}
combineTextures();
try {
- PNGDecoder decoder = new PNGDecoder(new FileInputStream(StaticConfiguration.HOME_DIR + "assets/allTextures.png"));
+ PNGDecoder decoder = new PNGDecoder(new FileInputStream(StaticConfiguration.HOME_DIRECTORY + "assets/allTextures.png"));
ByteBuffer buf = ByteBuffer.allocateDirect(decoder.getWidth() * decoder.getHeight() * 4);
decoder.decode(buf, decoder.getWidth() * 4, PNGDecoder.Format.RGBA);
textureID = bindTexture(buf, decoder.getWidth(), decoder.getHeight());
@@ -115,7 +115,7 @@ public class TextureLoader {
}
try {
- File outputFile = new File(StaticConfiguration.HOME_DIR + "assets/allTextures.png");
+ File outputFile = new File(StaticConfiguration.HOME_DIRECTORY + "assets/allTextures.png");
ImageIO.write(totalImage, "png", outputFile);
} catch (IOException e) {
e.printStackTrace();
diff --git a/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java b/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java
index 516e598cb..624334b1a 100644
--- a/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java
+++ b/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java
@@ -110,7 +110,6 @@ public final class ChunkUtil {
if (containsSkyLight) {
skyLight = buffer.readBytes(halfBytes);
}
-
if (groundUpContinuous) {
byte[] biomes = buffer.readBytes(RenderConstants.SECTION_WIDTH * RenderConstants.SECTION_WIDTH);
}
diff --git a/src/main/java/de/bixilon/minosoft/util/DNSUtil.java b/src/main/java/de/bixilon/minosoft/util/DNSUtil.java
index 331a2b260..48e58d6c9 100644
--- a/src/main/java/de/bixilon/minosoft/util/DNSUtil.java
+++ b/src/main/java/de/bixilon/minosoft/util/DNSUtil.java
@@ -49,7 +49,6 @@ public final class DNSUtil {
return new ServerAddress(splitHostname[0], ProtocolDefinition.DEFAULT_PORT);
}
return new ServerAddress(splitHostname[0], Integer.parseInt(splitHostname[1]));
-
}
public static String correctHostName(String hostname) {
@@ -57,5 +56,4 @@ public final class DNSUtil {
hostname = hostname.replaceAll("\\s", "");
return hostname.toLowerCase();
}
-
}
diff --git a/src/main/java/de/bixilon/minosoft/util/HTTP.java b/src/main/java/de/bixilon/minosoft/util/HTTP.java
index bf5703290..c214f8201 100644
--- a/src/main/java/de/bixilon/minosoft/util/HTTP.java
+++ b/src/main/java/de/bixilon/minosoft/util/HTTP.java
@@ -32,7 +32,7 @@ public final class HTTP {
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).POST(HttpRequest.BodyPublishers.ofString(json.toString())).header("Content-Type", "application/json").build();
try {
return client.send(request, HttpResponse.BodyHandlers.ofString());
- } catch (IOException | InterruptedException e) {
+ } catch (Exception e) {
Log.printException(e, LogLevels.DEBUG);
}
return null;
diff --git a/src/main/java/de/bixilon/minosoft/util/MinosoftCommandLineArguments.java b/src/main/java/de/bixilon/minosoft/util/MinosoftCommandLineArguments.java
new file mode 100644
index 000000000..0f7bc1584
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/util/MinosoftCommandLineArguments.java
@@ -0,0 +1,69 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.util;
+
+import de.bixilon.minosoft.config.StaticConfiguration;
+import org.apache.commons.cli.*;
+
+import javax.annotation.Nullable;
+import java.util.HashMap;
+
+public class MinosoftCommandLineArguments {
+ private static final HashMap