diff options
Diffstat (limited to 'src/main/java/gregtech')
4 files changed, 73 insertions, 1 deletions
diff --git a/src/main/java/gregtech/api/net/GT_Packet_SendOregenPattern.java b/src/main/java/gregtech/api/net/GT_Packet_SendOregenPattern.java new file mode 100644 index 0000000000..d03fd1d7f0 --- /dev/null +++ b/src/main/java/gregtech/api/net/GT_Packet_SendOregenPattern.java @@ -0,0 +1,56 @@ +package gregtech.api.net; + +import net.minecraft.world.IBlockAccess; + +import com.google.common.io.ByteArrayDataInput; + +import gregtech.api.util.GT_Log; +import gregtech.common.GT_Worldgenerator; +import gregtech.common.GT_Worldgenerator.OregenPattern; +import io.netty.buffer.ByteBuf; + +public class GT_Packet_SendOregenPattern extends GT_Packet_New { + + protected OregenPattern pattern = OregenPattern.AXISSYMMETRICAL; + + public GT_Packet_SendOregenPattern() { + super(true); + } + + public GT_Packet_SendOregenPattern(OregenPattern pattern) { + super(false); + this.pattern = pattern; + } + + @Override + public void encode(ByteBuf aOut) { + aOut.writeInt(this.pattern.ordinal()); + } + + @Override + public GT_Packet_New decode(ByteArrayDataInput aData) { + int ordinal = aData.readInt(); + // make sure we get valid data: + if (ordinal >= 0 && ordinal < OregenPattern.values().length) { + return new GT_Packet_SendOregenPattern(OregenPattern.values()[ordinal]); + } + // invalid data, default to AXISSYMMETRICAL: + GT_Log.err.println( + String.format( + "Received invalid data! Received %d but value must be between 0 and %d! Default (0) will be used.", + ordinal, + OregenPattern.values().length - 1)); + return new GT_Packet_SendOregenPattern(); + } + + @Override + public byte getPacketID() { + return 19; + } + + @Override + public void process(IBlockAccess aWorld) { + GT_Worldgenerator.oregenPattern = this.pattern; + } + +} diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java index 4e6aab914d..abc0651f26 100644 --- a/src/main/java/gregtech/common/GT_Network.java +++ b/src/main/java/gregtech/common/GT_Network.java @@ -27,6 +27,7 @@ import gregtech.api.net.GT_Packet_MultiTileEntity; import gregtech.api.net.GT_Packet_Pollution; import gregtech.api.net.GT_Packet_RequestCoverData; import gregtech.api.net.GT_Packet_SendCoverData; +import gregtech.api.net.GT_Packet_SendOregenPattern; import gregtech.api.net.GT_Packet_SetConfigurationCircuit; import gregtech.api.net.GT_Packet_Sound; import gregtech.api.net.GT_Packet_TileEntity; @@ -73,7 +74,8 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet> new GT_Packet_GtTileEntityGuiRequest(), // 15 new GT_Packet_SendCoverData(), // 16 new GT_Packet_RequestCoverData(), // 17 - new GT_Packet_MultiTileEntity() // 18 + new GT_Packet_MultiTileEntity(), // 18 + new GT_Packet_SendOregenPattern() // 19 ); } diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index 43e75d005b..33fd64d5c0 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -1095,6 +1095,9 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG MinecraftForge.EVENT_BUS.register(new GlobalEnergyWorldSavedData("")); MinecraftForge.EVENT_BUS.register(new SpaceProjectWorldSavedData()); MinecraftForge.EVENT_BUS.register(new GT_Worldgenerator.OregenPatternSavedData("")); + FMLCommonHandler.instance() + .bus() + .register(new GT_Worldgenerator.OregenPatternSavedData("")); // IC2 Hazmat addFullHazmatToIC2Item("hazmatHelmet"); diff --git a/src/main/java/gregtech/common/GT_Worldgenerator.java b/src/main/java/gregtech/common/GT_Worldgenerator.java index 42550ef009..67f25ac34b 100644 --- a/src/main/java/gregtech/common/GT_Worldgenerator.java +++ b/src/main/java/gregtech/common/GT_Worldgenerator.java @@ -12,6 +12,7 @@ import java.util.Hashtable; import java.util.List; import java.util.Random; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; @@ -23,9 +24,12 @@ import net.minecraftforge.event.world.WorldEvent; import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; +import gregtech.api.net.GT_Packet_SendOregenPattern; import gregtech.api.objects.XSTR; import gregtech.api.util.GT_Log; import gregtech.api.world.GT_Worldgen; @@ -175,6 +179,13 @@ public class GT_Worldgenerator implements IWorldGenerator { } } + @SubscribeEvent + public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { + if (event.player instanceof EntityPlayerMP player) { + GT_Values.NW.sendToPlayer(new GT_Packet_SendOregenPattern(oregenPattern), player); + } + } + @Override public void readFromNBT(NBTTagCompound p_76184_1_) { if (p_76184_1_.hasKey(KEY)) { |