Skip to content

Commit

Permalink
Fixed #86, #90
Browse files Browse the repository at this point in the history
  • Loading branch information
LasmGratel committed Apr 1, 2022
1 parent b3ff0b4 commit 185dd0e
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 45 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = "1.3.0"
version = "1.3.2"
group= "net.infstudio.gokistats" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "GokiStats-1.16.5"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.lwjgl.opengl.GL11;

public class GuiStatButton extends Button {
public StatBase stat;
public StatBase<?> stat;
public PlayerEntity player;

public static final int INACTIVE_X = 0;
Expand All @@ -24,7 +24,7 @@ public class GuiStatButton extends Button {
public final int id;
private final Minecraft mc = Minecraft.getInstance();

public GuiStatButton(int id, int x, int y, int width, int height, StatBase stat, PlayerEntity player, IPressable onPress) {
public GuiStatButton(int id, int x, int y, int width, int height, StatBase<?> stat, PlayerEntity player, IPressable onPress) {
super(x, y, width, height, StringTextComponent.EMPTY, onPress);
this.id = id;
this.stat = stat;
Expand Down
30 changes: 16 additions & 14 deletions src/main/java/net/infstudio/goki/common/handlers/TickHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.tileentity.FurnaceTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
Expand All @@ -19,6 +23,7 @@
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.server.ServerLifecycleHooks;

import java.util.ArrayList;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;

Expand Down Expand Up @@ -131,27 +136,24 @@ private static void handleTaskPlayerAPI(PlayerEntity player) {
}

private static void handleFurnace(PlayerEntity player) {
if (DataHelper.getPlayerStatLevel(player, Stats.FURNACE_FINESSE) > 0) {
/*
ArrayList<FurnaceTileEntity> furnacesAroundPlayer = new ArrayList<>();
int level = DataHelper.getPlayerStatLevel(player, Stats.FURNACE_FINESSE);
if (level > 0 && !player.level.isClientSide()) {

for (TileEntity listEntity : player.world.loadedTileEntityList) {
ArrayList<FurnaceTileEntity> furnacesAroundPlayer = new ArrayList<>();
for (TileEntity listEntity : player.level.tickableBlockEntities) {
if (listEntity != null) {
TileEntity tileEntity = listEntity;
BlockPos pos = tileEntity.getPos();
if (tileEntity instanceof FurnaceTileEntity && MathHelper.sqrt(player.getDistanceSq(pos)) < 4.0D) {
// TODO work out alter way to do tileEntity
furnacesAroundPlayer.add((FurnaceTileEntity) tileEntity);
BlockPos pos = listEntity.getBlockPos();
if (listEntity instanceof FurnaceTileEntity && player.distanceToSqr(Vector3d.atCenterOf(pos)) < 4.0D) {
furnacesAroundPlayer.add((FurnaceTileEntity) listEntity);
}
}
}

// FIXME Laggy
for (FurnaceTileEntity furnace : furnacesAroundPlayer)
if (furnace.isBurning())
for (int i = 0; i < Stats.FURNACE_FINESSE.getBonus(player); i++) // Intend to "mount" ticks, same as Torcherino.
furnace.update();*/
for (int i = 0; i < Stats.FURNACE_FINESSE.getBonus(player); i++) // Intend to "mount" ticks, same as Torcherino.
furnace.tick();

furnacesAroundPlayer.clear();
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
public class StatFurnaceFinesse extends StatSpecialBase implements StatSpecial {
public StatFurnaceFinesse(int id, String key, int limit) {
super(id, key, limit);
this.setEnabled(false); // FIXME Find a better way to implement it
}

@Override
Expand Down
46 changes: 19 additions & 27 deletions src/main/java/net/infstudio/goki/common/utils/DataHelper.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.infstudio.goki.common.utils;

import net.infstudio.goki.api.capability.CapabilityStat;
import net.infstudio.goki.api.stat.Stat;
import net.infstudio.goki.api.stat.StatBase;
import net.infstudio.goki.api.stat.StatStorage;
import net.infstudio.goki.common.config.GokiConfig;
Expand All @@ -20,46 +21,30 @@
import java.util.function.IntFunction;

public class DataHelper {
public static boolean canPlayerRevertStat(PlayerEntity player, StatBase stat) {
public static boolean canPlayerRevertStat(PlayerEntity player, Stat stat) {
return GokiConfig.SERVER.globalMaxRevertLevel.get() == -1 ||
(GokiConfig.SERVER.globalMaxRevertLevel.get() >= 0
&& getPlayerRevertStatLevel(player, stat) < GokiConfig.SERVER.globalMaxRevertLevel.get()
&& getPlayerStatLevel(player, stat) > 0);
}

public static int getPlayerRevertStatLevel(PlayerEntity player, StatBase stat) {
if (player.getCapability(CapabilityStat.STAT).isPresent()) {
return player.getCapability(CapabilityStat.STAT).orElse(new StatStorage()).stateMap.get(stat).revertedLevel;
} else {
throw new RuntimeException(new IllegalAccessException("Player " + player.getDisplayName().getString() + " is missing stat capability!"));
}
public static int getPlayerRevertStatLevel(PlayerEntity player, Stat stat) {
return player.getCapability(CapabilityStat.STAT).map(storage -> storage.stateMap.get(stat).revertedLevel).orElse(0);
}

public static void setPlayerRevertStatLevel(PlayerEntity player, StatBase stat, int level) {
if (player.getCapability(CapabilityStat.STAT).isPresent()) {
player.getCapability(CapabilityStat.STAT).orElse(new StatStorage()).stateMap.get(stat).revertedLevel = level;
} else {
throw new RuntimeException(new IllegalAccessException("Player " + player.getDisplayName().getString() + " is missing stat capability!"));
}
public static void setPlayerRevertStatLevel(PlayerEntity player, Stat stat, int level) {
player.getCapability(CapabilityStat.STAT).ifPresent(storage -> storage.stateMap.get(stat).revertedLevel = level);
}

public static int getPlayerStatLevel(PlayerEntity player, StatBase stat) {
if (player.getCapability(CapabilityStat.STAT).isPresent()) {
return player.getCapability(CapabilityStat.STAT).orElse(new StatStorage()).stateMap.get(stat).level;
} else {
throw new RuntimeException(new IllegalAccessException("Player " + player.getDisplayName().getString() + " is missing stat capability!"));
}
public static int getPlayerStatLevel(PlayerEntity player, Stat stat) {
return player.getCapability(CapabilityStat.STAT).map(storage -> storage.stateMap.get(stat).level).orElse(0);
}

public static void setPlayerStatLevel(PlayerEntity player, StatBase stat, int level) {
if (player.getCapability(CapabilityStat.STAT).isPresent()) {
player.getCapability(CapabilityStat.STAT).orElse(new StatStorage()).stateMap.get(stat).level = level;
} else {
throw new RuntimeException(new IllegalAccessException("Player " + player.getDisplayName().getString() + " is missing stat capability!"));
}
public static void setPlayerStatLevel(PlayerEntity player, Stat stat, int level) {
player.getCapability(CapabilityStat.STAT).ifPresent(storage -> storage.stateMap.get(stat).level = level);
}

public static void multiplyPlayerStatLevel(PlayerEntity player, StatBase stat, IntFunction<Integer> multiplier) {
public static void multiplyPlayerStatLevel(PlayerEntity player, Stat stat, IntFunction<Integer> multiplier) {
setPlayerStatLevel(player, stat, multiplier.apply(getPlayerStatLevel(player, stat)));
}

Expand All @@ -70,7 +55,14 @@ public static float trimDecimals(float in, int decimals) {
}

public static int getXPTotal(PlayerEntity player) {
return player.totalExperience;
int level = player.experienceLevel;
int offset = player.totalExperience;
if (level <= 16)
return level * level + 6 * level + offset;
else if (level <= 31)
return (int) (2.5 * level * level - 40.5 * level) + 360 + offset;
else
return (int) (4.5 * level * level - 162.5 * level) + 2220 + offset;
}

public static boolean hasDamageModifier(ItemStack stack) {
Expand Down

0 comments on commit 185dd0e

Please sign in to comment.