Extra Hard Mode

Extra Hard Mode

63.1k Downloads

Farming mechanics testing

SlimeDog opened this issue · 39 comments

commented

Spigot 1.13.1 latest
EHM 1.13-alpha

The following farming mechanics are enabled on my servers:

  1. Water sources cannot be moved with buckets.
  2. Crops die slowly, turn into dead bushes, and their farmland turns into dirt.
  3. Crops cannot be grown in deserts.
  4. Crops are broken by snowfall. A cold-weather farm can be protected with a roof.
  5. Netherwart cannot be farmed.
  6. Sheep grow only white wool.
  7. Crowded animals will die off to prune their herds.
  8. Animals drop no experience.

Test results:

  1. FAIL: Warning occurs when water is drawn with a bucket, but the water can be placed.
  2. FAIL: There is no evidence of crop death.
  3. FAIL: Crops can be grown in desert and desert_hills biomes.
  4. Not tested.
  5. FAIL: Netherwart can be farmed.
  6. FAIL: /summon sheep produces sheep of all colors. Naturally spawned sheep of all colors inhabit the world.
  7. UNCLEAR: Overcrowded sheep (in a fenced enclosure) exhibited lots of blood effects, but the number of sheep didn't seem to change.
  8. Confirmed.
commented

Oh yea, I commented out the portion that changes the water source block into a non-source block. I'm not sure how to do it since in 1.13, WATER is a single material. And there doesn't seem to be a Water BlockData type...?

commented

Yep and yep. I use another plugin that renders water acidic, so that adds to the extra hardness.

commented

Regarding sheep - the "only regrow white wool" means exactly that - sheep will only "regrow" white wool after being sheared. The color isn't changed on spawn, but on the SheepRegrowWoolEvent

Now if the config option is inaccurately worded... well that's wonderful. Though, technically all sheep spawn with wool already present (idk about baby sheep), so it'd be technically correct I guess...

commented

Regarding nether wart farming, it seems that nether wart, when broken, should only drop exactly 1 nether wart instead of multiple. (Though, it should also prevent them from placing nether wart too...)

commented

Regarding sheep - the "only regrow white wool" means exactly that - sheep will only "regrow" white wool after being sheared. The color isn't changed on spawn, but on the SheepRegrowWoolEvent

Oh! Well, never mind. :)

commented

Regarding nether wart farming, it seems that nether wart, when broken, should only drop exactly 1 nether wart instead of multiple. (Though, it should also prevent them from placing nether wart too...)

Agreed. At present, it grows (ages), and once aged, drops multiple netherwart items.

commented

and once aged, drops multiple netherwart items.

Ok so first what do you mean by farming, you mean breaking it? Placing it? And in this quote, do you mean it drops automatically or after the player breaks it?

I only see NETHER_WART and NETHER_WART_BLOCK, the former I'm assuming refers only to the item and the latter I'm assuming is the block I'd believe would include all stages...

commented

Let me clarity. "Netherwart cannot be farmed" could be interpreted in a number of ways:

  • It cannot be planted (if you happen to have some from, say, the nether). FAIL: It can be planted on soul sand, as usual.
  • It will not grow (age). FAIL: It ages from 0 when planted to 3 when fully mature.
  • It cannot be harvested. FAIL: It can be harvested, and drops multiple nether_wart items. Only one item is planted, but four are harvested when fully mature.

All of the above refer to the item minecraft:nether_wart. minecraft:nether_wart_block is a new block, which is crafted from 9 nether_wart items.

commented

Ah, that explains a lot, thanks. Is nether_wart_block a 1.13 thing? If so, then I suspect that NETHER_WART_BLOCK was used in pre-1.13 to refer to the actual nether wart, similar to how BEETROOT_BLOCK differentiated from the BEETROOT item (BEETROOT_BLOCK no longer exists as a Material enum).

commented

As for weak crops in general, this may also be a 1.13 thing. I went ahead and changed the data check (which is deprecated) from value 7 or greater to value 2 or greater.

Desert conditions are harsher but actually do not guarantee death (Internally in code, it's not a guaranteed crop death, but its chances to die are increased.)

commented

Ah, that explains a lot, thanks. Is nether_wart_block a 1.13 thing? ...

nether_wart_block was added in MC 1.10, according to https://minecraft.gamepedia.com/Nether_Wart_Block

commented

As for weak crops in general, this may also be a 1.13 thing. I went ahead and changed the data check (which is deprecated) from value 7 or greater to value 2 or greater.

Desert conditions are harsher but actually do not guarantee death (Internally in code, it's not a guaranteed crop death, but its chances to die are increased.)

I will test again when the next release drops.

commented

nether_wart_block was added in MC 1.10

Hmmmm..... not sure then why it was checking for NETHER_WART_BLOCK. If I made that change years ago, that was quite ignorant of me... I may have assumed it was similar to BEETROOT_BLOCK.

commented

The following farming mechanics are configured on my servers:

  Farming: 
    Weak Crops:
      Enable: true
      Loss Rate: 25
      Infertile Deserts: true
      Snow Breaks Crops: true
    Cant Craft Melonseeds: true
    No Bonemeal On Mushrooms: true
    No Farming Nether Wart: true
    Sheep Grow Only White Wool: true
    Squid Only Spawn In Ocean: true
    Buckets Dont Move Water Sources: true
    Animal Experience Nerf: true
    Iron Golem Nerf: true
    Animal Overcrowding Control:
      Enable: true
      # Maximum amount of animals allowed in a small area before they start dying
      Threshold: 10 

Test results:

  • Succeed: Melon seeds cannot be crafted.
  • Succeed: Bonemeal does not cause mushrooms to grow. Tested: brown_mushroom, red_mushroom.
  • Succeed: Animals do not drop experience. Tested: cow, pig, sheep. (Hostiles do drop experience.
  • Succeed: Nether wart cannot be farmed in overworld or nether world. Is nether world restriction intended (so that player has to find natural nether wart?
  • FAIL[1]: There is no evidence of crop death. All crops in the test were planted long ago, so are at maximum age (either 3 or 7 depending on crop).
  • PARTIAL FAIL[2]: Crops grown in desert die with some small probability. Melon did not grow. Once at maturity, the crops do not die. Waited more than 90 minutes IRL. Tested: beetroot, carrot, melon, potato, pumpkin, wheat.
  • FAIL[3]: Snow does not appear to break crops. Waited more than 20 minutes. Tested: wheat.
  • FAIL[4]: Sheared sheep do not grow wool at all. Waited more than 90 minutes IRL.
  • FAIL[5]: Squid can be spawned in confined water. Test: /summon squid.
  • FAIL[6]: Warning occurs when water is drawn with a bucket, but the water can be placed.
    Tested: creeper, spider.)
  • FAIL[7]: Overcrowded animals (in 5x5 fenced enclosure) exhibited lots of blood effects when the count exceeded the limit, but the excess animals were not despawned. Final count in enclosure: 17. Tested: sheep, via summon command.
  • Untested[8]: Iron golem nerf. Note that entity name changed to villager_golem in 1.13.

Feature requests:

  • IMHO, desert crops do not die fast enough to discourage desert farming; the probability should be much higher.
  • Bonemeal should not improve crop growth in desert (and other hot) biomes.
commented

Squid can be spawned in confined water. Test: /summon squid.

Will check later, but I believe the spawn reason is checked for a natural spawn, else it ignores. It basically checks if it was spawned in an ocean biome or not iirc.

Overcrowded animals (in 5x5 fenced enclosure) exhibited lots of blood effects when the count exceeded the limit, but the excess animals were not despawned.

Animals are damaged, not despawned. It should be applying damage every 10 seconds or so (which should also cause the animals to scram a little, in an attempt to spread out themselves. Eventually the damage should kill them though. You may want to check if plugins are preventing damage from animals to occur (since we set the damage source as the animal itself when calling animal#damage)

commented

3.13 alpha 3 available, just only a couple changes (included the suggested soft blocks, and hopefully the water source evaporates now).

commented

FAIL[4]: Sheared sheep do not grow wool at all. Waited more than 90 minutes IRL.

This event is not canceled by EHM.

commented

No idea what was going on with the mass of sheared sheep above. I just tested a single sheared sheep, and it grew wool as expected.

commented

Note that bucket is empty in inventory until some manipulation occurs; it does contain water.

?? no idea what you mean here

No idea what was going on with the mass of sheared sheep above. I just tested a single sheared sheep, and it grew wool as expected.

Perhaps you logged out, causing the chunks (and entities within) to unload, and then logged in later to check?

commented

UPDATED: This comment referred to alpha2.

When I right-click the bucket in-hand to empty it, the event is cancelled, but the bucket in-hand is empty. If I do some inventory manipulation (open inventory, for example) the water/lava reappears in the bucket.

I stayed in the chunk with a corral full of 20 sheep, for 90 minutes, waiting for them to grow wool. They did not. I will try to reproduce it.

commented

UPDATED: This comment referred to alpha2.

Water source evaporation confirmed. Note that bucket is empty in inventory until some manipulation occurs; it does contain water.

commented

They may need grass or something to regrow wool. Idk.

As for the bucket thing, it shouldn't be canceled - so are you saying the bucket is never actually emptied?

commented

UPDATED: This comment referred to alpha2.

The bucket is emptied. Temporarily. After any inventory manipulation, it is full again.

commented

So it's not actually emptied.

commented

Apologies. It is visually emptied. Not actually emptied.

commented

So I looked at the code for this a couple days ago, and it isn't canceling the empty event. It does cancel fill events when a player attempts to re-pickup the water source block a tick before it turns into a non-source block. Can you confirm with just EHM on? Can you also empty that seemingly-filled bucket?

commented

Also, the empty event shouldn't be canceled at all... It'll print a message but it still places the water block yes?

commented

UPDATED: This comment referred to alpha2.

OK, starting over. I may have conflated some of the above with another plugin that affects water buckets. That is now disabled.

Spigot 1.13.2 latest
EHM 1.13.alpha.2
biome: Beach
surface: sand

ExtraHardMode.Farming.Buckets Dont Move Water Sources: true

When I empty a water_bucket, a water source block is placed and water spreads to adjacent blocks. I am then holding an empty bucket. The water does not evaporate; I waited for 20 IRL minutes.

I can pick up the water source block with the empty bucket. The water evaporates, and I am then holding a water_bucket.

commented

Ok, so water source doesn't evaporate but bucket is indeed emptied, ok.

Does F3 debug info show you anything about water level?

commented

UPDATED: This comment referred to alpha2.

Targeted Fluid
minecraft:flowing_water
falling: false
level: 6 (at the source block) to 1 (at the periphery)
#minecraft:water
commented

Mk, Levelled BlockData is inverted I guess, with 0 being defined as the source, and 1-7 as the varying water heights. https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/Levelled.html

So the source block shouldn't have any level at all in F3 debug, it should just be "water." The physics should be updating for it, unless the server is specifically checking for it to be not present anymore...? Because you shouldn't be able to pick it up either.

Also can you try with alpha 3 since that's where I actually set the blockdata.

commented

UPDATED: This comment referred to alpha2.

CORRECTED:
At the source block:

Targeted Fluid
minecraft:water
falling: false
#minecraft:water

Adjacent to the source block on cardinal points (ie, on X and Z axes):

Targeted Fluid
minecraft:flowing_water
falling: false
level: 7
#minecraft:water

Adjacent to the source block on diagonals:

Targeted Fluid
minecraft:flowing_water
falling: false
level: 6
#minecraft:water

At the periphery:

Targeted Fluid
minecraft:flowing_water
falling: false
level: 1
#minecraft:water

I am able to pick up the source block water.

commented

Ok, so then you need to update to alpha 3 as I commented here 15 days ago :p

commented

Btw, if you're interested I can give you access to the issue tracker so you can add each feature to fix as a card in the project to-do column (which I can convert to issues if further discussion is required). Would likely make it easier to track the progress of solving each issue instead of several lumped in one issue.

commented

I missed the alpha3 comment. ☹️

This issue is resolved in 3.12-alpha3:

  • Water can be picked up in a bucket.
  • Water can be placed, but immediately evaporates. Bucket remains empty.

This is the issue tracker, right? We should have unbundled this one ages ago. I will post issues separately henceforth.

commented

Yes. But I don't think you can automatically add into this: https://github.com/MLG-Fortress/ExtraHardMode/projects/2

commented

As for mob crowding, it seems to be happening on mine. They are indeed taking damage. It took a while but they eventually started dying out within a couple minutes lol.

commented

According to #219 this either wasn't solved or another fix I made later messed it up.

Just noting it here for reference since I didn't recall all of the "waterlogged" blocks stuff that apparently I either didn't modify or implement properly before.

commented

According to #219 this either wasn't solved or another fix I made later messed it up.

Just noting it here for reference since I didn't recall all of the "waterlogged" blocks stuff that apparently I either didn't modify or implement properly before.