Compare commits

..
8 Commits
Author SHA1 Message Date
Dream Master 43fc136fe3 update 2025-07-18 10:15:39 +07:00
boubou19 ea52fa0d55 Speed up forge event registration (#98) 2025-07-17 18:49:32 +00:00
Martin Robertz 725d556718 update 2025-07-10 11:11:16 +02:00
Yoshy d88c007fbb Add missing = in Localisation (#97) 2025-07-09 22:28:25 +00:00
Martin Robertz 485333c6aa update 2025-06-20 23:40:15 +02:00
slprime 240802082e Change NEIHandler Tooltip Position (#96) 2025-06-16 07:46:05 +02:00
Martin Robertz 6f182e932d update 2025-06-03 20:22:19 +02:00
d08b42f18c Protect some calls that lead to loadChunk with blockExists (#91)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: boubou19 <[email protected]>
Co-authored-by: Maya <[email protected]>
2025-06-01 21:05:22 +00:00
12 changed files with 51 additions and 49 deletions

No files matched your search

+3 -3
View File
@@ -2,10 +2,10 @@
dependencies {
api('curse.maven:cofh-lib-220333:2388748')
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta42:api')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.45-GTNH:dev')
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta51:api')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.66-GTNH:dev')
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.1:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.42:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.44:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly('curse.maven:craftguide-75557:2459320')
}
+2 -2
View File
@@ -80,7 +80,7 @@ apiPackage = api
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# There can be multiple files in a space-separated list.
# Example value: mymodid_at.cfg nei_at.cfg
accessTransformersFile =
accessTransformersFile = forestry_at.cfg
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
@@ -151,7 +151,7 @@ modrinthProjectId =
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.41'
}
@@ -213,6 +213,7 @@ public final class FlowerRegistry implements IFlowerRegistry, IFlowerGrowthHelpe
private static boolean isAcceptedFlower(String flowerType, Set<Block> acceptedBlocks, Set<Flower> acceptedFlowers,
World world, int x, int y, int z) {
if (!world.blockExists(x, y, z)) return false;
Block block = world.getBlock(x, y, z);
final int meta;
@@ -24,7 +24,7 @@ public class GrowthRuleDirtGrass implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry flowerRegistry, String flowerType, World world, IIndividual individual,
int x, int y, int z) {
if (!world.isAirBlock(x, y, z)) {
if (!world.blockExists(x, y, z) || !world.isAirBlock(x, y, z)) {
return false;
}
@@ -39,7 +39,7 @@ public class GrowthRuleDirtGrass implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
if (!world.isAirBlock(x, y, z)) {
if (!world.blockExists(x, y, z) || !world.isAirBlock(x, y, z)) {
return false;
}
@@ -34,6 +34,10 @@ public class GrowthRuleFlowerPot implements IFlowerGrowthRule {
}
private static boolean growFlower(String flowerType, World world, int x, int y, int z) {
if (!world.blockExists(x, y, z)) {
return false;
}
TileEntity tile = world.getTileEntity(x, y, z);
if (!(tile instanceof TileEntityFlowerPot)) {
return false;
@@ -773,6 +773,9 @@ public class Bee extends IndividualLiving implements IBee {
for (int i = 0; i < 20; i++) {
Vect randomPos = Vect.getRandomPositionInArea(random, area);
Vect blockPos = Vect.add(housingPos, randomPos, offset);
if (!world.blockExists(blockPos.x, blockPos.y, blockPos.z)) {
continue;
}
TileEntity tile = world.getTileEntity(blockPos.x, blockPos.y, blockPos.z);
if (tile instanceof IPollinatable) {
@@ -31,7 +31,7 @@ public class ItemForestryTool extends ItemForestry {
setMaxDamage(200);
this.remnants = remnants;
if (remnants != null) {
MinecraftForge.EVENT_BUS.register(this);
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
}
@@ -53,20 +53,6 @@ public class ItemForestryTool extends ItemForestry {
return ForgeHooks.canToolHarvestBlock(block, 0, stack);
}
@SubscribeEvent
public void onDestroyCurrentItem(PlayerDestroyItemEvent event) {
if (event.original == null || event.original.getItem() != this) {
return;
}
EntityPlayer player = event.entityPlayer;
World world = player.worldObj;
if (!world.isRemote && remnants != null) {
ItemStackUtil.dropItemStackAsEntity(remnants.copy(), world, player.posX, player.posY, player.posZ);
}
}
@Override
public boolean onBlockDestroyed(ItemStack itemstack, World world, Block block, int x, int y, int z,
EntityLivingBase entityliving) {
@@ -80,4 +66,21 @@ public class ItemForestryTool extends ItemForestry {
public boolean isFull3D() {
return true;
}
public class EventHandler {
@SubscribeEvent
public void onDestroyCurrentItem(PlayerDestroyItemEvent event) {
if (event.original == null || event.original.getItem() != ItemForestryTool.this) {
return;
}
EntityPlayer player = event.entityPlayer;
World world = player.worldObj;
if (!world.isRemote && remnants != null) {
ItemStackUtil.dropItemStackAsEntity(remnants.copy(), world, player.posX, player.posY, player.posZ);
}
}
}
}
@@ -112,18 +112,12 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler implements
public List<String> handleTooltip(GuiRecipe<?> guiRecipe, List<String> currenttip, int recipe) {
super.handleTooltip(guiRecipe, currenttip, recipe);
CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe);
if (GuiContainerManager.shouldShowTooltip(guiRecipe)) {
Point mouse = GuiDraw.getMousePosition();
int recipeIndex = guiRecipe.getRecipeIndices().indexOf(recipe);
if (recipeIndex >= 0) {
Point offset = guiRecipe.getRecipePosition(recipeIndex);
Point relMouse = new Point(
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
currenttip = this.provideTooltip(guiRecipe, currenttip, crecipe, relMouse);
}
Point offset = guiRecipe.getRecipePosition(recipe);
Point relMouse = new Point(mouse.x - guiRecipe.guiLeft - offset.x, mouse.y - guiRecipe.guiTop - offset.y);
currenttip = this.provideTooltip(guiRecipe, currenttip, crecipe, relMouse);
}
return currenttip;
@@ -135,18 +129,10 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler implements
super.handleItemTooltip(guiRecipe, itemStack, currenttip, recipe);
CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe);
Point mouse = GuiDraw.getMousePosition();
int recipeIndex = guiRecipe.getRecipeIndices().indexOf(recipe);
Point offset = guiRecipe.getRecipePosition(recipe);
Point relMouse = new Point(mouse.x - guiRecipe.guiLeft - offset.x, mouse.y - guiRecipe.guiTop - offset.y);
if (recipeIndex >= 0) {
Point offset = guiRecipe.getRecipePosition(recipeIndex);
Point relMouse = new Point(
mouse.x - (guiRecipe.width - 176) / 2 - offset.x,
mouse.y - (guiRecipe.height - 166) / 2 - offset.y);
currenttip = this.provideItemTooltip(guiRecipe, itemStack, currenttip, crecipe, relMouse);
}
return currenttip;
return this.provideItemTooltip(guiRecipe, itemStack, currenttip, crecipe, relMouse);
}
public List<String> provideTooltip(GuiRecipe<?> guiRecipe, List<String> currenttip, CachedBaseRecipe crecipe,
@@ -210,11 +196,9 @@ public abstract class RecipeHandlerBase extends TemplateRecipeHandler implements
protected boolean transferFluidTank(GuiRecipe<?> guiRecipe, int recipe, boolean usage) {
CachedBaseRecipe crecipe = (CachedBaseRecipe) this.arecipes.get(recipe);
Point mousepos = GuiDraw.getMousePosition();
Point mouse = GuiDraw.getMousePosition();
Point offset = guiRecipe.getRecipePosition(recipe);
Point relMouse = new Point(
mousepos.x - (guiRecipe.width - 176) / 2 - offset.x,
mousepos.y - (guiRecipe.height - 166) / 2 - offset.y);
Point relMouse = new Point(mouse.x - guiRecipe.guiLeft - offset.x, mouse.y - guiRecipe.guiTop - offset.y);
if (crecipe.getFluidTanks() != null) {
for (PositionedFluidTank tank : crecipe.getFluidTanks()) {
@@ -96,6 +96,8 @@ public class GeneticsUtil {
* altering the world by changing vanilla leaves to forestry ones.
*/
public static ICheckPollinatable getCheckPollinatable(World world, final int x, final int y, final int z) {
if (!world.blockExists(x, y, z)) return null;
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof IPollinatable) {
@@ -0,0 +1,5 @@
# Forestry Access Transformer configuration file
public net.minecraft.client.gui.inventory.GuiContainer field_146999_f #xSize
public net.minecraft.client.gui.inventory.GuiContainer field_147000_g #ySize
public net.minecraft.client.gui.inventory.GuiContainer field_147003_i #guiLeft
public net.minecraft.client.gui.inventory.GuiContainer field_147009_r #guiTop
@@ -150,7 +150,7 @@ gui.maxspeed=Mбximo
gui.fastest=Rбpida++
gui.faster=Rбpida+
gui.fast=Rбpida
gui.slowLenta
gui.slow=Lenta
gui.slower=Lenta+
gui.slowest=Lenta++
gui.longestlife=Longa++