Skip to content

Commit 7b2b54d

Browse files
committed
等效于驱逐队列
1 parent 9cb8245 commit 7b2b54d

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

src/main/java/cn/coostack/cooparticlesapi/mixin/ParticleManagerMixin.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import cn.coostack.cooparticlesapi.config.APIConfigManager;
55
import com.google.common.collect.EvictingQueue;
6-
import net.minecraft.client.particle.EmitterParticle;
76
import net.minecraft.client.particle.Particle;
87
import net.minecraft.client.particle.ParticleManager;
98
import net.minecraft.client.particle.ParticleTextureSheet;
@@ -42,12 +41,12 @@ public Object changeMaxParticles(Queue<Object> queue) {
4241
Queue<Particle> queue1 = particles.computeIfAbsent(particle.getType(),
4342
sheet -> EvictingQueue.create(limit));
4443
// limit 在程序生命周期内不会改变,这里可以直接判断
45-
if (queue1.size() < limit) {
46-
queue1.add(particle);
47-
} else {
44+
if (queue1.size() == limit) {
4845
// 这样驱逐队列就没用了但是可以避免内存泄漏
49-
onEvict(particle);
46+
Particle poll = queue1.poll();
47+
if (poll != null) onEvict(poll);
5048
}
49+
queue1.add(particle);
5150
}
5251
return null;
5352
}

src/main/kotlin/cn/coostack/cooparticlesapi/config/APIConfig.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.coostack.cooparticlesapi.config
22

3+
import kotlin.math.max
4+
35
class APIConfig {
46
/**
57
* 是否启用ParticleManagerMixin 对粒子数量上限进行修改
@@ -12,4 +14,5 @@ class APIConfig {
1214
* 原版上限为65536
1315
*/
1416
var particleCountLimit = 65536
17+
get() = max(field, 1)
1518
}

0 commit comments

Comments
 (0)