terasology / simplefarming Goto Github PK
View Code? Open in Web Editor NEWEasy to understand growing of foods
Easy to understand growing of foods
Breaking a plant with produce will only drop the seed without the produce.
Tested with TestBerry plant.
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.
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!
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?
Planting bushes on the block I was standing on
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!
2,250 alpha 2018-11-23T19:47:46Z
Windows 10
Modules:
Core
EdibleFlora
Fluid
Hunger and Food
ModuleTestingEnvironment
Simple Farming
Thirst and Drink
Genome
and BasicCrafting
modules is optional dependencies for SimpleFarming
.
Both modules using at GenomeAuthoritySystem
,
then GenomeAuthoritySystem
loads(works) when both modules is active.
Suggestions:
BasicCrafting
usage from GenomeAuthoritySystem
, if BasicCrafting
and Genome
can be using separately there.I tested out planting each of the fruits by right clicking while pointing towards dirt. Here is what happened:
When a world is created with the Josharias Survival template, the game will crash to the desktop when the player destroy a Joshaberry Bush.
Game: v5.0.0, Alpha-20, build6, 2021-07-05
Launcher: 4.4.0
OS: Windows 8.1 x64, English
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)
See latest test report, 3 out of 4 tests fail with an NPE in GenomeAuthoritySystem.onProduceCreated.
This test failure is reproducible locally.
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?
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.
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:
This is done
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.
Edit: Some specific details, as discussed with @jellysnake
beforeProduceCreated
GenomeAuthoritySystem
which is active only when Genome is enabledbeforeProduceCreated
event in this system, and add the necessary GenomeComponents to the appropriate entities when such an event is received.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.
With the new plant types added,
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.
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!
I'd like to help you with the guidelines and other documents you need. May I help you?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.