Skip to content

Commit eb839a9

Browse files
committed
v0.14.15.4 - Events, Radar Packet Fix, Overlay changes
- Added 7 new events - Fixed a critical bug w/ S2CRadarsPacket - Updated overlays to take a new canRender parameter Took 1 hour 3 minutes
1 parent 7efb131 commit eb839a9

19 files changed

Lines changed: 330 additions & 27 deletions

build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ neoForge {
3636
minecraftVersion = project.parchment_minecraft_version
3737
}
3838

39+
validateAccessTransformers = true
40+
3941
// This line is optional. Access Transformers are automatically detected
40-
// accessTransformers.add('src/main/resources/META-INF/accesstransformer.cfg')
42+
accessTransformers.from 'src/main/resources/META-INF/accesstransformer.cfg'
43+
4144

4245
// Default run configurations.
4346
// These can be tweaked, removed, or duplicated as needed.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ parchment_mappings_version=2024.11.17
1717
mod_id=pmweatherapi
1818
mod_name=PMWeatherAPI
1919
mod_license=GNU GPL 3.0
20-
mod_version=0.14.15.3
20+
mod_version=0.14.15.4
2121
mod_group_id=net.nullved
2222
mod_authors=NullVed
2323
mod_description=An API for interfacing with ProtoManly's Weather Mod

src/main/java/net/nullved/pmweatherapi/PMWeatherAPI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public PMWeatherAPI(IEventBus modEventBus, ModContainer modContainer) {
2525
modEventBus.addListener(this::commonSetup);
2626
modEventBus.addListener(this::registerPayloads);
2727

28-
//modEventBus.addListener(this::clientSetup);
28+
// modEventBus.addListener(this::clientSetup);
2929

3030
LOGGER.info("Initialized PMWAPI");
3131
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package net.nullved.pmweatherapi.client.event;
2+
3+
import dev.protomanly.pmweather.weather.Lightning;
4+
import net.neoforged.api.distmarker.Dist;
5+
import net.neoforged.api.distmarker.OnlyIn;
6+
import net.neoforged.bus.api.Event;
7+
8+
/**
9+
* This event only exists on the client!
10+
* Called when a lightning strike happens
11+
* @since 0.14.15.3
12+
*/
13+
@OnlyIn(Dist.CLIENT)
14+
public class LightningEvent extends Event {
15+
private final Lightning lightning;
16+
17+
public LightningEvent(Lightning lightning) {
18+
this.lightning = lightning;
19+
}
20+
21+
public Lightning getLightning() {
22+
return lightning;
23+
}
24+
}

src/main/java/net/nullved/pmweatherapi/client/radar/RadarClientStorage.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.server.level.ServerLevel;
1111
import net.minecraft.world.level.Level;
1212
import net.nullved.pmweatherapi.client.data.PMWClientStorages;
13-
import net.nullved.pmweatherapi.data.PMWStorages;
1413
import net.nullved.pmweatherapi.network.S2CRadarsPacket;
1514
import net.nullved.pmweatherapi.radar.RadarStorage;
1615

src/main/java/net/nullved/pmweatherapi/client/render/IRadarOverlay.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,18 @@
99

1010
/**
1111
* An interface defining a radar overlay
12-
* To implement this, you must override {@link #render(RenderData, BufferBuilder)} and {@link #getModID()}
12+
* To implement this, you must override {@link #render(boolean, RenderData, BufferBuilder)} and {@link #getModID()}
1313
* @since 0.14.15.2
1414
*/
1515
public interface IRadarOverlay {
1616
/**
1717
* Renders objects on top of the radar
18+
* @param canRender {@code true} if either the server doesn't require WSR-88D or a WSR-88D is complete within 4 chunks of the radar
1819
* @param renderData The data used to call {@link BlockEntityRenderer#render(BlockEntity, float, PoseStack, MultiBufferSource, int, int)}
1920
* @param bufferBuilder The {@link BufferBuilder} that gets drawn to the radar
2021
* @since 0.14.15.2
2122
*/
22-
void render(RenderData renderData, BufferBuilder bufferBuilder);
23+
void render(boolean canRender, RenderData renderData, BufferBuilder bufferBuilder);
2324

2425
/**
2526
* @return The Mod ID of the mod that registered this overlay

src/main/java/net/nullved/pmweatherapi/client/render/RadarOverlays.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.mojang.blaze3d.vertex.BufferBuilder;
44
import com.mojang.blaze3d.vertex.PoseStack;
55
import net.minecraft.client.renderer.MultiBufferSource;
6+
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
67
import net.minecraft.world.level.block.entity.BlockEntity;
78
import net.nullved.pmweatherapi.PMWeatherAPI;
89

@@ -28,19 +29,13 @@ public static Set<Supplier<? extends IRadarOverlay>> getOverlays() {
2829

2930
/**
3031
* Renders all overlays
31-
* @param blockEntity The {@link BlockEntity} associated with the render call
32-
* @param partialTicks The time, in partial ticks, since last full tick
33-
* @param poseStack The {@link PoseStack}
34-
* @param multiBufferSource The {@link MultiBufferSource}
35-
* @param combinedLightIn The current light value on the block entity
36-
* @param combinedOverlayIn The current overlay of the block entity
32+
* @param canRender {@code true} if either the server doesn't require WSR-88D or a WSR-88D is complete within 4 chunks of the radar
33+
* @param renderData The data used to call {@link BlockEntityRenderer#render(BlockEntity, float, PoseStack, MultiBufferSource, int, int)}
3734
* @param bufferBuilder The {@link BufferBuilder} to render overlays to
3835
* @since 0.14.15.0
3936
*/
40-
public static void renderOverlays(BlockEntity blockEntity, float partialTicks, PoseStack poseStack, MultiBufferSource multiBufferSource, int combinedLightIn, int combinedOverlayIn, BufferBuilder bufferBuilder) {
41-
RenderData renderData = new RenderData(blockEntity, partialTicks, poseStack, multiBufferSource, combinedLightIn, combinedOverlayIn);
42-
43-
OVERLAYS.forEach(overlay -> overlay.get().render(renderData, bufferBuilder));
37+
public static void renderOverlays(RenderData renderData, BufferBuilder bufferBuilder, boolean canRender) {
38+
OVERLAYS.forEach(overlay -> overlay.get().render(canRender, renderData, bufferBuilder));
4439
}
4540

4641
/**
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package net.nullved.pmweatherapi.event;
2+
3+
import dev.protomanly.pmweather.weather.Storm;
4+
import net.neoforged.bus.api.Event;
5+
6+
/**
7+
* Base Storm Event
8+
* @see New
9+
* @see Dying
10+
* @see Dead
11+
* @see StageChanged
12+
* @since 0.14.15.4
13+
*/
14+
public abstract class StormEvent extends Event {
15+
private final Storm storm;
16+
17+
public StormEvent(Storm storm) {
18+
this.storm = storm;
19+
}
20+
21+
public Storm getStorm() {
22+
return storm;
23+
}
24+
25+
public long getStormID() {
26+
return storm.ID;
27+
}
28+
29+
/**
30+
* Called when a new {@link Storm} is created
31+
* @since 0.14.15.4
32+
*/
33+
public static class New extends StormEvent {
34+
public New(Storm storm) {
35+
super(storm);
36+
}
37+
}
38+
39+
/**
40+
* Called every tick a {@link Storm} is dying
41+
* @since 0.14.15.4
42+
*/
43+
public static class Dying extends StormEvent {
44+
public Dying(Storm storm) {
45+
super(storm);
46+
}
47+
}
48+
49+
/**
50+
* Called when a {@link Storm} is dead and removed
51+
* @since 0.14.15.4
52+
*/
53+
public static class Dead extends StormEvent {
54+
public Dead(Storm storm) {
55+
super(storm);
56+
}
57+
}
58+
59+
/**
60+
* Called when a {@link Storm}'s stage changes
61+
* @since 0.14.15.4
62+
*/
63+
public static class StageChanged extends StormEvent {
64+
int newStage;
65+
66+
public StageChanged(Storm storm, int newStage) {
67+
super(storm);
68+
this.newStage = newStage;
69+
}
70+
71+
public int getNewStage() {
72+
return newStage;
73+
}
74+
}
75+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package net.nullved.pmweatherapi.event;
2+
3+
import dev.protomanly.pmweather.weather.Vorticy;
4+
import net.neoforged.bus.api.Event;
5+
6+
/**
7+
* Base Vorticy Event
8+
* @see New
9+
* @see Dead
10+
* @since 0.14.15.4
11+
*/
12+
public abstract class VorticyEvent extends Event {
13+
private final Vorticy vorticy;
14+
15+
public VorticyEvent(Vorticy vorticy) {
16+
this.vorticy = vorticy;
17+
}
18+
19+
public Vorticy getVorticy() {
20+
return vorticy;
21+
}
22+
23+
/**
24+
* Called when a new {@link Vorticy} is created
25+
* @since 0.14.15.4
26+
*/
27+
public static class New extends VorticyEvent {
28+
public New(Vorticy vorticy) {
29+
super(vorticy);
30+
}
31+
}
32+
33+
/**
34+
* Called when a {@link Vorticy} dies
35+
* @since 0.14.15.4
36+
*/
37+
public static class Dead extends VorticyEvent {
38+
public Dead(Vorticy vorticy) {
39+
super(vorticy);
40+
}
41+
}
42+
}

src/main/java/net/nullved/pmweatherapi/example/ExampleOverlay.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import net.minecraft.core.BlockPos;
77
import net.minecraft.world.level.block.entity.BlockEntity;
88
import net.minecraft.world.phys.Vec3;
9+
import net.neoforged.api.distmarker.Dist;
10+
import net.neoforged.api.distmarker.OnlyIn;
911
import net.nullved.pmweatherapi.PMWeatherAPI;
1012
import net.nullved.pmweatherapi.client.render.IRadarOverlay;
1113
import net.nullved.pmweatherapi.client.render.RenderData;
@@ -14,13 +16,16 @@
1416
import org.joml.Vector3f;
1517

1618
/**
17-
* This is an example overlay that draws a dot at every nearby radar's position
19+
* This is an example overlay that draws a dot at every lightning strike and fades out
20+
* @see IRadarOverlay
1821
*/
22+
@OnlyIn(Dist.CLIENT)
1923
public class ExampleOverlay implements IRadarOverlay {
2024
public static final ExampleOverlay INSTANCE = new ExampleOverlay();
2125

2226
@Override
23-
public void render(RenderData renderData, BufferBuilder bufferBuilder) {
27+
public void render(boolean canRender, RenderData renderData, BufferBuilder bufferBuilder) {
28+
if (!canRender) return;
2429
BlockEntity blockEntity = renderData.blockEntity();
2530
BlockPos pos = blockEntity.getBlockPos();
2631
RadarBlock.Mode mode = blockEntity.getBlockState().getValue(RadarBlock.RADAR_MODE);
@@ -45,7 +50,7 @@ private static void renderMarker(BufferBuilder bufferBuilder, Vec3 relative) {
4550
Vector3f bottomLeft = (new Vector3f(-1.0F, 0.0F, 1.0F)).mul(0.015F).add(radarPos.x, 0.005F, radarPos.z);
4651
Vector3f bottomRight = (new Vector3f(1.0F, 0.0F, 1.0F)).mul(0.015F).add(radarPos.x, 0.005F, radarPos.z);
4752
Vector3f topRight = (new Vector3f(1.0F, 0.0F, -1.0F)).mul(0.015F).add(radarPos.x, 0.005F, radarPos.z);
48-
int color = 0xFF777777;
53+
int color = 0xFFAAAAAA;
4954
bufferBuilder.addVertex(topLeft).setColor(color).addVertex(bottomLeft).setColor(color).addVertex(bottomRight).setColor(color).addVertex(topRight).setColor(color);
5055
}
5156
}

0 commit comments

Comments
 (0)