mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-11-15 17:44:55 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00a507f6e1 | ||
|
|
99ebd8efe0 | ||
|
|
29df6ceb1b |
No files matched your search
@@ -5,7 +5,12 @@
|
||||
******************************************************************************/
|
||||
package forestry.api.apiculture;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
|
||||
public interface IHiveFrame {
|
||||
|
||||
@@ -22,4 +27,15 @@ public interface IHiveFrame {
|
||||
ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear);
|
||||
|
||||
IBeeModifier getBeeModifier();
|
||||
|
||||
/**
|
||||
* Provides an override for the "Hold Shift" tooltip info for a frame.<br>
|
||||
* Called by {@link forestry.apiculture.EventHandlerApiculture#addFrameTooltip(ItemTooltipEvent)}.
|
||||
*
|
||||
* @return The info to display for this frame, or null if default generated info.
|
||||
*/
|
||||
@Nullable
|
||||
default List<String> getFrameTooltip() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package forestry.apiculture;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import forestry.api.apiculture.IBeeModifier;
|
||||
import forestry.api.apiculture.IHiveFrame;
|
||||
import forestry.core.proxy.Proxies;
|
||||
import forestry.core.utils.StringUtil;
|
||||
|
||||
public class EventHandlerApiculture {
|
||||
|
||||
@SubscribeEvent
|
||||
public void addFrameTooltip(ItemTooltipEvent event) {
|
||||
ItemStack itemStack = event.itemStack;
|
||||
if (itemStack != null && itemStack.getItem() instanceof IHiveFrame) {
|
||||
IHiveFrame frame = (IHiveFrame) itemStack.getItem();
|
||||
IBeeModifier modifier = frame.getBeeModifier();
|
||||
List<String> tooltip = event.toolTip;
|
||||
|
||||
if (!Proxies.common.isShiftDown()) {
|
||||
tooltip.add(EnumChatFormatting.ITALIC + "<" + StringUtil.localize("gui.tooltip.tmi") + ">");
|
||||
} else {
|
||||
if (frame.getFrameTooltip() != null) {
|
||||
// use the override if it exists
|
||||
tooltip.addAll(frame.getFrameTooltip());
|
||||
} else {
|
||||
// otherwise use the auto-generated info
|
||||
int durability = itemStack.getMaxDamage();
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.durability") + getDurabilityFormatted(durability));
|
||||
|
||||
float territory = modifier.getTerritoryModifier(null, 1.0F);
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.territory") + getColorFormatted(territory));
|
||||
|
||||
float mutation = modifier.getMutationModifier(null, null, 1.0F);
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.mutationRate") + getColorFormatted(mutation));
|
||||
|
||||
float lifespan = modifier.getLifespanModifier(null, null, 1.0F);
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.lifespan") + getColorFormatted(lifespan));
|
||||
|
||||
float production = modifier.getProductionModifier(null, 1.0F);
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.production") + getColorFormatted(production, true));
|
||||
|
||||
float decay = modifier.getGeneticDecay(null, 1.0F);
|
||||
tooltip.add(StringUtil.localize("frame.tooltip.geneticDecay") + getColorFormatted(decay));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getDurabilityFormatted(int durability) {
|
||||
EnumChatFormatting color;
|
||||
if (durability < 100) {
|
||||
color = EnumChatFormatting.DARK_RED;
|
||||
} else if (durability < 200) {
|
||||
color = EnumChatFormatting.RED;
|
||||
} else if (durability < 250) {
|
||||
color = EnumChatFormatting.GOLD;
|
||||
} else if (durability < 750) {
|
||||
color = EnumChatFormatting.GREEN;
|
||||
} else {
|
||||
color = EnumChatFormatting.AQUA;
|
||||
}
|
||||
return color + " " + durability;
|
||||
}
|
||||
|
||||
private static String getColorFormatted(float value, boolean additive) {
|
||||
EnumChatFormatting color;
|
||||
if (value <= 0.5F) {
|
||||
color = EnumChatFormatting.DARK_RED; // "bad" stat
|
||||
} else if (value < 1.0F) {
|
||||
color = EnumChatFormatting.RED; // "below average" stat
|
||||
} else if (value == 1.0F) {
|
||||
color = EnumChatFormatting.GOLD; // "average" stat
|
||||
} else if (value <= 2.0F) {
|
||||
color = EnumChatFormatting.GREEN; // "above average" stat
|
||||
} else {
|
||||
color = EnumChatFormatting.AQUA; // "great" stat
|
||||
}
|
||||
String formatted = color.toString();
|
||||
|
||||
// Set symbol for if this value is additive or multiplicative
|
||||
if (additive) {
|
||||
formatted += " +";
|
||||
} else {
|
||||
formatted += " x";
|
||||
}
|
||||
|
||||
// trim trailing zeroes if no decimal-precision is needed
|
||||
if (value == (long) value) {
|
||||
return formatted + (long) value;
|
||||
}
|
||||
return formatted + value;
|
||||
}
|
||||
|
||||
private static String getColorFormatted(float value) {
|
||||
return getColorFormatted(value, false);
|
||||
}
|
||||
}
|
||||
@@ -414,7 +414,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase
|
||||
tempChange += change;
|
||||
tempChange = Math.max(boundaryDown - temperature, tempChange);
|
||||
tempChange = Math.min(boundaryUp - temperature, tempChange);
|
||||
tempChange = (change > 0 && tempChange < 0) || (change < 0 && tempChange > 0) ? 0 : tempChange;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -424,7 +423,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase
|
||||
humidChange += change;
|
||||
humidChange = Math.max(boundaryDown - humidity, humidChange);
|
||||
humidChange = Math.min(boundaryUp - humidity, humidChange);
|
||||
humidChange = (change > 0 && humidChange < 0) || (change < 0 && humidChange > 0) ? 0 : humidChange;
|
||||
}
|
||||
|
||||
/* GUI */
|
||||
|
||||
@@ -32,7 +32,7 @@ public class TileAlvearyFan extends TileAlvearyClimatiser {
|
||||
|
||||
@Override
|
||||
public float getBoundaryDown() {
|
||||
return 0.05f;
|
||||
return -1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,12 +22,12 @@ public class TileAlvearyHeater extends TileAlvearyClimatiser {
|
||||
|
||||
@Override
|
||||
public float getChangePerTransfer() {
|
||||
return 0.01f;
|
||||
return 0.015f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getBoundaryUp() {
|
||||
return 2.5f;
|
||||
return 3.5f;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -56,9 +56,9 @@ public class TileAlvearyHygroregulator extends TileAlveary
|
||||
this.tankManager = new TankManager(this, liquidTank);
|
||||
|
||||
this.recipes = new HygroregulatorRecipe[] {
|
||||
new HygroregulatorRecipe(new FluidStack(water, 1), 1, 0.01f, -0.005f),
|
||||
new HygroregulatorRecipe(new FluidStack(lava, 1), 10, -0.01f, +0.005f),
|
||||
new HygroregulatorRecipe(new FluidStack(liquidIce, 1), 10, 0.02f, -0.01f) };
|
||||
new HygroregulatorRecipe(new FluidStack(water, 1), 1, +0.01f, -0.0005f),
|
||||
new HygroregulatorRecipe(new FluidStack(lava, 1), 10, -0.01f, +0.0005f),
|
||||
new HygroregulatorRecipe(new FluidStack(liquidIce, 1), 10, +0.02f, -0.001f) };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -106,7 +106,7 @@ public abstract class ItemInventory implements IInventory, IFilterSlotDelegate {
|
||||
|
||||
String baseUID = base.getTagCompound().getString(KEY_UID);
|
||||
String comparisonUID = comparison.getTagCompound().getString(KEY_UID);
|
||||
return baseUID != null && comparisonUID != null && baseUID.equals(comparisonUID);
|
||||
return baseUID != null && !baseUID.isEmpty() && baseUID.equals(comparisonUID);
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
|
||||
@@ -60,6 +60,7 @@ import forestry.api.recipes.RecipeManagers;
|
||||
import forestry.api.storage.ICrateRegistry;
|
||||
import forestry.api.storage.StorageManager;
|
||||
import forestry.apiculture.ArmorApiaristHelper;
|
||||
import forestry.apiculture.EventHandlerApiculture;
|
||||
import forestry.apiculture.SaveEventHandlerApiculture;
|
||||
import forestry.apiculture.VillageHandlerApiculture;
|
||||
import forestry.apiculture.blocks.BlockAlveary;
|
||||
@@ -185,6 +186,7 @@ public class PluginApiculture extends ForestryPlugin {
|
||||
super.preInit();
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
MinecraftForge.EVENT_BUS.register(new EventHandlerApiculture());
|
||||
|
||||
blocks.apiculture.addDefinitions(
|
||||
new MachineDefinition(BlockApicultureType.APIARY).setFaces(0, 1, 2, 2, 4, 4, 0, 7),
|
||||
|
||||
@@ -568,6 +568,13 @@ item.for.frameImpregnated.name=Impregnated Frame
|
||||
item.for.frameProven.name=Proven Frame
|
||||
item.for.frameUntreated.name=Untreated Frame
|
||||
|
||||
for.frame.tooltip.durability=Durability:
|
||||
for.frame.tooltip.territory=Territory:
|
||||
for.frame.tooltip.mutationRate=Mutation Rate:
|
||||
for.frame.tooltip.lifespan=Lifespan:
|
||||
for.frame.tooltip.production=Production:
|
||||
for.frame.tooltip.geneticDecay=Genetic Decay:
|
||||
|
||||
item.for.fruits.cherry.name=Cherry
|
||||
item.for.fruits.chestnut.name=Chestnut
|
||||
item.for.fruits.dates.name=Date
|
||||
|
||||
Reference in new issue
Block a user