mirror of https://github.com/LOOHP/Limbo.git
Merge pull request #68 from Sculas/master
fix: Fix getting stuck on "Loading terrain" since 1.20.4
This commit is contained in:
commit
3c72978f08
12
pom.xml
12
pom.xml
|
|
@ -24,7 +24,7 @@
|
||||||
<groupId>com.loohp</groupId>
|
<groupId>com.loohp</groupId>
|
||||||
<artifactId>Limbo</artifactId>
|
<artifactId>Limbo</artifactId>
|
||||||
<name>Limbo</name>
|
<name>Limbo</name>
|
||||||
<version>0.7.7-ALPHA</version>
|
<version>0.7.8-ALPHA</version>
|
||||||
|
|
||||||
<description>Standalone Limbo Minecraft Server.</description>
|
<description>Standalone Limbo Minecraft Server.</description>
|
||||||
<url>https://github.com/LOOHP/Limbo</url>
|
<url>https://github.com/LOOHP/Limbo</url>
|
||||||
|
|
@ -260,31 +260,31 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-text-serializer-gson</artifactId>
|
<artifactId>adventure-text-serializer-gson</artifactId>
|
||||||
<version>4.15.0-SNAPSHOT</version>
|
<version>4.17.0-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-text-serializer-legacy</artifactId>
|
<artifactId>adventure-text-serializer-legacy</artifactId>
|
||||||
<version>4.15.0-SNAPSHOT</version>
|
<version>4.17.0-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-text-serializer-plain</artifactId>
|
<artifactId>adventure-text-serializer-plain</artifactId>
|
||||||
<version>4.15.0-SNAPSHOT</version>
|
<version>4.17.0-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-api</artifactId>
|
<artifactId>adventure-api</artifactId>
|
||||||
<version>4.15.0-SNAPSHOT</version>
|
<version>4.17.0-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.kyori</groupId>
|
<groupId>net.kyori</groupId>
|
||||||
<artifactId>adventure-nbt</artifactId>
|
<artifactId>adventure-nbt</artifactId>
|
||||||
<version>4.15.0-SNAPSHOT</version>
|
<version>4.17.0-SNAPSHOT</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -160,8 +160,6 @@ public final class Limbo {
|
||||||
private final PermissionsManager permissionManager;
|
private final PermissionsManager permissionManager;
|
||||||
private final File pluginFolder;
|
private final File pluginFolder;
|
||||||
|
|
||||||
private final File internalDataFolder;
|
|
||||||
|
|
||||||
private final DimensionRegistry dimensionRegistry;
|
private final DimensionRegistry dimensionRegistry;
|
||||||
|
|
||||||
private final Tick tick;
|
private final Tick tick;
|
||||||
|
|
@ -209,24 +207,15 @@ public final class Limbo {
|
||||||
console.sendMessage("Starting Limbo server in bungeecord mode!");
|
console.sendMessage("Starting Limbo server in bungeecord mode!");
|
||||||
}
|
}
|
||||||
|
|
||||||
internalDataFolder = new File("internal_data");
|
|
||||||
if (!internalDataFolder.exists()) {
|
|
||||||
internalDataFolder.mkdirs();
|
|
||||||
}
|
|
||||||
|
|
||||||
String mappingName = "mapping.json";
|
String mappingName = "mapping.json";
|
||||||
File mappingFile = new File(internalDataFolder, mappingName);
|
InputStream mappingStream = getClass().getClassLoader().getResourceAsStream(mappingName);
|
||||||
if (!mappingFile.exists()) {
|
if (mappingStream == null) {
|
||||||
try (InputStream in = getClass().getClassLoader().getResourceAsStream(mappingName)) {
|
throw new RuntimeException("Failed to load " + mappingName + " from jar!");
|
||||||
Files.copy(in, mappingFile.toPath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
console.sendMessage("Loading packet id mappings from mapping.json ...");
|
console.sendMessage("Loading packet id mappings...");
|
||||||
|
|
||||||
InputStreamReader reader = new InputStreamReader(Files.newInputStream(mappingFile.toPath()), StandardCharsets.UTF_8);
|
InputStreamReader reader = new InputStreamReader(mappingStream, StandardCharsets.UTF_8);
|
||||||
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
||||||
reader.close();
|
reader.close();
|
||||||
|
|
||||||
|
|
@ -394,10 +383,6 @@ public final class Limbo {
|
||||||
return permissionManager;
|
return permissionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getInternalDataFolder() {
|
|
||||||
return internalDataFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EventsManager getEventsManager() {
|
public EventsManager getEventsManager() {
|
||||||
return eventsManager;
|
return eventsManager;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ import com.loohp.limbo.network.protocol.packets.PacketPlayInPickItem;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayInPluginMessaging;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayInPluginMessaging;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayInPosition;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayInPosition;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayInPositionAndLook;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayInPositionAndLook;
|
||||||
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameStateChange;
|
||||||
import com.loohp.limbo.network.protocol.packets.ServerboundResourcePackPacket;
|
import com.loohp.limbo.network.protocol.packets.ServerboundResourcePackPacket;
|
||||||
import com.loohp.limbo.network.protocol.packets.ServerboundResourcePackPacket.Action;
|
import com.loohp.limbo.network.protocol.packets.ServerboundResourcePackPacket.Action;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayInRotation;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayInRotation;
|
||||||
|
|
@ -73,7 +74,6 @@ import com.loohp.limbo.network.protocol.packets.PacketPlayInWindowClick;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutDisconnect;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutDisconnect;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameState;
|
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutKeepAlive;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutKeepAlive;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutLogin;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutLogin;
|
||||||
|
|
@ -613,6 +613,8 @@ public class ClientConnection extends Thread {
|
||||||
String str = (properties.isLogPlayerIPAddresses() ? inetAddress.getHostName() : "<ip address withheld>") + ":" + clientSocket.getPort() + "|" + player.getName() + "(" + player.getUniqueId() + ")";
|
String str = (properties.isLogPlayerIPAddresses() ? inetAddress.getHostName() : "<ip address withheld>") + ":" + clientSocket.getPort() + "|" + player.getName() + "(" + player.getUniqueId() + ")";
|
||||||
Limbo.getInstance().getConsole().sendMessage("[/" + str + "] <-> Player had connected to the Limbo server!");
|
Limbo.getInstance().getConsole().sendMessage("[/" + str + "] <-> Player had connected to the Limbo server!");
|
||||||
|
|
||||||
|
PacketPlayOutGameStateChange gameEvent = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.GameStateChangeEvent.LEVEL_CHUNKS_LOAD_START, 0);
|
||||||
|
sendPacket(gameEvent);
|
||||||
player.playerInteractManager.update();
|
player.playerInteractManager.update();
|
||||||
|
|
||||||
PacketPlayOutDeclareCommands declare = DeclareCommands.getDeclareCommandsPacket(player);
|
PacketPlayOutDeclareCommands declare = DeclareCommands.getDeclareCommandsPacket(player);
|
||||||
|
|
@ -634,7 +636,7 @@ public class ClientConnection extends Thread {
|
||||||
Limbo.getInstance().getEventsManager().callEvent(new PlayerJoinEvent(player));
|
Limbo.getInstance().getEventsManager().callEvent(new PlayerJoinEvent(player));
|
||||||
|
|
||||||
if (properties.isAllowFlight()) {
|
if (properties.isAllowFlight()) {
|
||||||
PacketPlayOutGameState state = new PacketPlayOutGameState(3, player.getGamemode().getId());
|
PacketPlayOutGameStateChange state = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.GameStateChangeEvent.CHANGE_GAME_MODE, player.getGamemode().getId());
|
||||||
sendPacket(state);
|
sendPacket(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of Limbo.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2022. LoohpJames <jamesloohp@gmail.com>
|
|
||||||
* Copyright (C) 2022. Contributors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.loohp.limbo.network.protocol.packets;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class PacketPlayOutGameState extends PacketOut {
|
|
||||||
|
|
||||||
private final int reason;
|
|
||||||
private final float value;
|
|
||||||
|
|
||||||
public PacketPlayOutGameState(int reason, float value) {
|
|
||||||
this.reason = reason;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getReason() {
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public byte[] serializePacket() throws IOException {
|
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
|
||||||
|
|
||||||
DataOutputStream output = new DataOutputStream(buffer);
|
|
||||||
output.writeByte(Packet.getPlayOut().get(getClass()));
|
|
||||||
output.writeByte(reason);
|
|
||||||
output.writeFloat(value);
|
|
||||||
|
|
||||||
return buffer.toByteArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
/*
|
||||||
|
* This file is part of Limbo.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024. LoohpJames <jamesloohp@gmail.com>
|
||||||
|
* Copyright (C) 2024. Contributors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.loohp.limbo.network.protocol.packets;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class PacketPlayOutGameStateChange extends PacketOut {
|
||||||
|
|
||||||
|
public enum GameStateChangeEvent {
|
||||||
|
NO_RESPAWN_BLOCK_AVAILABLE(0),
|
||||||
|
START_RAINING(1),
|
||||||
|
STOP_RAINING(2),
|
||||||
|
CHANGE_GAME_MODE(3),
|
||||||
|
WIN_GAME(4),
|
||||||
|
DEMO_EVENT(5),
|
||||||
|
ARROW_HIT_PLAYER(6),
|
||||||
|
RAIN_LEVEL_CHANGE(7),
|
||||||
|
THUNDER_LEVEL_CHANGE(8),
|
||||||
|
PUFFER_FISH_STING(9),
|
||||||
|
GUARDIAN_ELDER_EFFECT(10),
|
||||||
|
IMMEDIATE_RESPAWN(11),
|
||||||
|
LIMITED_CRAFTING(12),
|
||||||
|
LEVEL_CHUNKS_LOAD_START(13);
|
||||||
|
|
||||||
|
private final int id;
|
||||||
|
|
||||||
|
GameStateChangeEvent(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private GameStateChangeEvent event;
|
||||||
|
private float value;
|
||||||
|
|
||||||
|
public PacketPlayOutGameStateChange(GameStateChangeEvent event, float value) {
|
||||||
|
this.event = event;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameStateChangeEvent getEvent() {
|
||||||
|
return event;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] serializePacket() throws IOException {
|
||||||
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
DataOutputStream output = new DataOutputStream(buffer);
|
||||||
|
output.writeByte(Packet.getPlayOut().get(getClass()));
|
||||||
|
output.writeByte(event.getId());
|
||||||
|
output.writeFloat(value);
|
||||||
|
|
||||||
|
return buffer.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -45,7 +45,7 @@ import com.loohp.limbo.network.protocol.packets.ClientboundSetTitlesAnimationPac
|
||||||
import com.loohp.limbo.network.protocol.packets.ClientboundSystemChatPacket;
|
import com.loohp.limbo.network.protocol.packets.ClientboundSystemChatPacket;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketOut;
|
import com.loohp.limbo.network.protocol.packets.PacketOut;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutCloseWindow;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutCloseWindow;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameState;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameStateChange;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutNamedSoundEffect;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutNamedSoundEffect;
|
||||||
import com.loohp.limbo.network.protocol.packets.PacketPlayOutOpenWindow;
|
import com.loohp.limbo.network.protocol.packets.PacketPlayOutOpenWindow;
|
||||||
|
|
@ -151,7 +151,7 @@ public class Player extends LivingEntity implements CommandSender, InventoryHold
|
||||||
public void setGamemode(GameMode gamemode) {
|
public void setGamemode(GameMode gamemode) {
|
||||||
if (!this.gamemode.equals(gamemode)) {
|
if (!this.gamemode.equals(gamemode)) {
|
||||||
try {
|
try {
|
||||||
PacketPlayOutGameState state = new PacketPlayOutGameState(3, gamemode.getId());
|
PacketPlayOutGameStateChange state = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.GameStateChangeEvent.CHANGE_GAME_MODE, gamemode.getId());
|
||||||
clientConnection.sendPacket(state);
|
clientConnection.sendPacket(state);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
||||||
|
|
@ -48,20 +48,17 @@ public class Registry {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String name = "registries.json";
|
String name = "registries.json";
|
||||||
File file = new File(Limbo.getInstance().getInternalDataFolder(), name);
|
|
||||||
if (!file.exists()) {
|
|
||||||
try (InputStream in = Limbo.class.getClassLoader().getResourceAsStream(name)) {
|
|
||||||
Files.copy(in, file.toPath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<Key, Integer> blockEntityType = new HashMap<>();
|
Map<Key, Integer> blockEntityType = new HashMap<>();
|
||||||
Key defaultItemKey = null;
|
Key defaultItemKey = null;
|
||||||
BiMap<Key, Integer> itemIds = HashBiMap.create();
|
BiMap<Key, Integer> itemIds = HashBiMap.create();
|
||||||
Map<Key, Integer> menuIds = new HashMap<>();
|
Map<Key, Integer> menuIds = new HashMap<>();
|
||||||
try (InputStreamReader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) {
|
|
||||||
|
InputStream inputStream = Limbo.class.getClassLoader().getResourceAsStream(name);
|
||||||
|
if (inputStream == null) {
|
||||||
|
throw new RuntimeException("Failed to load " + name + " from jar!");
|
||||||
|
}
|
||||||
|
try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) {
|
||||||
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
||||||
|
|
||||||
JSONObject blockEntityJson = (JSONObject) ((JSONObject) json.get("minecraft:block_entity_type")).get("entries");
|
JSONObject blockEntityJson = (JSONObject) ((JSONObject) json.get("minecraft:block_entity_type")).get("entries");
|
||||||
|
|
|
||||||
|
|
@ -37,24 +37,16 @@ public class DimensionRegistry {
|
||||||
|
|
||||||
private CompoundTag defaultTag;
|
private CompoundTag defaultTag;
|
||||||
private CompoundTag codec;
|
private CompoundTag codec;
|
||||||
private File reg;
|
|
||||||
|
|
||||||
public DimensionRegistry() {
|
public DimensionRegistry() {
|
||||||
this.defaultTag = new CompoundTag();
|
this.defaultTag = new CompoundTag();
|
||||||
|
|
||||||
String name = "dimension_registry.json";
|
String name = "dimension_registry.json";
|
||||||
File file = new File(Limbo.getInstance().getInternalDataFolder(), name);
|
|
||||||
if (!file.exists()) {
|
|
||||||
try (InputStream in = Limbo.class.getClassLoader().getResourceAsStream(name)) {
|
|
||||||
Files.copy(in, file.toPath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.reg = file;
|
InputStream inputStream = Limbo.class.getClassLoader().getResourceAsStream(name);
|
||||||
|
if (inputStream == null) {
|
||||||
try (InputStreamReader reader = new InputStreamReader(Files.newInputStream(reg.toPath()), StandardCharsets.UTF_8)) {
|
throw new RuntimeException("Failed to load " + name + " from jar!");
|
||||||
|
}
|
||||||
|
try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) {
|
||||||
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
JSONObject json = (JSONObject) new JSONParser().parse(reader);
|
||||||
CompoundTag tag = CustomNBTUtils.getCompoundTagFromJson((JSONObject) json.get("value"));
|
CompoundTag tag = CustomNBTUtils.getCompoundTagFromJson((JSONObject) json.get("value"));
|
||||||
defaultTag = tag;
|
defaultTag = tag;
|
||||||
|
|
@ -64,10 +56,6 @@ public class DimensionRegistry {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getFile() {
|
|
||||||
return reg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetCodec() {
|
public void resetCodec() {
|
||||||
codec = defaultTag.clone();
|
codec = defaultTag.clone();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -41,17 +43,12 @@ public class GeneratedBlockDataMappings {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String block = "blocks.json";
|
String block = "blocks.json";
|
||||||
File file = new File(Limbo.getInstance().getInternalDataFolder(), block);
|
InputStream inputStream = Limbo.class.getClassLoader().getResourceAsStream(block);
|
||||||
if (!file.exists()) {
|
if (inputStream == null) {
|
||||||
try (InputStream in = Limbo.class.getClassLoader().getResourceAsStream(block)) {
|
throw new RuntimeException("Failed to load " + block + " from jar!");
|
||||||
Files.copy(in, file.toPath());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) {
|
||||||
|
globalPalette = (JSONObject) new JSONParser().parse(reader);
|
||||||
try {
|
|
||||||
globalPalette = (JSONObject) new JSONParser().parse(new FileReader(file));
|
|
||||||
} catch (IOException | ParseException e) {
|
} catch (IOException | ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
"ClientboundLevelChunkWithLightPacket": "0x25",
|
"ClientboundLevelChunkWithLightPacket": "0x25",
|
||||||
"PacketPlayOutUnloadChunk": "0x1F",
|
"PacketPlayOutUnloadChunk": "0x1F",
|
||||||
"PacketPlayOutKeepAlive": "0x15",
|
"PacketPlayOutKeepAlive": "0x15",
|
||||||
|
"PacketPlayOutGameStateChange": "0x20",
|
||||||
"PacketPlayOutPlayerInfo": "0x3C",
|
"PacketPlayOutPlayerInfo": "0x3C",
|
||||||
"PacketPlayOutUpdateViewPosition": "0x52",
|
"PacketPlayOutUpdateViewPosition": "0x52",
|
||||||
"PacketPlayOutDisconnect": "0x1B",
|
"PacketPlayOutDisconnect": "0x1B",
|
||||||
|
|
@ -55,7 +56,6 @@
|
||||||
"PacketPlayOutTabComplete": "0x10",
|
"PacketPlayOutTabComplete": "0x10",
|
||||||
"PacketPlayOutDeclareCommands": "0x11",
|
"PacketPlayOutDeclareCommands": "0x11",
|
||||||
"PacketPlayOutRespawn": "0x45",
|
"PacketPlayOutRespawn": "0x45",
|
||||||
"PacketPlayOutGameState": "0x20",
|
|
||||||
"PacketPlayOutEntityDestroy": "0x40",
|
"PacketPlayOutEntityDestroy": "0x40",
|
||||||
"PacketPlayOutEntityMetadata": "0x56",
|
"PacketPlayOutEntityMetadata": "0x56",
|
||||||
"PacketPlayOutSpawnEntity": "0x01",
|
"PacketPlayOutSpawnEntity": "0x01",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue