Androids can not have some of status effects
This commit is contained in:
parent
4b94c64b4e
commit
73b4c161ac
@ -63,6 +63,8 @@ public class OverdriveThatMatters {
|
||||
FMLJavaModLoadingContext.get().getModEventBus().register(Registry.BlockEntities.class);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().register(Registry.Menus.class);
|
||||
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(AndroidCapability::registerEffects);
|
||||
|
||||
// LOGGER.info("Registered event handlers");
|
||||
|
||||
CREATIVE_TAB = new CreativeModeTab("otm") {
|
||||
|
@ -4,6 +4,8 @@ import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.effect.MobEffect;
|
||||
import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.food.FoodData;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@ -15,14 +17,17 @@ import net.minecraftforge.energy.CapabilityEnergy;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import net.minecraftforge.event.entity.living.LivingEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.network.AndroidCapabilityChangePacket;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class AndroidCapability implements ICapabilityProvider, IAndroidCapability, INBTSerializable<CompoundTag> {
|
||||
protected final LivingEntity ent;
|
||||
@ -34,6 +39,23 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit
|
||||
private BigDecimal network_energy_max = new BigDecimal(-1);
|
||||
private ItemStack network_battery = ItemStack.EMPTY;
|
||||
|
||||
public static final Set<MobEffect> UNAFFECTED_EFFECTS = new HashSet<>();
|
||||
|
||||
public static void registerEffects(final FMLCommonSetupEvent event) {
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.CONDUIT_POWER);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.HEAL);
|
||||
// maybe it makes things go haywire idk
|
||||
// UNAFFECTED_EFFECTS.add(MobEffects.HARM);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.REGENERATION);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.WATER_BREATHING);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.POISON);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.WITHER);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.HEALTH_BOOST);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.ABSORPTION);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.SATURATION);
|
||||
UNAFFECTED_EFFECTS.add(MobEffects.DOLPHINS_GRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateNetworkState() {
|
||||
network_energy = new BigDecimal(-1);
|
||||
@ -147,6 +169,10 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit
|
||||
if (ent.getAirSupply() < ent.getMaxAirSupply())
|
||||
ent.setAirSupply(ent.getMaxAirSupply());
|
||||
|
||||
for (var effect : UNAFFECTED_EFFECTS)
|
||||
if (ent.hasEffect(effect))
|
||||
ent.removeEffect(effect);
|
||||
|
||||
if (!battery.isEmpty()) {
|
||||
BigDecimal demand = energy_stored_max.subtract(energy_stored, MatteryCapability.ROUND_RULES);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user