Skip to content

Commit 6ba1dfa

Browse files
committed
PlutoComponent cleanup
1 parent 27f4882 commit 6ba1dfa

4 files changed

Lines changed: 22 additions & 13 deletions

File tree

UPDATE_NOTES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 22.3.0.0-alpha.1
2+
* `[PlutoComponent]` Removing components using a token should have the same semantics as removing individual components
3+
* `[PlutoComponent]` Made the addition and removal of components hookable before mount events are fired
4+
15
## 22.3.0.0-alpha.0
26
* `[SDK]` **Combined `PlutoFramebuffer`, `PlutoMesher`, `PlutoShader` and `PlutoTexture`
37
into `PlutoRender`**

buildSrc/src/main/kotlin/org/plutoengine/Versions.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.plutoengine
22

3-
import org.gradle.internal.os.OperatingSystem
43
import org.gradle.api.JavaVersion
54

65
object Versions {
@@ -28,7 +27,7 @@ object Versions {
2827

2928
const val isPrerelease = true
3029
const val prereleaseName = "alpha"
31-
const val prerealeaseUpdate = 0
30+
const val prerealeaseUpdate = 1
3231

3332
val versionFull =
3433
if (isPrerelease)

engine-core/plutocomponent/src/main/java/org/plutoengine/component/ComponentManager.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
2929
import org.apache.commons.collections4.multimap.HashSetValuedHashMap;
3030
import org.apache.commons.lang3.ClassUtils;
31+
import org.jetbrains.annotations.MustBeInvokedByOverriders;
3132
import org.jetbrains.annotations.NotNull;
3233

3334
import java.util.*;
@@ -74,6 +75,14 @@ public <T extends R> T addComponent(@NotNull ComponentToken<T> token)
7475
this.components.put(token, component);
7576
this.tokens.put(component, token);
7677

78+
this.onComponentAdded(component);
79+
80+
return component;
81+
}
82+
83+
@MustBeInvokedByOverriders
84+
protected void onComponentAdded(R component)
85+
{
7786
try
7887
{
7988
component.initialize(this);
@@ -82,8 +91,6 @@ public <T extends R> T addComponent(@NotNull ComponentToken<T> token)
8291
{
8392
throw new RuntimeException("An exception has occured while mounting the component", e);
8493
}
85-
86-
return component;
8794
}
8895

8996
public Class<R> getComponentBase()
@@ -130,6 +137,12 @@ public void removeComponent(@NotNull R component) throws IllegalArgumentExceptio
130137

131138
classes.forEach(clazz -> this.implementationProviders.removeMapping(clazz, component));
132139

140+
this.onComponentRemoved(component);
141+
}
142+
143+
@MustBeInvokedByOverriders
144+
protected void onComponentRemoved(R component)
145+
{
133146
try
134147
{
135148
component.destroy(this);
@@ -151,14 +164,7 @@ public <T extends R> void removeComponents(@NotNull ComponentToken<T> componentT
151164

152165
classes.forEach(clazz -> this.implementationProviders.removeMapping(clazz, component));
153166

154-
try
155-
{
156-
component.onUnmount();
157-
}
158-
catch (Exception e)
159-
{
160-
throw new RuntimeException("An exception has occured whiile unmounting the component", e);
161-
}
167+
this.onComponentRemoved(component);
162168
});
163169
}
164170
}

engine-demo/jsr-clone/src/main/java/cz/tefek/srclone/Game.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ private void render()
186186

187187
var scoreFont = new TextStyleOptions(24)
188188
.setPaint(LiPaint.solidColor(Color.WHITE));
189-
ImmediateFontRenderer.drawString(5.0f, 5.0f, ("S %010.0f").formatted(this.entityPlayer.getScore()), SRCloneMod.srCloneFont, scoreFont);
189+
ImmediateFontRenderer.drawString(5.0f, 5.0f, "S %010.0f".formatted(this.entityPlayer.getScore()), SRCloneMod.srCloneFont, scoreFont);
190190

191191
if (this.deathScreenAnimation > 1.0f)
192192
{

0 commit comments

Comments
 (0)