Skip to content

Commit fcc3ee5

Browse files
authored
Merge pull request #23 from Redart15/next-Redart15
Some improvement to effects and its stacks
2 parents f6540e0 + fa34182 commit fcc3ee5

2 files changed

Lines changed: 38 additions & 20 deletions

File tree

effects/src/main/java/sunsetsatellite/catalyst/effects/api/effect/Effect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,13 @@ public <T> void stackSubtracted(EffectStack effectStack, EffectContainer<T> effe
150150

151151
}
152152

153+
public <T> void stackRefreshed(EffectStack effectStack, EffectContainer<T> effectContainer) {
154+
155+
}
156+
153157
@Override
154158
public boolean isIn(Tag tag) {
155159
return tag.appliesTo(this);
156160
}
161+
157162
}

effects/src/main/java/sunsetsatellite/catalyst/effects/api/effect/EffectStack.java

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,34 +49,28 @@ public EffectStack(CompoundTag tag) {
4949
this.timeLeft = tag.getInteger("timeLeft");
5050
}
5151

52-
public <T> void start(EffectContainer<T> container) {
52+
public <T> void start(EffectContainer<T> effectContainer) {
5353
if (state == State.INACTIVE) {
5454
state = State.ACTIVE;
5555
timeLeft = duration;
56-
effect.activated(this, container);
57-
58-
if (EnvironmentHelper.isServerEnvironment())
59-
NetworkHandler.sendToAllPlayers(new SyncEffectContainerForEntityNetworkMessage((Entity) container.getParent()));
56+
effect.activated(this, effectContainer);
57+
syncEffectsStack(effectContainer);
6058
}
6159
}
6260

63-
public <T> void pause(EffectContainer<T> container) {
61+
public <T> void pause(EffectContainer<T> effectContainer) {
6462
if (state == State.ACTIVE) {
6563
state = State.PAUSED;
66-
effect.paused(this, container);
67-
68-
if (EnvironmentHelper.isServerEnvironment())
69-
NetworkHandler.sendToAllPlayers(new SyncEffectContainerForEntityNetworkMessage((Entity) container.getParent()));
64+
effect.paused(this, effectContainer);
65+
syncEffectsStack(effectContainer);
7066
}
7167
}
7268

73-
public <T> void unpause(EffectContainer<T> container) {
69+
public <T> void unpause(EffectContainer<T> effectContainer) {
7470
if (state == State.PAUSED) {
7571
state = State.ACTIVE;
76-
effect.unpaused(this, container);
77-
78-
if (EnvironmentHelper.isServerEnvironment())
79-
NetworkHandler.sendToAllPlayers(new SyncEffectContainerForEntityNetworkMessage((Entity) container.getParent()));
72+
effect.unpaused(this, effectContainer);
73+
syncEffectsStack(effectContainer);
8074
}
8175
}
8276

@@ -88,6 +82,16 @@ public <T> void finish(EffectContainer<T> effectContainer) {
8882
}
8983
}
9084

85+
public <T> void restart(int amount, EffectContainer<T> effectContainer) {
86+
if (state == State.FINISHED) {
87+
timeLeft = duration;
88+
state = State.ACTIVE;
89+
this.amount -= amount;
90+
effect.stackSubtracted(this, effectContainer);
91+
syncEffectsStack(effectContainer);
92+
}
93+
}
94+
9195
public <T> void tick(EffectContainer<T> effectContainer) {
9296
if (state == State.ACTIVE) {
9397
if (effect.getTimeType() == EffectTimeType.PERMANENT) {
@@ -107,23 +111,32 @@ public <T> void add(int amount, EffectContainer<T> effectContainer) {
107111
this.amount += amount;
108112
if (effect.getTimeType() == EffectTimeType.RESET) {
109113
timeLeft = duration;
114+
effect.stackRefreshed(this, effectContainer);
110115
}
111116
if (effect.getTimeType() == EffectTimeType.ADD) {
112117
timeLeft += effect.getDurationIncrease();
113118
}
114119

115-
effect.stackAdded(this, effectContainer);
120+
if (amount > 0) {
121+
effect.stackAdded(this, effectContainer);
122+
}
116123

117-
if (EnvironmentHelper.isServerEnvironment())
118-
NetworkHandler.sendToAllPlayers(new SyncEffectContainerForEntityNetworkMessage((Entity) effectContainer.getParent()));
124+
syncEffectsStack(effectContainer);
119125
}
120126

121127
public <T> void subtract(int amount, EffectContainer<T> effectContainer) {
122128
this.amount -= amount;
123-
effect.stackSubtracted(this, effectContainer);
124129

125-
if (EnvironmentHelper.isServerEnvironment())
130+
if (amount > 0) {
131+
effect.stackSubtracted(this, effectContainer);
132+
}
133+
syncEffectsStack(effectContainer);
134+
}
135+
136+
private static <T> void syncEffectsStack(EffectContainer<T> effectContainer) {
137+
if (EnvironmentHelper.isServerEnvironment()) {
126138
NetworkHandler.sendToAllPlayers(new SyncEffectContainerForEntityNetworkMessage((Entity) effectContainer.getParent()));
139+
}
127140
}
128141

129142
public boolean isActive() {

0 commit comments

Comments
 (0)