/
InventoryEffectRendererGuiHandler.java
55 lines (50 loc) · 1.8 KB
/
InventoryEffectRendererGuiHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package mezz.jei.plugins.vanilla;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import mezz.jei.api.gui.handlers.IGuiContainerHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.renderer.Rectangle2d;
import net.minecraft.inventory.container.Container;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import com.google.common.collect.Ordering;
class InventoryEffectRendererGuiHandler<T extends Container> implements IGuiContainerHandler<DisplayEffectsScreen<T>> {
/**
* Modeled after {@link DisplayEffectsScreen#drawActivePotionEffects()}
*/
@SuppressWarnings("JavadocReference")
@Override
public List<Rectangle2d> getGuiExtraAreas(DisplayEffectsScreen<T> containerScreen) {
Minecraft minecraft = containerScreen.getMinecraft();
if (minecraft == null) {
return Collections.emptyList();
}
ClientPlayerEntity player = minecraft.player;
if (player == null) {
return Collections.emptyList();
}
Collection<EffectInstance> activePotionEffects = player.getActivePotionEffects();
if (activePotionEffects.isEmpty()) {
return Collections.emptyList();
}
List<Rectangle2d> areas = new ArrayList<>();
int x = containerScreen.getGuiLeft() - 124;
int y = containerScreen.getGuiTop();
int height = 33;
if (activePotionEffects.size() > 5) {
height = 132 / (activePotionEffects.size() - 1);
}
for (EffectInstance potioneffect : Ordering.natural().sortedCopy(activePotionEffects)) {
Effect potion = potioneffect.getPotion();
if (potion.shouldRender(potioneffect)) {
areas.add(new Rectangle2d(x, y, 166, 140));
y += height;
}
}
return areas;
}
}