Skip to content

Commit f934561

Browse files
committed
Fix citizens using inventory search to find out whether there is an empty slot, despite tracking empty slot count
Removed unused AbstractResearchEffect Improve research effect checks
1 parent e8d7f7c commit f934561

File tree

10 files changed

+18
-51
lines changed

10 files changed

+18
-51
lines changed

src/main/java/com/minecolonies/api/research/effects/AbstractResearchEffect.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/main/java/com/minecolonies/apiimp/initializer/InteractionValidatorInitializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public static void init()
159159

160160
InteractionValidatorRegistry.registerStandardPredicate(Component.translatable(PATIENT_FULL_INVENTORY),
161161
citizen -> citizen.getEntity().isPresent() && citizen.getCitizenDiseaseHandler().isSick()
162-
&& InventoryUtils.isItemHandlerFull(citizen.getEntity().get().getInventoryCitizen()));
162+
&& !citizen.getEntity().get().getInventoryCitizen().hasSpace());
163163

164164
InteractionValidatorRegistry.registerStandardPredicate(Component.translatable(PUPIL_NO_CARPET),
165165
citizen -> citizen.getEntity().isPresent() && citizen.isChild() && citizen.getWorkBuilding() instanceof BuildingSchool

src/main/java/com/minecolonies/core/colony/requestsystem/resolvers/core/AbstractCraftingRequestResolver.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@
1616
import com.minecolonies.api.colony.requestsystem.token.IToken;
1717
import com.minecolonies.api.crafting.IRecipeStorage;
1818
import com.minecolonies.api.crafting.ItemStorage;
19-
import com.minecolonies.api.research.effects.AbstractResearchEffect;
2019
import com.minecolonies.api.util.BlockPosUtil;
2120
import com.minecolonies.api.util.ItemStackUtils;
2221
import com.minecolonies.core.colony.buildings.AbstractBuilding;
2322
import com.minecolonies.core.colony.buildings.modules.WorkerBuildingModule;
2423
import com.minecolonies.core.colony.requestsystem.requesters.IBuildingBasedRequester;
25-
import net.minecraft.world.level.block.Blocks;
2624
import net.minecraft.world.item.ItemStack;
25+
import net.minecraft.world.level.block.Blocks;
2726
import org.jetbrains.annotations.NotNull;
2827
import org.jetbrains.annotations.Nullable;
2928

@@ -296,8 +295,7 @@ protected List<IToken<?>> createRequestsForRecipe(
296295
final List<ItemStorage> inputs = recipeRequest.getCleanedInput();
297296
final ItemStack requestStack = recipeRequest.getPrimaryOutput();
298297
final List<ItemStack> secondaryStacks = recipeRequest.getCraftingToolsAndSecondaryOutputs();
299-
final AbstractResearchEffect<Double> researchEffect = manager.getColony().getResearchManager().getResearchEffects().getEffect(CITIZEN_INV_SLOTS, AbstractResearchEffect.class);
300-
final int extraSlots = researchEffect != null ? researchEffect.getEffect().intValue() : 0;
298+
final int extraSlots = (int) manager.getColony().getResearchManager().getResearchEffects().getEffectStrength(CITIZEN_INV_SLOTS);
301299
final int maxSlots = (27 + extraSlots) - (27 + extraSlots) % 8; // retaining 1 slot per row for 'overhead'
302300

303301
int recipeExecutionsCount = (int) Math.ceil((double) count / requestStack.getCount());

src/main/java/com/minecolonies/core/entity/ai/workers/AbstractEntityAIStructure.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ protected IAIState structureStep()
345345
return PICK_UP_RESIDUALS;
346346
}
347347

348-
if (InventoryUtils.isItemHandlerFull(worker.getInventoryCitizen()))
348+
if (!worker.getInventoryCitizen().hasSpace())
349349
{
350350
return INVENTORY_FULL;
351351
}

src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIWorkSifter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ protected IAIState sift()
107107
return getState();
108108
}
109109

110-
if (InventoryUtils.isItemHandlerFull(worker.getInventoryCitizen()))
110+
if (!worker.getInventoryCitizen().hasSpace())
111111
{
112112
return INVENTORY_FULL;
113113
}

src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIWorkSmelter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ protected IAIState checkForImportantJobs()
151151
worker.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY);
152152
}
153153

154-
if (InventoryUtils.isItemHandlerFull(worker.getInventoryCitizen()))
154+
if (!worker.getInventoryCitizen().hasSpace())
155155
{
156156
return INVENTORY_FULL;
157157
}

src/main/java/com/minecolonies/core/entity/ai/workers/production/EntityAIWorkNether.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ protected IAIState decide()
312312
{
313313
return getState();
314314
}
315-
if (InventoryUtils.isItemHandlerFull(worker.getInventoryCitizen()))
315+
if (!worker.getInventoryCitizen().hasSpace())
316316
{
317317
return INVENTORY_FULL;
318318
}
@@ -339,7 +339,7 @@ protected IAIState decide()
339339
*/
340340
protected IAIState leaveForNether()
341341
{
342-
if (InventoryUtils.isItemHandlerFull(worker.getInventoryCitizen()))
342+
if (!worker.getInventoryCitizen().hasSpace())
343343
{
344344
return INVENTORY_FULL;
345345
}

src/main/java/com/minecolonies/core/entity/ai/workers/service/EntityAIWorkCook.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.minecolonies.api.entity.ai.statemachine.states.IAIState;
1313
import com.minecolonies.api.entity.citizen.AbstractEntityCitizen;
1414
import com.minecolonies.api.entity.citizen.VisibleCitizenStatus;
15+
import com.minecolonies.api.inventory.InventoryCitizen;
1516
import com.minecolonies.api.util.*;
1617
import com.minecolonies.api.util.constant.CitizenConstants;
1718
import com.minecolonies.api.util.constant.Constants;
@@ -178,12 +179,12 @@ private IAIState serveFoodToCitizen()
178179
}
179180

180181
final AbstractEntityCitizen citizen = citizenToServe.poll();
181-
final IItemHandler handler = citizen.getInventoryCitizen();
182+
final InventoryCitizen handler = citizen.getInventoryCitizen();
182183
final RestaurantMenuModule module = worker.getCitizenData().getWorkBuilding().getModule(RESTAURANT_MENU);
183184
final Predicate<ItemStack> canEatPredicate = stack -> module.getMenu().contains(new ItemStorage(stack));
184185
final ICitizenData citizenData = citizen.getCitizenData();
185186

186-
if (InventoryUtils.isItemHandlerFull(handler))
187+
if (!handler.hasSpace())
187188
{
188189
for (int feedingAttempts = 0; feedingAttempts < 10; feedingAttempts++)
189190
{

src/main/java/com/minecolonies/core/entity/ai/workers/service/EntityAIWorkHealer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ private IAIState decide()
148148
return FREE_CURE;
149149
}
150150

151-
if (!InventoryUtils.isItemHandlerFull(citizen.getInventoryCitizen()))
151+
if (citizen.getInventoryCitizen().hasSpace())
152152
{
153153
if (hasCureInInventory(disease, worker.getInventoryCitizen()) ||
154154
hasCureInInventory(disease, building.getCapability(ForgeCapabilities.ITEM_HANDLER).orElseGet(null)))
@@ -362,7 +362,7 @@ private IAIState cure()
362362
{
363363
if (InventoryUtils.getItemCountInItemHandler(citizen.getInventoryCitizen(), Disease.hasCureItem(cure)) < cure.getAmount())
364364
{
365-
if (InventoryUtils.isItemHandlerFull(citizen.getInventoryCitizen()))
365+
if (!citizen.getInventoryCitizen().hasSpace())
366366
{
367367
data.triggerInteraction(new StandardInteraction(Component.translatable(PATIENT_FULL_INVENTORY), ChatPriority.BLOCKING));
368368
currentPatient = null;

src/main/java/com/minecolonies/core/research/ResearchEffectManager.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,20 @@ public <W extends IResearchEffect<?>> W getEffect(final ResourceLocation id, @No
3232
@Override
3333
public double getEffectStrength(final ResourceLocation id)
3434
{
35-
if(effectMap.containsKey(id))
35+
final IResearchEffect<?> effect = effectMap.get(id);
36+
if (effect instanceof GlobalResearchEffect)
3637
{
37-
if(effectMap.get(id) instanceof GlobalResearchEffect)
38-
{
39-
return ((GlobalResearchEffect)effectMap.get(id)).getEffect();
40-
}
38+
return ((GlobalResearchEffect) effect).getEffect();
4139
}
4240
return 0;
4341
}
4442

4543
@Override
4644
public void applyEffect(final IResearchEffect<?> effect)
4745
{
48-
if (effectMap.containsKey(effect.getId()))
46+
final IResearchEffect<?> effectInMap = effectMap.get(effect.getId());
47+
if (effectInMap != null)
4948
{
50-
final IResearchEffect<?> effectInMap = effectMap.get(effect.getId());
5149
if (effect.overrides(effectInMap))
5250
{
5351
effectMap.put(effect.getId(), effect);

0 commit comments

Comments
 (0)