-
Posts
110 -
Joined
-
Last visited
Posts posted by cinsiian
-
-
ok thank you do i have to make the capability by myself or does it already exists in vanilla?
-
Can I use
getCooledAttackStrength
In this event?
-
How can i check if a player attack is fully charged?
I am doing this in a LivingHurtEvent.
Thank you
-
6 minutes ago, diesieben07 said:
Do not lookup the Field every time, do it once and store it in a static final field.
What do you mean every time? Isnt that supposed to just go in the mod's constructor?
7 minutes ago, diesieben07 said:Do not use getClass. Use a class literal (Foo.class).
Isn't getClass the only way to get the class from the object?
-
public void overrideMaxDefenceValue(double newValue) throws NoSuchFieldException, SecurityException, IllegalAccessException { Field value = SharedMonsterAttributes.ARMOR.getClass().getDeclaredField("maximumValue"); value.setAccessible(true); value.set(value, newValue); }
Is this correct?
-
51 minutes ago, diesieben07 said:
RangedAttribute#maximumValue
but if i do that wouldnt it override every single attribute?
-
Im not familiar with reflections but i tried to replace the field without success:
private void setMaxDefenseValue() throws NoSuchFieldException, SecurityException, IllegalAccessException { Class<SharedMonsterAttributes> attributesArmor = SharedMonsterAttributes.class; Field fieldArmor = attributesArmor.getField("ARMOR"); IAttribute attribute = (new RangedAttribute((IAttribute)null, "generic.armor", 0.0D, 0.0D, 1024.0D)).setShouldWatch(true); Object armor = fieldArmor.get(attribute); fieldArmor.set(attribute, armor); }
I called this in the constructor of my mod. Totally not sure this is the not correct way
-
Is there a way to get the defense higher than the 30 limit and why theres a limit here?
-
Ok i actually managed to do it without the capability:
if(headHealth > 0) { //headHealth is the enchantment level String id = "head-health-boost-enchantment"; boolean isAlreadyApplied = false; for(AttributeModifier modifer : utils.MAX_HEALTH().getModifiers()) { //utils.MAX_HEALTH() returns the max health attribute if(modifer.getName().equals(id)) { isAlreadyApplied = true; } } if(!isAlreadyApplied) { AttributeModifier newModifier = new AttributeModifier(id, headHealth * 2, Operation.ADDITION); utils.MAX_HEALTH().applyModifier(newModifier); } } else { for(AttributeModifier modifer : utils.MAX_HEALTH().getModifiers()) { if(modifer.getName().equals("head-health-boost-enchantment")) { utils.MAX_HEALTH().removeModifier(modifer); } } }
Now modifing the defense seems that theres a 30 limit. Can I avoid that?
-
Ok i got it work but do i need to create a capability just to save if the effect is applied?
-
1 minute ago, diesieben07 said:
How do you modify the value? Show your code.
@SubscribeEvent public static void update(LivingUpdateEvent event) { LivingEntity entity = event.getEntityLiving(); LivingEntityUtils utils = new LivingEntityUtils(entity); int bonus = utils.calculateHealthBonus(); //The bonus double baseHealth = entity.getAttribute(SharedMonsterAttributes.MAX_HEALTH).getBaseValue(); entity.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(baseHealth + bonus); }
1 minute ago, diesieben07 said:No idea what you are talking about.
Save the default max healths
-
Just now, diesieben07 said:
No, this would not happen, because the base value does not include the attribute modifiers, as indicated by its name.
It does, I just tested it in my world and the health keeps increasing
1 minute ago, diesieben07 said:No. An entity type represents the abstract concept of an entity type (like "all zombies"). LivingEntity is a base class for actual entities ("this specific zombie"). There is no useful way to convert from EntityType to LivingEntity.
So I have the put the values manually?
-
15 hours ago, diesieben07 said:
I am not sure why you think this would "become a loop". But doing this is the way to get the "base value" for the max health. And it should work fine in LivingUpdateEvent.
Yes it is:
Update 1 ===: 20 + 2(bonus)
Update 2 ===: 22 + 2(bonus)
ec..
It gets modified and the health will increase infinitely. I tested it and yea, this is the problem.
Just asking if i can cast EntityType to LivingEntity
-
I found this method:
entity.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue
but i need to get the entity's default max health.
So i created a HashMap<LivingEntity, Double> to store the values. I would put the entries during the registry event<EntityType>.
Is there a way to cast EntityType to LivingEntity so i can get the attribute when the game loads?
I cant just use entity.getAttribute(SharedMonsterAttributes.MAX_HEALTH).getBaseValue() because im in a LivingUpdateEvent and it will become a loop
-
On 11/11/2019 at 3:08 AM, nil said:
applyEntityAttributes
I can't find this field in the entity class. Are you sure its on 1.14?
-
How can I set a living entity max health and a living entity defense? I need that to calculate a health bonus and a defense bonus.
Thank you
-
Thank you, i will do that. But what if its replaced by another mod? Maybe with the event would be better.
-
Does it needs the file name?
-
-
How can I remove a vanilla loot pool?
It needs a name but i cant figure out wich name:
@SubscribeEvent public static void loot(LootTableLoadEvent event) { ResourceLocation iron = new ResourceLocation("minecraft", "blocks/iron_ore"); ResourceLocation gold = new ResourceLocation("minecraft", "blocks/gold_ore"); if(event.getName().equals(iron)) { event.getTable().removePool("minecraft:iron_ore"); event.getTable().addPool(LootPool.builder().addEntry(TableLootEntry.builder(new ResourceLocation(ortonogeum.INSTANCE.assets.name, "blocks/ore_iron"))).build()); } if(event.getName().equals(gold)) { event.getTable().addPool(LootPool.builder().addEntry(TableLootEntry.builder(new ResourceLocation(ortonogeum.INSTANCE.assets.name, "blocks/ore_gold"))).build()); } }
event.getTable().removePool
Thank you so much
-
otherwise does a MinecraftForge.addGrassSeed void exists in 1.14.4?
-
Okay, I will do that for now. In the future if they will add the events i will use them.
-
Is it possible to replace the loottable file replacing it in data/minecraft/loot_tables?
-
So at the moment there is not an event similiar to HarvestDropsEvent?
[1.14.4] Check if attack is fully charged
in Modder Support
Posted
bp