Skip to content

Commit 1ff6acf

Browse files
committed
Updated to v0.1.4.6
(Merged commits due to large file) Update logs: Updated to v0.1.4.4 - HUD inhanced; now hour settings, alpha and brightness settings are available. - Removed; Now 1 hour is always 60 minute. - Added Progress Messages on World loading. - Fixed periods of moon&planets. Updated to v0.1.4.5 - Updated for Stellar API v0.1.3.3 Updated to v0.1.4.6 - Added tooltips for overlays. - Added HUD element for Client Settings Configurations. - Fixed issue #29 (stars drawn on the moon.) - Added equator, ecliptic and horizon. Simple Fix before release
1 parent 43a0b22 commit 1ff6acf

File tree

152 files changed

+6429
-9951
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+6429
-9951
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ buildscript {
1717

1818
apply plugin: 'forge'
1919

20-
version = "0.1.4.3"
20+
version = "0.1.4.6"
2121
group= "stellarium" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
2222
archivesBaseName = "Stellar Sky"
2323

-269 KB
Binary file not shown.

libs/Stellar API-0.1.3.4-deobf.jar

311 KB
Binary file not shown.

src/main/java/stellarium/ClientProxy.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,19 @@
99
import net.minecraft.client.Minecraft;
1010
import net.minecraft.entity.Entity;
1111
import net.minecraft.world.World;
12-
import net.minecraftforge.common.MinecraftForge;
1312
import stellarapi.api.gui.overlay.OverlayRegistry;
1413
import stellarapi.api.lib.config.ConfigManager;
15-
import stellarium.api.StellarSkyAPI;
1614
import stellarium.client.ClientSettings;
17-
import stellarium.client.DefaultHourProvider;
1815
import stellarium.client.StellarClientFMLHook;
19-
import stellarium.client.StellarClientForgeHook;
2016
import stellarium.client.overlay.StellarSkyOverlays;
17+
import stellarium.client.overlay.clientcfg.OverlayClientSettingsType;
2118
import stellarium.client.overlay.clock.OverlayClockType;
2219
import stellarium.stellars.Optics;
2320
import stellarium.stellars.layer.CelestialManager;
2421

2522
public class ClientProxy extends CommonProxy implements IProxy {
2623

27-
private static final String clientConfigCategory = "clientconfig";
24+
public static final String clientConfigCategory = "clientconfig";
2825
private static final String clientConfigOpticsCategory = "clientconfig.optics";
2926

3027
private ClientSettings clientSettings = new ClientSettings();
@@ -46,15 +43,12 @@ public void preInit(FMLPreInitializationEvent event) {
4643
this.guiConfig = new ConfigManager(
4744
StellarSkyReferences.getConfiguration(event.getModConfigurationDirectory(),
4845
StellarSkyReferences.guiSettings));
49-
50-
MinecraftForge.EVENT_BUS.register(new StellarClientForgeHook());
51-
46+
5247
FMLCommonHandler.instance().bus().register(new StellarClientFMLHook());
5348

54-
StellarSkyAPI.registerHourProvider(new DefaultHourProvider(this.clientSettings));
55-
5649
OverlayRegistry.registerOverlaySet("stellarsky", new StellarSkyOverlays());
5750
OverlayRegistry.registerOverlay("clock", new OverlayClockType(), this.guiConfig);
51+
OverlayRegistry.registerOverlay("clientconfig", new OverlayClientSettingsType(), this.guiConfig);
5852
}
5953

6054
@Override
@@ -82,11 +76,6 @@ public World getDefWorld() {
8276
return Minecraft.getMinecraft().theWorld;
8377
}
8478

85-
@Override
86-
public World getDefWorld(boolean isRemote) {
87-
return isRemote? this.getDefWorld() : super.getDefWorld();
88-
}
89-
9079
public Entity getDefViewerEntity() {
9180
return Minecraft.getMinecraft().renderViewEntity;
9281
}

src/main/java/stellarium/CommonProxy.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
77
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
88
import net.minecraft.entity.Entity;
9-
import net.minecraft.server.MinecraftServer;
109
import net.minecraft.world.World;
1110
import stellarapi.api.lib.config.ConfigManager;
1211
import stellarium.client.ClientSettings;
@@ -39,12 +38,7 @@ public void setupCelestialConfigManager(ConfigManager manager) {
3938

4039
@Override
4140
public World getDefWorld() {
42-
return MinecraftServer.getServer().getEntityWorld();
43-
}
44-
45-
@Override
46-
public World getDefWorld(boolean isRemote) {
47-
return MinecraftServer.getServer().getEntityWorld();
41+
return null;
4842
}
4943

5044
@Override

src/main/java/stellarium/IProxy.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ public interface IProxy {
1919

2020
public void postInit(FMLPostInitializationEvent event);
2121

22-
public World getDefWorld();
23-
public World getDefWorld(boolean isRemote);
24-
22+
public World getDefWorld();
23+
2524
public Entity getDefViewerEntity();
2625

2726
public ClientSettings getClientSettings();

src/main/java/stellarium/StellarAPIEventHook.java

Lines changed: 128 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,26 @@
22

33
import cpw.mods.fml.common.eventhandler.EventPriority;
44
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
5+
import net.minecraft.client.resources.I18n;
6+
import net.minecraft.util.IProgressUpdate;
7+
import net.minecraft.world.World;
8+
import net.minecraft.world.WorldProvider;
9+
import net.minecraftforge.client.IRenderHandler;
510
import stellarapi.api.ICelestialCoordinate;
611
import stellarapi.api.ISkyEffect;
712
import stellarapi.api.StellarAPIReference;
813
import stellarapi.api.celestials.IEffectorType;
914
import stellarapi.api.event.ConstructCelestialsEvent;
1015
import stellarapi.api.event.ResetCoordinateEvent;
1116
import stellarapi.api.event.ResetSkyEffectEvent;
17+
import stellarapi.api.event.world.ClientWorldEvent;
18+
import stellarapi.api.event.world.ServerWorldEvent;
19+
import stellarapi.api.helper.WorldProviderReplaceHelper;
20+
import stellarium.api.StellarSkyAPI;
21+
import stellarium.render.SkyRenderCelestial;
22+
import stellarium.stellars.DefaultCelestialHelper;
23+
import stellarium.stellars.StellarManager;
24+
import stellarium.stellars.layer.CelestialManager;
1225
import stellarium.world.StellarDimensionManager;
1326

1427
public class StellarAPIEventHook {
@@ -17,6 +30,7 @@ public class StellarAPIEventHook {
1730
public void onConstruct(ConstructCelestialsEvent event) {
1831
StellarDimensionManager dimManager = StellarDimensionManager.get(event.getWorld());
1932
if(dimManager != null) {
33+
StellarSky.logger.info("Startng Construction of Celestial Images...");
2034
StellarAPIReference.resetCoordinate(event.getWorld());
2135
StellarAPIReference.resetSkyEffect(event.getWorld());
2236

@@ -26,22 +40,133 @@ public void onConstruct(ConstructCelestialsEvent event) {
2640
event.getCollections().addAll(dimManager.constructCelestials(coordinate, sky));
2741
event.getEffectors(IEffectorType.Light).addAll(dimManager.getSuns());
2842
event.getEffectors(IEffectorType.Tide).addAll(dimManager.getMoons());
29-
} else event.setCanceled(true);
43+
StellarSky.logger.info("Finished Construction of Celestial Images.");
44+
} else if(!StellarManager.hasSetup(event.getWorld())) {
45+
StellarSky.logger.info("Delayed Celestial Setup since StellarManager had not been initialized.");
46+
event.setCanceled(true);
47+
}
3048
}
3149

3250
@SubscribeEvent(priority = EventPriority.HIGH)
3351
public void onReset(ResetCoordinateEvent event) {
3452
StellarDimensionManager dimManager = StellarDimensionManager.get(event.getWorld());
3553
if(dimManager != null)
3654
event.setCoordinate(dimManager.getCoordinate());
37-
else event.setCanceled(true);
55+
else if(!StellarManager.hasSetup(event.getWorld())) {
56+
StellarSky.logger.info("Delayed Dimension setup since StellarManager had not been initialized.");
57+
event.setCanceled(true);
58+
}
3859
}
3960

4061
@SubscribeEvent(priority = EventPriority.HIGH)
4162
public void onReset(ResetSkyEffectEvent event) {
4263
StellarDimensionManager dimManager = StellarDimensionManager.get(event.getWorld());
4364
if(dimManager != null)
4465
event.setSkyEffect(dimManager.getSkySet());
45-
else event.setCanceled(true);
66+
else if(!StellarManager.hasSetup(event.getWorld())) {
67+
StellarSky.logger.info("Delayed Sky Setup since StellarManager had not been initialized.");
68+
event.setCanceled(true);
69+
}
70+
}
71+
72+
73+
@SubscribeEvent
74+
public void onClientWorldLoad(ClientWorldEvent.Load event) {
75+
IProgressUpdate update = event.getProgressUpdate("StellarSky");
76+
update.displayProgressMessage(I18n.format("progress.text.injection.main"));
77+
update.resetProgresAndWorkingMessage(I18n.format("progress.text.injection.manager"));
78+
StellarManager manager = StellarManager.loadOrCreateClientManager(event.getWorld());
79+
80+
if(!manager.getSettings().serverEnabled)
81+
manager.setup(StellarSky.proxy.getClientCelestialManager().copy());
82+
83+
String dimName = event.getWorld().provider.getDimensionName();
84+
if(!StellarSky.proxy.commonSettings.serverEnabled)
85+
handleDimOnServerDisabled(event.getWorld(), manager,update);
86+
87+
if(mark) {
88+
handleNotHaveModOnServer(event.getWorld(), manager, update);
89+
mark = false;
90+
} else if(StellarSky.proxy.commonSettings.serverEnabled) {
91+
update.resetProgresAndWorkingMessage(I18n.format("progress.text.injection.query", dimName));
92+
update.setLoadingProgress(0);
93+
StellarSky.instance.getNetworkManager().queryInformation(event.getWorld());
94+
}
95+
}
96+
97+
@SubscribeEvent(receiveCanceled = true)
98+
public void onClientWorldLoaded(ClientWorldEvent.Loaded event) {
99+
if(StellarManager.getClientManager().hasSetup())
100+
event.getProgressUpdate("StellarSky").resetProgresAndWorkingMessage("");
101+
else {
102+
event.getProgressUpdate("StellarSky").setLoadingProgress(99);
103+
event.setCanceled(true);
104+
}
105+
}
106+
107+
@SubscribeEvent
108+
public void onServerWorldInitiate(ServerWorldEvent.Initial event) {
109+
StellarManager manager = StellarManager.loadOrCreateServerManager(event.getServer());
110+
manager.setup(new CelestialManager(false));
111+
}
112+
113+
@SubscribeEvent
114+
public void onServerWorldLoad(ServerWorldEvent.Load event) {
115+
StellarManager manager = StellarManager.getServerManager(event.getServer());
116+
String dimName = event.getWorld().provider.getDimensionName();
117+
if(StellarSky.proxy.dimensionSettings.hasSubConfig(dimName)) {
118+
StellarDimensionManager dimManager = StellarDimensionManager.loadOrCreate(event.getWorld(), manager, dimName);
119+
setupDimension(event.getWorld(), manager, dimManager);
120+
}
121+
}
122+
123+
124+
public static void setupDimension(World world, StellarManager manager, StellarDimensionManager dimManager) {
125+
dimManager.setup();
126+
127+
StellarAPIReference.constructCelestials(world);
128+
StellarAPIReference.resetSkyEffect(world);
129+
130+
ICelestialCoordinate coordinate = StellarAPIReference.getCoordinate(world);
131+
ISkyEffect skyEffect = StellarAPIReference.getSkyEffect(world);
132+
133+
if(manager.getSettings().serverEnabled && dimManager.getSettings().doesPatchProvider()) {
134+
DefaultCelestialHelper helper = new DefaultCelestialHelper((float)dimManager.getSettings().getSunlightMultiplier(), 1.0f,
135+
dimManager.getSuns().get(0), dimManager.getMoons().get(0), coordinate, skyEffect);
136+
WorldProvider newProvider = StellarSkyAPI.getReplacedWorldProvider(world, world.provider, helper);
137+
WorldProviderReplaceHelper.patchWorldProviderWith(world, newProvider);
138+
}
139+
140+
if(world.isRemote)
141+
{
142+
IRenderHandler renderer = StellarSkyAPI.getRendererFor(dimManager.getSettings().getSkyRendererType(), new SkyRenderCelestial(manager));
143+
world.provider.setSkyRenderer(renderer);
144+
}
145+
}
146+
147+
148+
private static boolean mark = false;
149+
150+
public static void markNotHave() {
151+
mark = true;
152+
}
153+
154+
private static void handleNotHaveModOnServer(World world, StellarManager manager, IProgressUpdate update) {
155+
manager.handleServerWithoutMod();
156+
157+
if(manager.getCelestialManager() == null) {
158+
manager.setup(StellarSky.proxy.getClientCelestialManager().copy());
159+
handleDimOnServerDisabled(world, manager, update);
160+
}
161+
}
162+
163+
private static void handleDimOnServerDisabled(World world, StellarManager manager, IProgressUpdate update) {
164+
String dimName = world.provider.getDimensionName();
165+
if(StellarSky.proxy.dimensionSettings.hasSubConfig(dimName)) {
166+
update.resetProgresAndWorkingMessage(I18n.format("progress.text.injection.dimmanager", dimName));
167+
StellarDimensionManager dimManager = StellarDimensionManager.loadOrCreate(world, manager, dimName);
168+
setupDimension(world, manager, dimManager);
169+
update.resetProgresAndWorkingMessage("");
170+
}
46171
}
47172
}

src/main/java/stellarium/StellarFMLEventHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ public void handleNotHave(FMLNetworkEvent.CustomPacketRegistrationEvent event) {
3434
}
3535

3636
private void handleNotHave() {
37-
StellarForgeEventHook.markNotHave();
37+
StellarAPIEventHook.markNotHave();
3838
}
3939
}
Lines changed: 1 addition & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,6 @@
11
package stellarium;
22

3-
import java.lang.reflect.Field;
4-
import java.lang.reflect.Modifier;
5-
6-
import com.google.common.base.Throwables;
7-
8-
import cpw.mods.fml.common.ObfuscationReflectionHelper;
9-
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
10-
import cpw.mods.fml.relauncher.ReflectionHelper;
11-
import net.minecraft.world.World;
12-
import net.minecraft.world.WorldProvider;
13-
import net.minecraftforge.client.IRenderHandler;
14-
import net.minecraftforge.event.world.WorldEvent;
15-
import stellarapi.api.ICelestialCoordinate;
16-
import stellarapi.api.ISkyEffect;
17-
import stellarapi.api.StellarAPIReference;
18-
import stellarapi.api.helper.WorldProviderReplaceHelper;
19-
import stellarium.api.StellarSkyAPI;
20-
import stellarium.render.SkyRenderCelestial;
21-
import stellarium.stellars.DefaultCelestialHelper;
22-
import stellarium.stellars.StellarManager;
23-
import stellarium.stellars.layer.CelestialManager;
24-
import stellarium.world.StellarDimensionManager;
25-
263
public class StellarForgeEventHook {
27-
28-
private static Field providerField = ReflectionHelper.findField(World.class,
29-
ObfuscationReflectionHelper.remapFieldNames(World.class.getName(), "provider", "field_73011_w"));
30-
31-
static {
32-
try {
33-
Field modifiersField = Field.class.getDeclaredField("modifiers");
34-
modifiersField.setAccessible(true);
35-
modifiersField.setInt(providerField, providerField.getModifiers() & ~ Modifier.FINAL);
36-
} catch(Exception exc) {
37-
Throwables.propagate(exc);
38-
}
39-
}
40-
41-
@SubscribeEvent
42-
public void onWorldLoad(WorldEvent.Load e)
43-
{
44-
StellarManager manager;
45-
if(!StellarManager.hasManager(e.world, e.world.isRemote)) {
46-
manager = StellarManager.loadOrCreateManager(e.world);
47-
} else manager = StellarManager.getManager(e.world.isRemote);
48-
49-
if(manager.getCelestialManager() == null && (!e.world.isRemote || !manager.getSettings().serverEnabled))
50-
setupManager(e.world, manager);
51-
52-
String dimName = e.world.provider.getDimensionName();
53-
if(!e.world.isRemote || !StellarSky.proxy.commonSettings.serverEnabled)
54-
if(StellarSky.proxy.dimensionSettings.hasSubConfig(dimName)) {
55-
StellarDimensionManager dimManager = StellarDimensionManager.loadOrCreate(e.world, manager, dimName);
56-
setupDimension(e.world, manager, dimManager);
57-
}
58-
59-
if(e.world.isRemote) {
60-
if(mark) {
61-
handleNotHaveModOnServer(e.world);
62-
mark = false;
63-
} else if(StellarSky.proxy.commonSettings.serverEnabled)
64-
StellarSky.instance.getNetworkManager().queryInformation(e.world);
65-
}
66-
}
67-
68-
public static void setupManager(World world, StellarManager manager) {
69-
if(world.isRemote)
70-
manager.setup(StellarSky.proxy.getClientCelestialManager().copy());
71-
else manager.setup(new CelestialManager(false));
72-
}
73-
74-
public static void setupDimension(World world, StellarManager manager, StellarDimensionManager dimManager) {
75-
dimManager.setup();
76-
77-
StellarAPIReference.resetSkyEffect(world);
78-
StellarAPIReference.constructCelestials(world);
79-
80-
ICelestialCoordinate coordinate = StellarAPIReference.getCoordinate(world);
81-
ISkyEffect skyEffect = StellarAPIReference.getSkyEffect(world);
82-
83-
if(manager.getSettings().serverEnabled && dimManager.getSettings().doesPatchProvider()) {
84-
DefaultCelestialHelper helper = new DefaultCelestialHelper((float)dimManager.getSettings().getSunlightMultiplier(), 1.0f,
85-
dimManager.getSuns().get(0), dimManager.getMoons().get(0), coordinate, skyEffect);
86-
WorldProvider newProvider = StellarSkyAPI.getReplacedWorldProvider(world, world.provider, helper);
87-
new WorldProviderReplaceHelper().patchWorldProviderWith(world, newProvider);
88-
}
89-
90-
if(world.isRemote)
91-
{
92-
IRenderHandler renderer = StellarSkyAPI.getRendererFor(dimManager.getSettings().getSkyRendererType(), new SkyRenderCelestial(manager));
93-
world.provider.setSkyRenderer(renderer);
94-
}
95-
}
96-
97-
private static boolean mark = false;
98-
99-
private static void handleNotHaveModOnServer(World world) {
100-
StellarManager manager = StellarManager.loadOrCreateManager(world);
101-
manager.handleServerWithoutMod();
102-
103-
if(manager.getCelestialManager() == null)
104-
{
105-
StellarForgeEventHook.setupManager(world, manager);
106-
107-
String dimName = world.provider.getDimensionName();
108-
if(StellarSky.proxy.dimensionSettings.hasSubConfig(dimName)) {
109-
StellarDimensionManager dimManager = StellarDimensionManager.loadOrCreate(world, manager, dimName);
110-
StellarForgeEventHook.setupDimension(world, manager, dimManager);
111-
}
112-
}
113-
}
114-
115-
public static void markNotHave() {
116-
mark = true;
117-
}
4+
1185

1196
}

0 commit comments

Comments
 (0)