Giter Club home page Giter Club logo

simplefarming's Introduction

header

Simple Farming adds the ability to create bushes and vines that can grow and give produce.

For information on developing with this module see the wiki

This module does not contain any content by itself. EdibleFlora, AdditionalVegetables and AdditionalFruits provide content using this module.

simplefarming's People

Contributors

aaron-harris avatar andriii25 avatar cervator avatar darkweird avatar darshan3 avatar dhanjo avatar e-aakash avatar jdrueckert avatar josharias avatar kcirtaptrick avatar keturn avatar marvel0usx avatar mdj117 avatar mjuvekar7 avatar nicolaasjkotze avatar nihal111 avatar oniatus avatar pandacontron avatar pollend avatar qwertygiy avatar rzats avatar sagarg22 avatar skaldarnar avatar smsunarto avatar sufurelite avatar syntaxi avatar th-huck avatar vedant-shroff avatar xrtariq2594 avatar zwliew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simplefarming's Issues

About document work

I'd like to help you with the guidelines and other documents you need. May I help you?

Right-clicking with berry on bush makes berry disappear

To reproduce:
Simply place down a seed on the ground and wait for it to grow (should be a couple of seconds).
When the bush has fully grown just pick a berry off the bush and right click with that berry on the bush. The berry shouldn't disappear but it does anyway even though there's no real reason for that.

What is wrong?
Berry disappears when interacting with a not fully-grown bush.
Appears to be an Apple issue. (the fruit not the brand)

Good luck!

Not being able to plant fruits from Edible Flora

I tested out planting each of the fruits by right clicking while pointing towards dirt. Here is what happened:

  1. Alternate between eating and planting on right click
  • Banana
  • Cherry
  • Carrot
  • Pear
  1. Always eating on right click
  • Apple
  • Blackberry
  • Grape
  • Orange
  • Starfruit

Bushes gotten by /give not growing

The bushes I get through /give aren't growing. If you plan a seed into the ground it does grow.

To reproduce, simply open a world (existing or new, shouldn't matter) and /give some bushes. This can be a cookiebush, but also a Cranberry or whatever berrybush. Place the BLOCK down and use the /give growthcan on it. You'll notice it's not growing/updating the fruit?

Example of what I did:
I ran the give command with as parameter these blocks: MatureCookieBerryBush, CookieBerryBush and CookieBerryBushFull - and also /give MatureBlackBerryBush, BlackBerryBush and BlackBerryBushFull.
I placed them down like on the screenshot (check attachments) and used the can on them. Waiting for them to grow won't work either.
bush

Move content to relevant submodules

This module has a large amount of content and to break it up it should be moved to other sub modules.

Currently the split is as such:

CommonEdibleFlora

This is done

  • Apple
  • Banana
  • Blackberry
  • Carrot
  • Cherry
  • Grape
  • Orange
  • Pear
  • Starfuit

AdditionalFruits

  • Blueberry
  • Cranberry
  • Gojiberry
  • Gooseberry
  • Strawberry
  • Raspberry
  • Guava
  • Peach
  • Pineapple
  • Watemelon
  • Melon
  • Passionfruit
  • Tomato

AdditionalVegetables

  • Potato
  • Cucumber
  • Pumpkin
  • Squash

Convert plants/crops to the correct plant types.

With the new plant types added,

  • Trees
  • Vines

We should probably also convert plans/crops that should belong to those new plant types but are still in "bush" plant types. I'll create a list of plans that should be considered for conversion.

  • Orange Bush -> Orange Tree
  • Grape Bush -> Grape Vine
  • Pear Bush -> Pear Tree
  • Watermelon Bush -> Watermelon Vine

Can plant a bush on the block you're standing on

What you were trying to do

Planting bushes on the block I was standing on

What actually happened

Planting bushes on the block you're standing means they will grow around you. The result is you are inside of the block once it fully grows. This may be intended, if it is there is a lack of graphic when you're consumed by the plant!

How to reproduce

  • Step 1: Get at least 2 bush seeds/consumables (same thing)
  • Step 2: Plant one at your feet and let it fully grow
  • Step 3: Plant another one on top of the fully grown plant
  • Step 4: Wait for the second plant to grow around you. You are then consumed by the plant!

Log details and game version

2,250 alpha 2018-11-23T19:47:46Z

Computer details

Windows 10
Modules:
Core
EdibleFlora
Fluid
Hunger and Food
ModuleTestingEnvironment
Simple Farming
Thirst and Drink

I have a proposal for the program.

I am a Korean who is interested in this program. I'd like to help you complete the program. Can I suggest ideas on how to grow plants and the differentiation of plants? If you are interested in the Korean version, you can translate it into Korean. How is it?

Genome Integrations

Now that we have a rudimentary Genome module more or less in place, we should start working on integrating Genome into SimpleFarming.

A high-level description of this integration and its goals can be found in #46. Note, however, that some aspects of that issue may be outdated. #57 aims at getting started with this integration, but needs a major rework due to the recent refactor (in my opinion, we should just close it and start from scratch, reusing code from it where possible).

This issue aims at proposing a rough series of small goals leading to a complete, functioning implementation.

  • Implement simple color variation in plants/bushes. There should be a way to specify two variants for a plant. The plant's gene sequence should contain two genes each of which can encode one of the two variants. One variant is dominant, while the other is recessive, and thus the color of the plant can be determined by simple dominance.
  • Create a "seed mixer" which allows you to cross seeds from two different plants (a similar item was implemented in #57; code could be reused from there). We might want this to be in another module, perhaps EdibleFlora, to comply with the refactor (consult @jellysnake).
  • Integrate SimpleFarming and Genome with the Hunger module, so that the "filling" factor of fruits can be determined and varied genetically. Partially implemented in #57.
  • Implement genetic mutations in a meaningful way.

Edit: Some specific details, as discussed with @jellysnake

  1. Changes to SimpleFarming:
    • Create new event called beforeProduceCreated
    • Fire this event whenever a new seed/plant item is created (or any other situation where a GenomeComponent should be added to some entity)
    • Note that SimpleFarming does not need to have Genome dependency
  2. Changes to EdibleFlora:
    • Create a GenomeAuthoritySystem which is active only when Genome is enabled
    • Listen for the beforeProduceCreated event in this system, and add the necessary GenomeComponents to the appropriate entities when such an event is received.
    • Create a seed mixer which applies appropriate BreedingAlgorithms to mix two seeds to give one daughter seed.
  3. Define effects of genes on specific traits (eg color) in the appropriate class(es)

Hard crash when destroying a Joshaberry Bush due to missing berryseed.

Summary:

When a world is created with the Josharias Survival template, the game will crash to the desktop when the player destroy a Joshaberry Bush.

Configuration:

Game: v5.0.0, Alpha-20, build6, 2021-07-05
Launcher: 4.4.0
OS: Windows 8.1 x64, English

Steps:

  1. Start a game using Josharias Survival template.
  2. Once in the game, look for a Joshaberry Bush.
  3. Destroy the Joshaberry Bush.
    Observe: Game crash to desktop.
    Expectation: The player will receive a berry seed or something.

Other Tests:

  1. PASS: Destroying other bushes.

Log:

23:25:02.243 [main] ERROR o.t.t.BaseTintOverlayProducer - Image: SimpleFarming:SimpleFarming#berryseed not found
23:25:02.244 [main] ERROR o.t.engine.core.TerasologyEngine - Uncaught exception, attempting clean game shutdown
java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Unknown Source)

image

Variation through Genetics

I am writing this post to suggest a neat new feature that could be added to this module: the addition of variety through simple genetics.

Currently, plants in the SimpleFarming module have very fixed properties that do not change much when new plants are grown. This can be improved by using simple genetics to produce variety in various properties of plants. The resultant genetic system could be used to create hybrids of various seeds, breed animals (when animals are added), etc.

Each seed (and thus each plant) should have a certain "genome" component, which has binary properties which can be one of two variants: one dominant and one recessive (somewhat like real life genetics). These traits will define hereditary features of the plant like color, height (tall/short), thickness (thick/thin), etc. Many of these properties may not seem binary, but once you know whether a tree is tall or short, you can add some noise to a pre-defined height corresponding to "tall" to get a unique-ish height. This could be further improved by adding support for continuous traits represented by floating point numbers (see Genetic Algorithms).

A system must also be created which will be able to take two genome components and create a hybrid from them. The basic outline of this process is to cross the two components using a Punett Square or something similar to find all possible outcomes with appropriate weights, and then to pick a random outcome from the weighted list. This system can lead to interesting gameplay options, such as creating hybrid seeds which have good traits of different kinds of seeds, and thus produce better stuff (see Hybrid Seeds).

Note that the mechanism for this already exists in a more abstract and general manner in the Genome module, which provides an infrastructure to create genes and cross them using different breeding algorithms. In fact, since the Genome module already contains a lot of the mechanism required to implement this system, it may make sense to extend the Genome module into a more specific system instead, and then use it to implement genetic variation in the SimpleFarming module.

This could also be extended to an animal husbandry module which could then be used to make interesting hybrid animals such as sheep which yield more wool of a desired color, or maybe cows which produce more milk and give more leather. The possibilities are nearly endless.

Question - Creating a new item?

Hello,

I need to create the 3D object?
What program can I build objects?
I watched you need programming in Java.

Could anyone guide me?
Thanks!

MTE tests fail to resolve required modules

The tests fail with the message

java.lang.IllegalStateException: Modules only available if resolution was successful

  • at com.google.common.base.Preconditions.checkState(Preconditions.java:459)
  • at org.terasology.module.ResolutionResult.getModules(ResolutionResult.java:47)
  • at o.t.mte.TestingStateHeadlessSetup.createGameManifest(TestingStateHeadlessSetup.java:70)
  • at o.t.engine.subsystem.headless.mode.StateHeadlessSetup.init(StateHeadlessSetup.java:112)
  • at o.t.engine.TerasologyEngine.switchState(TerasologyEngine.java:584)
  • at o.t.engine.TerasologyEngine.changeState(TerasologyEngine.java:567)
  • at o.t.mte.ModuleTestingEnvironment.createHost(ModuleTestingEnvironment.java:459)
  • at o.t.mte.ModuleTestingEnvironment.setup(ModuleTestingEnvironment.java:168)
  • at o.t.mte.MTEExtension.beforeAll(MTEExtension.java:85)

SimpleFarming probably isn't the only one with this problem, but I'll use this until we know better.

Seeming infinite loop possible in one of the MTE tests?

This might be more about the MTE than any one test here, but I did see Jenkins trying to test a SimpleFarming PR twice in a row eventually get stuck just printing [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache over and over forever, apparently doing so as that logs once per tick, and nothing else was happening.

It might trigger based on the world seed causing something the MTE can't handle? As it seems to happen inconsistently. I've seen similar rare infinite loops elsewhere, will start trying to gather more details.

The test here resulted in this logging on pastebin

Snippet right as it started:

  15:59:51.016 [Test worker] INFO org.terasology.world.block.internal.BlockManagerImpl - Registered Block CoreAssets:Stone with id 128
    15:59:51.017 [Test worker] INFO org.terasology.world.block.internal.BlockManagerImpl - Registered BlockFamily[symmetric,CoreAssets:BigBrownShroom]
    15:59:51.017 [Test worker] INFO org.terasology.world.block.internal.BlockManagerImpl - Registered Block CoreAssets:BigBrownShroom with id 129
    15:59:51.018 [Test worker] INFO org.terasology.world.block.internal.BlockManagerImpl - Registered BlockFamily[freeform,CoreAssets:CoalOre]
    15:59:51.018 [Test worker] INFO org.terasology.world.block.internal.BlockManagerImpl - Registered Block CoreAssets:CoalOre with id 130
    15:59:51.024 [Test worker] DEBUG org.terasology.engine.modes.StateLoading - ${engine:menu#catching-world}
    15:59:56.028 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Registering event handler org.terasology.rendering.nui.internal.NUIManagerInternal
    15:59:56.030 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Found method: public void org.terasology.rendering.nui.internal.NUIManagerInternal.mouseWheelEvent(org.terasology.input.events.MouseWheelEvent,org.terasology.entitySystem.entity.EntityRef)
    15:59:56.032 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Found method: public void org.terasology.rendering.nui.internal.NUIManagerInternal.mouseAxisEvent(org.terasology.input.events.MouseAxisEvent,org.terasology.entitySystem.entity.EntityRef)
    15:59:56.032 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Found method: public void org.terasology.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(org.terasology.input.events.MouseButtonEvent,org.terasology.entitySystem.entity.EntityRef)
    15:59:56.032 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Found method: public void org.terasology.rendering.nui.internal.NUIManagerInternal.bindEvent(org.terasology.input.BindButtonEvent,org.terasology.entitySystem.entity.EntityRef)
    15:59:56.033 [Test worker] DEBUG org.terasology.entitySystem.event.internal.EventSystemImpl - Found method: public void org.terasology.rendering.nui.internal.NUIManagerInternal.keyEvent(org.terasology.input.events.KeyEvent,org.terasology.entitySystem.entity.EntityRef)
    15:59:56.082 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:56.085 [Test worker] INFO org.terasology.logic.console.ConsoleImpl - [NOTIFICATION] Identity storage service: No configuration data is present, staying logged out.
    15:59:57.073 [Test worker] ERROR org.terasology.world.block.internal.BlockManagerImpl - Family not available: CoreBlocks:Dirt
    15:59:57.106 [Test worker] WARN org.terasology.engine.internal.TimeBase - Delta too great (1072), capping to 1000
    15:59:57.154 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.160 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.201 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.205 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.213 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.228 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.232 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.245 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    15:59:57.249 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache

Also maybe worth noting was the occasional chunk generator thread fail over some ore generation issue (which itself is a bit of a "huh" for SimpleFarming):

    16:00:04.520 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    16:00:04.527 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    16:00:04.532 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    16:00:04.534 [Chunk-Generator-2] ERROR org.terasology.utilities.concurrency.TaskProcessor - Error in thread Chunk-Generator-2
    java.lang.NullPointerException: null
    	at org.terasology.oreGeneration.generation.PocketDensityOreGen.canReplaceBlock(PocketDensityOreGen.java:39)
    	at org.terasology.oreGeneration.generation.OreRasterizer.generateChunk(OreRasterizer.java:52)
    	at org.terasology.world.generation.WorldImpl.rasterizeChunk(WorldImpl.java:64)
    	at org.terasology.world.generation.BaseFacetedWorldGenerator.createChunk(BaseFacetedWorldGenerator.java:75)
    	at org.terasology.world.chunks.localChunkProvider.LocalChunkProvider$1.run(LocalChunkProvider.java:517)
    	at org.terasology.utilities.concurrency.TaskProcessor.run(TaskProcessor.java:50)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    16:00:04.534 [Chunk-Generator-7] ERROR org.terasology.utilities.concurrency.TaskProcessor - Error in thread Chunk-Generator-7
    java.lang.NullPointerException: null
    	at org.terasology.oreGeneration.generation.PocketDensityOreGen.canReplaceBlock(PocketDensityOreGen.java:39)
    	at org.terasology.oreGeneration.generation.OreRasterizer.generateChunk(OreRasterizer.java:52)
    	at org.terasology.world.generation.WorldImpl.rasterizeChunk(WorldImpl.java:64)
    	at org.terasology.world.generation.BaseFacetedWorldGenerator.createChunk(BaseFacetedWorldGenerator.java:75)
    	at org.terasology.world.chunks.localChunkProvider.LocalChunkProvider$1.run(LocalChunkProvider.java:517)
    	at org.terasology.utilities.concurrency.TaskProcessor.run(TaskProcessor.java:50)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    16:00:04.538 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    16:00:04.541 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache
    16:00:04.549 [Test worker] DEBUG org.terasology.world.chunks.localChunkProvider.LocalChunkProvider - Compacting cache

Maybe the MTE test somehow gets stuck just trying to generate world forever and just once in a while that results in a chunk that fails due to ore gen?

BasicCrafting and Genome at GenomeAuthoritySystem

Genome and BasicCrafting modules is optional dependencies for SimpleFarming.
Both modules using at GenomeAuthoritySystem,
then GenomeAuthoritySystem loads(works) when both modules is active.

Suggestions:

  1. extract BasicCrafting usage from GenomeAuthoritySystem, if BasicCrafting and Genome can be using separately there.
  2. or enrich class with java docs, which explain that this system using both modules together only.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.