/
ExampleSync.java
106 lines (86 loc) · 3.15 KB
/
ExampleSync.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package slimeknights.mantle.config;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.File;
import slimeknights.mantle.network.NetworkWrapper;
class ExampleSync {
static NetworkWrapper networkWrapper;
static ExampleSync INSTANCE;
static void setup() {
networkWrapper = new NetworkWrapper("mantle:example");
networkWrapper.registerPacketClient(ExampleSyncPacketImpl.class);
INSTANCE = new ExampleSync();
}
@SideOnly(Side.CLIENT)
private static boolean needsRestart;
@SubscribeEvent
@SideOnly(Side.SERVER)
public void playerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
if(event.player instanceof EntityPlayerMP && FMLCommonHandler.instance().getSide().isServer()) {
ExampleSyncPacketImpl packet = new ExampleSyncPacketImpl();
networkWrapper.network.sendTo(packet, (EntityPlayerMP) event.player);
}
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void playerJoinedWorld(TickEvent.ClientTickEvent event) {
EntityPlayerSP player = Minecraft.getMinecraft().player;
if(needsRestart) {
player.sendMessage(new TextComponentString("Configs synced with server. Configs require a restart"));
}
else {
player.sendMessage(new TextComponentString("Configs synced with server."));
}
MinecraftForge.EVENT_BUS.unregister(this);
}
static class ExampleConfig extends AbstractConfig {
static ExampleConfig INSTANCE = new ExampleConfig();
ExampleConfigFile exampleConfigFile;
// call from preinit or something
public void onPreInit(FMLPreInitializationEvent event) {
exampleConfigFile = this.load(new ExampleConfigFile(event.getModConfigurationDirectory()), ExampleConfigFile.class);
// register this serverside to sync
if(event.getSide().isServer()) {
MinecraftForge.EVENT_BUS.register(INSTANCE);
}
}
}
static class ExampleConfigFile extends AbstractConfigFile {
public ExampleConfigFile(File configFolder) {
super(configFolder, "exampleconfigfile");
}
@Override
public void insertDefaults() {
// no default values that need to initialized dynamically
}
@Override
protected int getConfigVersion() {
return 1;
}
}
static class ExampleSyncPacketImpl extends AbstractConfigSyncPacket {
@Override
protected AbstractConfig getConfig() {
return ExampleConfig.INSTANCE;
}
@Override
protected boolean sync() {
if(super.sync()) {
// clientside register only
MinecraftForge.EVENT_BUS.register(INSTANCE);
return true;
}
return false;
}
}
}