Skip to content

Commit

Permalink
Fix possible NullPointerException when sending network packet
Browse files Browse the repository at this point in the history
(cherry picked from commit e154133)
  • Loading branch information
edoren committed Jul 9, 2024
1 parent e8ea180 commit cc9c45e
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 21 deletions.
15 changes: 10 additions & 5 deletions src/main/java/me/edoren/skin_changer/SkinChanger.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import me.edoren.skin_changer.server.ServerController;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.server.ServerStartedEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
Expand All @@ -18,19 +19,23 @@ public SkinChanger() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onForgePreInit);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);

MinecraftForge.EVENT_BUS.addListener(this::onServerStarted);
MinecraftForge.EVENT_BUS.register(this);
}

private void onForgePreInit(final FMLCommonSetupEvent event) {
NetworkContext.GetInstance().initialize();
event.enqueueWork(() -> {
NetworkContext.GetInstance().initialize();
});
}

private void onClientSetup(final FMLClientSetupEvent event) {
// LogManager.getLogger().info("Got game settings {}", event.getMinecraftSupplier().get().gameSettings);
ClientController.GetInstance().initialize();
event.enqueueWork(() -> {
ClientController.GetInstance().initialize();
});
}

private void onServerStarted(ServerStartedEvent event) {
@SubscribeEvent
public void onServerStarted(ServerStartedEvent event) {
ServerController.GetInstance().initialize(event.getServer());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

import java.nio.ByteBuffer;
import java.util.Map;
Expand All @@ -33,7 +34,8 @@ public static ClientController GetInstance() {
}

public void initialize() {
MinecraftForge.EVENT_BUS.addListener(this::onClientTickEvent);
MinecraftForge.EVENT_BUS.unregister(this);
MinecraftForge.EVENT_BUS.register(this);
}

public ResourceLocation getLocationCape(PlayerModel model) {
Expand Down Expand Up @@ -80,7 +82,8 @@ public CustomSkinTexture getOrCreateTexture(ByteBuffer data, ISkin skin) {
return textures.get(data);
}

private void onClientTickEvent(TickEvent.ClientTickEvent event) {
@SubscribeEvent
public void onClientTickEvent(TickEvent.ClientTickEvent event) {
if (event.phase == TickEvent.Phase.START) {
ClientLevel world = Minecraft.getInstance().level;
if (world != null) {
Expand Down
17 changes: 7 additions & 10 deletions src/main/java/me/edoren/skin_changer/common/NetworkContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,6 @@ public class NetworkContext {
SimpleChannel simpleChannel;

private NetworkContext() {
}

public static NetworkContext GetInstance() {
if (singleInstance == null)
singleInstance = new NetworkContext();

return singleInstance;
}

public void initialize() {
simpleChannel = ChannelBuilder.named(simpleChannelRL)
.networkProtocolVersion(MESSAGE_PROTOCOL_VERSION)
.clientAcceptedVersions(ClientMessageHandler::isThisProtocolAcceptedByClient)
Expand All @@ -46,6 +36,13 @@ public void initialize() {
.add();
}

public static NetworkContext GetInstance() {
if (singleInstance == null)
singleInstance = new NetworkContext();

return singleInstance;
}

public SimpleChannel getSimpleChannel() {
return simpleChannel;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.network.PacketDistributor;
import org.apache.logging.log4j.LogManager;

Expand Down Expand Up @@ -63,8 +64,8 @@ public void initialize(File saveFolder) {
}
this.cacheFile = cacheFile.getPath();

MinecraftForge.EVENT_BUS.addListener(this::onPlayerLogin);
MinecraftForge.EVENT_BUS.addListener(this::onPlayerLogout);
MinecraftForge.EVENT_BUS.unregister(this);
MinecraftForge.EVENT_BUS.register(this);
}

public void registerCapeProvider(ISkinProvider provider) {
Expand Down Expand Up @@ -269,7 +270,8 @@ private void writeCacheFile(List<PlayerModel> playersCache) throws IOException {
fw.close();
}

private void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
@SubscribeEvent
public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
ServerPlayer player = (ServerPlayer) event.getEntity();
GameProfile profile = event.getEntity().getGameProfile();
LogManager.getLogger().info("Player {} just logged in with id {}", profile.getName(), profile.getId());
Expand All @@ -290,7 +292,8 @@ private void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) {
});
}

private void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) {
@SubscribeEvent
public void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) {
GameProfile profile = event.getEntity().getGameProfile();
PlayerModel model = new PlayerModel(profile);
if (loadedData.get(DataType.SKIN).containsKey(model) || loadedData.get(DataType.CAPE).containsKey(model)) {
Expand Down

0 comments on commit cc9c45e

Please sign in to comment.