Compare commits

..
11 Commits
Author SHA1 Message Date
Martin Robertz a9e6912bb7 backdate 2024-12-18 17:57:55 +01:00
Martin Robertz 38b09feb3c update
(cherry picked from commit 18e26956ef)
2024-12-18 17:57:16 +01:00
combusterf d96f3e6d6d fix: Use GT ash instead of letting unification screw everything up. (#86)
Co-authored-by: Marcel Sondaar <[email protected]>
(cherry picked from commit 713b0f9d9e)
2024-12-18 17:57:09 +01:00
Martin Robertz c6f2e3c7b3 update 2024-11-22 21:37:18 +01:00
chochem c6d8518d82 fix apatite ore crash (#85) 2024-11-21 17:11:44 +00:00
Dream Master 98711e5d34 update 2024-11-18 12:00:06 +01:00
Glease 5caab59507 close item inventory if parent item is gone (#84) 2024-11-18 11:38:20 +01:00
Martin Robertz 41d47d99ca update 2024-11-16 15:40:01 +01:00
Alexander Anishin 3c6d5d04d0 Fix NPE in logic of radioactive effect (#83) 2024-11-16 12:04:33 +01:00
Martin Robertz 137927b3e6 update 2024-09-12 08:20:39 +02:00
Nico SpiskeandMartin Robertz 8aa7e05bbe Add ability to display bee lore and add Discoverd by tag (#79)
* [minor] add ability to display bee lore and add Discoverd by tag

* [minor] better formatting, logic for bees, trees and butterflies.

* [minor] changes according to review

---------

Co-authored-by: Martin Robertz <[email protected]>
2024-09-12 07:34:49 +02:00
23 changed files with 169 additions and 19 deletions

No files matched your search

+3 -3
View File
@@ -2,9 +2,9 @@
dependencies {
api('curse.maven:cofh-lib-220333:2388748')
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta4:api')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.6.33-GTNH:dev')
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.6.2:api')
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta27:api')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.6.52-GTNH:dev')
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.0:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly('curse.maven:craftguide-75557:2459320')
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.26'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30'
}
@@ -52,4 +52,8 @@ public interface IIndividual extends INBTTagable {
IIndividual copy();
boolean isPureBred(IChromosomeType chromosomeType);
default void addLore(List<String> text) {}
default void addDiscoveredBy(List<String> text) {}
}
@@ -18,6 +18,8 @@ import java.util.Map;
import java.util.Random;
import java.util.Set;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -376,6 +378,36 @@ public class Bee extends IndividualLiving implements IBee {
return suitableBiomes;
}
@Override
public void addLore(List<String> text) {
IAlleleBeeSpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 0) {
String speciesLore = descTokens[0];
if (!speciesLore.isEmpty() && !speciesLore.contains("for.description")) {
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
String formattedLore = EnumChatFormatting.GOLD + speciesLore;
List<String> formattedLoreList = fontRenderer.listFormattedStringToWidth(formattedLore, 200);
text.addAll(formattedLoreList);
}
}
}
@Override
public void addDiscoveredBy(List<String> text) {
IAlleleBeeSpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 2) {
String discoveredBy = descTokens[2];
if (!discoveredBy.isEmpty()) {
text.add("");
text.add("Discovered by " + EnumChatFormatting.ITALIC + discoveredBy);
}
}
}
@Override
public void addTooltip(List<String> list) {
@@ -331,7 +331,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SIMMERING, 1), 0.55f)
.addProduct(PluginCore.items.ash.getItemStack(), 0.15f).setTemperature(EnumTemperature.HELLISH)
.addProduct(PluginCore.items.getAsh(), 0.15f).setTemperature(EnumTemperature.HELLISH)
.setHumidity(EnumHumidity.ARID);
}
@@ -13,6 +13,7 @@ import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
@@ -107,11 +108,8 @@ public class AlleleEffectRadioactive extends AlleleEffectThrottled {
}
// Some mods might use this logic? Idk, just a safety check. Might stop griefing.
if (!world.canMineBlock(
housing.getWorld().func_152378_a(housing.getOwner().getId()),
posHousing.x,
posHousing.y,
posHousing.z)) {
EntityPlayer player = world.func_152378_a(housing.getOwner().getId());
if (player == null || !world.canMineBlock(player, posHousing.x, posHousing.y, posHousing.z)) {
continue;
}
@@ -16,6 +16,8 @@ import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
@@ -298,6 +300,36 @@ public class Tree extends Individual implements ITree, IPlantable {
return plantTypes;
}
@Override
public void addLore(List<String> text) {
IAlleleTreeSpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 0) {
String speciesLore = descTokens[0];
if (!speciesLore.isEmpty() && !speciesLore.contains("for.description")) {
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
String formattedLore = EnumChatFormatting.GOLD + speciesLore;
List<String> formattedLoreList = fontRenderer.listFormattedStringToWidth(formattedLore, 200);
text.addAll(formattedLoreList);
}
}
}
@Override
public void addDiscoveredBy(List<String> text) {
IAlleleTreeSpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 2) {
String discoveredBy = descTokens[2];
if (!discoveredBy.isEmpty()) {
text.add("");
text.add("Discovered by " + EnumChatFormatting.ITALIC + discoveredBy);
}
}
}
@Override
public void addTooltip(List<String> list) {
@@ -8,6 +8,8 @@
******************************************************************************/
package forestry.core.blocks;
import static forestry.Forestry.isDreamcraftLoaded;
import java.util.ArrayList;
import java.util.List;
@@ -52,7 +54,7 @@ public class BlockResourceOre extends Block {
public void dropBlockAsItemWithChance(World world, int x, int y, int z, int metadata, float par6, int par7) {
super.dropBlockAsItemWithChance(world, x, y, z, metadata, par6, par7);
if (metadata == 0) {
if (metadata == 0 && !isDreamcraftLoaded) {
this.dropXpOnBlockBreak(world, x, y, z, MathHelper.getRandomIntegerInRange(world.rand, 1, 4));
}
}
@@ -61,7 +63,7 @@ public class BlockResourceOre extends Block {
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> drops = new ArrayList<>();
if (metadata == ResourceType.APATITE.ordinal()) {
if (metadata == ResourceType.APATITE.ordinal() && !isDreamcraftLoaded) {
int fortuneModifier = world.rand.nextInt(fortune + 2) - 1;
if (fortuneModifier < 0) {
fortuneModifier = 0;
@@ -72,6 +72,12 @@ public abstract class ItemGE extends ItemForestry {
if (individual.isAnalyzed()) {
if (Proxies.common.isShiftDown()) {
individual.addTooltip(list);
individual.addDiscoveredBy(list);
if (Proxies.common.isCtrlDown()) {
individual.addLore(list);
} else {
list.add(EnumChatFormatting.ITALIC + "<" + StringUtil.localize("gui.tooltip.tml") + ">");
}
} else {
list.add(EnumChatFormatting.ITALIC + "<" + StringUtil.localize("gui.tooltip.tmi") + ">");
}
@@ -53,4 +53,13 @@ public abstract class ContainerItemInventory<I extends ItemInventory> extends Co
inventory.onSlotClick(player);
return result;
}
@Override
public void detectAndSendChanges() {
if (!inventory.isParentItemEquipped()) {
inventory.getPlayer().closeScreen();
return;
}
super.detectAndSendChanges();
}
}
@@ -78,6 +78,14 @@ public abstract class ItemInventory implements IInventory, IFilterSlotDelegate {
}
}
public boolean isParentItemEquipped() {
return isSameItemInventory(player.getCurrentEquippedItem(), parent);
}
public EntityPlayer getPlayer() {
return player;
}
public boolean isParentItemInventory(ItemStack itemStack) {
ItemStack parent = getParent();
return isSameItemInventory(parent, itemStack);
@@ -10,6 +10,8 @@ package forestry.core.items;
import static forestry.Forestry.isDreamcraftLoaded;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
@@ -65,7 +67,7 @@ public class ItemRegistryCore extends ItemRegistry {
/* Peat */
public final ItemForestry peat;
public final ItemForestry ash;
private final ItemForestry ash;
public final ItemForestry bituminousPeat;
/* Moistener */
@@ -196,4 +198,12 @@ public class ItemRegistryCore extends ItemRegistry {
OreDictionary.registerOre(def.getOreDict(), fruit);
}
}
public ItemStack getAsh() {
List<ItemStack> options = OreDictionary.getOres("dustAsh");
for (ItemStack option : options) {
if (option.getItem() != ash) return option.copy();
}
return ash.getItemStack();
}
}
@@ -61,6 +61,10 @@ public class ProxyCommon {
return false;
}
public boolean isCtrlDown() {
return false;
}
public void playSoundFX(World world, int x, int y, int z, Block block) {
Proxies.net.sendNetworkPacket(new PacketFXSignal(PacketFXSignal.SoundFXType.LEAF, x, y, z, block, 0), world);
}
@@ -63,6 +63,11 @@ public class ProxyCommonClient extends ProxyCommon {
return Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
}
@Override
public boolean isCtrlDown() {
return Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL);
}
@Override
public String getDisplayName(ItemStack itemstack) {
return itemstack.getItem().getItemStackDisplayName(itemstack);
@@ -78,7 +78,7 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
return i;
}
if (waste.getItem() != PluginCore.items.ash) {
if (waste.getItem() != PluginCore.items.getAsh().getItem()) {
continue;
}
@@ -182,7 +182,7 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
if (wasteSlot >= 0) {
IInventoryAdapter inventory = getInternalInventory();
if (inventory.getStackInSlot(wasteSlot) == null) {
inventory.setInventorySlotContents(wasteSlot, PluginCore.items.ash.getItemStack());
inventory.setInventorySlotContents(wasteSlot, PluginCore.items.getAsh());
} else {
inventory.getStackInSlot(wasteSlot).stackSize++;
}
@@ -14,6 +14,8 @@ import java.util.Locale;
import java.util.Map;
import java.util.Random;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.entity.EntityCreature;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -60,6 +62,36 @@ public class Butterfly extends IndividualLiving implements IButterfly {
this.genome = genome;
}
@Override
public void addLore(List<String> text) {
IAlleleButterflySpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 0) {
String speciesLore = descTokens[0];
if (!speciesLore.isEmpty() && !speciesLore.contains("for.description")) {
FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;
String formattedLore = EnumChatFormatting.GOLD + speciesLore;
List<String> formattedLoreList = fontRenderer.listFormattedStringToWidth(formattedLore, 200);
text.addAll(formattedLoreList);
}
}
}
@Override
public void addDiscoveredBy(List<String> text) {
IAlleleButterflySpecies primary = genome.getPrimary();
String descTokens[] = primary.getDescription().split("\\|");
if (descTokens.length > 2) {
String discoveredBy = descTokens[2];
if (!discoveredBy.isEmpty()) {
text.add("");
text.add("Discovered by " + EnumChatFormatting.ITALIC + discoveredBy);
}
}
}
@Override
public void addTooltip(List<String> list) {
IAlleleButterflySpecies primary = genome.getPrimary();
@@ -137,7 +137,7 @@ public class PluginCore extends ForestryPlugin {
crateRegistry.registerCrate(items.fertilizerCompound, "cratedFertilizer");
crateRegistry.registerCrate(items.mulch, "cratedMulch");
crateRegistry.registerCrate(items.phosphor, "cratedPhosphor");
crateRegistry.registerCrate(items.ash, "cratedAsh");
crateRegistry.registerCrateUsingOreDict(items.getAsh(), "cratedAsh");
if (!isDreamcraftLoaded) {
crateRegistry.registerCrate(items.apatite, "cratedApatite");
crateRegistry.registerCrateUsingOreDict(items.ingotTin, "cratedTin");
@@ -207,7 +207,7 @@ public class PluginCore extends ForestryPlugin {
0.5f);
RecipeUtil.addSmelting(blocks.resources.get(BlockResourceOre.ResourceType.TIN, 1), items.ingotTin, 0.5f);
}
RecipeUtil.addSmelting(new ItemStack(items.peat), items.ash, 0.0f);
RecipeUtil.addSmelting(new ItemStack(items.peat), items.getAsh(), 0.0f);
/* BRONZE INGOTS */
if (Config.isCraftingBronzeEnabled()) {
@@ -449,10 +449,15 @@ public class PluginStorage extends ForestryPlugin {
String oreName = OreDictionary.getOreName(oreId);
addCrating(crateStack, oreName);
}
if (oreIds.length > 0 && oreIds[0] == OreDictionary.getOreID("dustAsh")) {
addUncrating(crateStack, PluginCore.items.getAsh());
} else {
addUncrating(crateStack, uncrated);
}
} else {
addCrating(crateStack, uncrated);
addUncrating(crateStack, uncrated);
}
addUncrating(crateStack, uncrated);
}
}
@@ -335,6 +335,7 @@ for.gui.temperature=Temperatur
for.gui.tolerance=Toleranz
for.gui.temptol=Temp.Tol
for.gui.tooltip.tmi=Drücke die Umschalttaste für mehr Infos.
for.gui.tooltip.tml=Drücke die Steuerungstaste für mehr Geschichte.
for.gui.triple=Dreifache
for.gui.unknown=Unbekannt
for.gui.warm=Warm
@@ -341,6 +341,7 @@ for.gui.temperature=Temperature
for.gui.tolerance=Tolerance
for.gui.temptol=Temperature Tol.
for.gui.tooltip.tmi=Hold shift for details
for.gui.tooltip.tml=Hold ctrl for lore
for.gui.triple=Triple
for.gui.unknown=Unknown genome
for.gui.warm=Warm
@@ -244,6 +244,7 @@ gui.higher=Higher
gui.highest=Highest
gui.fecundated=Mated
gui.tooltip.tmi=Hold shift for details
gui.tooltip.tml=Hold ctrl for lore
gui.worktable.clear=Click to clear Grid
gui.escritoire.probe=Examine Specimens
hints.beebiomes.tag=Choose your biome!