Giter Club home page Giter Club logo

minecolonies's Introduction

CLA assistant Build Status Crowdin

mcol logo

MineColonies

MineColonies is an interactive building mod that allows you to create a thriving town within Minecraft. It lets your leadership skills soar by providing you with everything you need to build your kingdom. MineColonies gives you the flexibility to create a colony as unique as every player. With so many options, you'll create a different colony every time, adapt it to any biome, build inside a mountain, on top of one, under the ocean, or in the sky.

The limit is your imagination!

MineColonies features NPC workers such as Builders, Farmers, Fishers, Foresters, Guards, Miners, Smelters, Bakers, Cooks, Couriers, five types of animal herders, Composters, and many more, with even more being developed and added as the mod grows.

It also includes specialized buildings such as the Warehouse, House, Town Hall, Barracks, Library, University, and even the School.

Website:

https://www.minecolonies.com/

For Users

You can find all our versions on Curseforge:

https://www.curseforge.com/minecraft/mc-mods/minecolonies/files/all

If you want to chat with the developers and join our amazing community:

https://discord.minecolonies.com

Creating an Issue

MineColonies crashes every time? Have a suggestion? Found a bug? Create an issue now!

  1. Make sure your issue hasn't already been answered or fixed. Also think about whether your issue is a valid one before submitting it.
  2. Go to the issues page.
  3. Click New Issue
  4. Choose which type of issue you want to create.
  5. Fill in the form. Don't leave anything out!
  6. Click Submit New Issue and wait for a response!

For Developers

Compiling MineColonies

IMPORTANT: Please report any issues you have, as there might be some problems with the documentation! Also make sure you know EXACTLY what you're doing! It's not our fault if your OS crashes, becomes corrupted, etc.

Setup Java

The Java JDK is used to compile MineColonies.

  1. Download and install the Java JDK 8.
    • Windows: Choose OpenJDK 8 (LTS) version and HotSpot JVM, then click the latest release button. After the download is complete, open the file, accept the license agreement, and in a custom setup make sure that Add to Path and Set JAVA_HOME are set to Entire feature will be installed on your local hard drive. Then choose Install and wait for the installation to finish.
    • Linux: Installation methods for certain popular flavors of Linux are listed below. If your distribution is not listed, follow the instructions specific to your package manager or install it manually here.
      • Gentoo: emerge dev-java/openjdk-bin:8
      • Archlinux: pacman -S jdk8-openjdk
      • Ubuntu/Debian: apt-get install openjdk-8-jdk
      • Fedora: yum install java-1.8.0-openjdk
  2. Open up your command line and run javac. If it spews out a bunch of possible options and the usage, you're good to go. If not, try the steps again.

Troubleshooting If the javac command does not work on Windows:

  • Go to Control Panel\System and Security\System and click on Advanced System Settings on the left-hand side.
  • Click on Environment Variables.
  • Under System Variables, click New.
  • For Variable Name, input JAVA_HOME.
  • For Variable Value, input something similar to C:\Program Files\Java\jdk1.8.0_45 exactly as shown (or wherever your Java JDK installation is) and click OK.
  • Scroll down to a variable named Path and double-click on it.
  • Append ;%JAVA_HOME%\bin EXACTLY AS SHOWN and click OK. Make sure the location is correct; double-check to make sure.

Setup Gradle (Optional)

Gradle is used to execute the various build tasks when compiling MineColonies.

  1. Download and install Gradle.
    • Windows/Mac download link. You only need the binaries, but choose whatever flavor you want.
      • Unzip the package and put it wherever you want, for example, C:\Gradle.
    • Linux: Installation methods for certain popular flavors of Linux are listed below. If your distribution is not listed, follow the instructions specific to your package manager or install it manually here.
      • Gentoo: emerge dev-java/gradle-bin
      • Archlinux: You'll have to install it from the AUR.
      • Ubuntu/Debian: apt-get install gradle
      • Fedora: Install Gradle manually from its website (see above), as Fedora ships a "broken" version of Gradle. Use yum install gradle only if you know what you're doing.
  2. Windows: Set environment variables for Gradle.
    • Go back to Environment Variables and then create a new system variable.
    • For Variable Name, input GRADLE_HOME.
    • For Variable Value, input something similar to C:\Gradle-3.0 exactly as shown (or wherever your Gradle installation is), and click Ok.
    • Scroll down to Path again, and append ;%GRADLE_HOME%\bin EXACTLY AS SHOWN and click Ok. Once again, double-check the location.
  3. Open up your command line and run gradle. If it says 'Welcome to Gradle [version].', then you're good to go. If not, try the steps again.

Setup Git

Git is used to clone MineColonies and update your local copy.

  1. Download and install Git here.
  2. Optional: Download and install a Git GUI client, such as Gitkraken, SourceTree, GitHub for Windows/Mac, SmartGitHg, TortoiseGit, etc. A nice list is available here.

Setup MineColonies (Command Line)

This section assumes that you're using the command line version of Git.

  1. Open up your command line.
  2. Navigate to a place where you want to download the MineColonies source (e.g., C:\GitHub\MineColonies\) by executing cd [folder location]. This location is known as basefolder from now on.
  3. Execute git clone https://github.com/Minecolonies/minecolonies.git. This will download MineColonies' source into basefolder.
  4. Right now, you should have a directory that looks something like this:

basefolder
\-MineColonies
	\-MineColonies' files (should have `build.gradle`)

Setup MineColonies (GitKraken)

If you decide to go with a GUI client like GitKraken:

  1. Open GitKraken
  2. Click File → Clone Repo
  3. Select GitHub.com and choose a base folder to clone to.
  4. Write MineColonies in the "Repository to Clone" and select the one by ldtteam.

  1. Click 'Clone the Repo'.

Compile MineColonies (Command Line)

  1. Navigate to the MineColonies folder and run a dir to make sure the build.gradle file is where you expect it to be.
  2. Execute gradlew build. This first sets up Forge and downloads the necessary libraries to build MineColonies. Be patient, as this may take a while.
    • If you did everything right, BUILD SUCCESSFUL will be displayed after it finishes.
    • If you see BUILD FAILED, check the error output (it should be right around BUILD FAILED), fix everything (if possible), and try again.
  3. Go to basefolder\MineColonies\build\libs.
    • You should see a .jar file named MineColonies-universal-null.jar.
  4. Copy the jar into your Minecraft mods folder, and you are done! (~/.minecraft/mods on Linux)
  5. Alternatively, you can also run ./gradlew runClient to start Minecraft with this jar.

Compile MineColonies (Intellij)

  1. Right-click the build.gradle file (or the background of the folder it's in) and select Open Folder as Intellij Project.
  2. Select Auto Import and make sure a valid Gradle and JVM are selected.

  1. This will prepare some of the libraries used by Forge.
  2. Click View → Tool Windows → Gradle.
  3. In the Gradle view, expand the options to Tasks → fg_runs.
  4. Click the small refresh symbol in the upper left of the Gradle view. This sets up Forge and downloads the necessary libraries to build MineColonies.
  5. Execute genIntellijRuns and restart Intellij.
  6. You will see a runClient and runServer startup configuration in the dropdown at the top right next to the green "run" button. Select one and press "run".
  7. If it doesn't start and throws a lot of errors, try another refresh. This often does wonders.
  8. If you want to produce a running jar, execute the build task. This will result in a runnable jar file in basefolder\MineColonies\build\libs.
Troubleshooting

If Gradle synchronization fails, make sure:

  1. File → Project structure → Project → Project SDK is set to your installed JDK version.
  2. File → Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JVM is set to your installed JDK version.

Updating Your Repository

To get the most up-to-date builds, you'll have to update your local repository periodically.

  1. Open up your command line.
  2. Navigate to basefolder in the console.
  3. Ensure you have not made any changes to the local repository (if you did, there might be issues with Git).
    • If you have, try reverting them to their status when you last updated your repository.
  4. Execute git pull version/1.16.3. This pulls all commits from the official repository that do not yet exist on your local repository and updates it (with GitKraken, click the small pull arrow at the top).

Troubleshooting

  • Sometimes Gradle tasks fail because of missing memory. For that, you can find system-wide settings in the .gradle folder of your HOME directory (~/.gradle/gradle.properties or on Windows in C:\Users\username\.gradle\gradle.properties).
  • Sometimes after a branch change, libraries can not be resolved. Running another refresh in IntelliJ or the command line usually solves this issue.

Contributing

Submitting a PR

Found a bug in our code? Think you can make it more efficient? Want to help in general? Great!

  1. If you haven't already, create a GitHub account.
  2. Click the Fork icon located at the top right.
  3. Make your changes and commit them.
    • If you're making changes locally, you'll have to do git commit -a and git push in your command line (or with GitKraken stage the changes, commit them, and push them first).
  4. Click Pull Request in the middle.
  5. Click 'New pull request' to create a pull request for this comparison, enter your PR's title, and create a detailed description telling us what you changed.
  6. Click Create pull request and wait for feedback!

minecolonies's People

Contributors

asherslab avatar bob0bob avatar carif avatar chandler05 avatar cltnschlosser avatar dadadah avatar gattsuru avatar isfirs avatar lunadragnstar avatar maineqat avatar marchermans avatar mariofernandes73 avatar martijnwoudstra avatar marvin-bitterlich avatar mekle001 avatar mineshadow7 avatar mkienenb avatar motionlesstrain avatar nicoviii avatar nightenom avatar nojo121 avatar powerschill avatar ravenbuilder934 avatar raycoms avatar someaddons avatar thodor12 avatar tome25 avatar uecasm avatar vroni92 avatar xavierh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minecolonies's Issues

Size Achievement trigger bug & enhancement

[20:11:42] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.NullPointerException
        at com.minecolonies.colony.Colony.lambda$checkAchievements$12(Colony.java:728) ~[Colony.class:?]
        at com.minecolonies.colony.Colony.lambda$null$15(Colony.java:743) ~[Colony.class:?]
        at java.util.ArrayList.forEach(ArrayList.java:1249) ~[?:1.8.0_101]
        at com.minecolonies.colony.Colony.lambda$checkAchievements$16(Colony.java:743) ~[Colony.class:?]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_101]
        at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1620) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_101]
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_101]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_101]
        at com.minecolonies.colony.Colony.checkAchievements(Colony.java:743) ~[Colony.class:?]
        at com.minecolonies.colony.Colony.spawnCitizen(Colony.java:710) ~[Colony.class:?]
        at com.minecolonies.colony.Colony.spawnCitizen(Colony.java:665) ~[Colony.class:?]
        at com.minecolonies.colony.Colony.onWorldTick(Colony.java:411) ~[Colony.class:?]
        at com.minecolonies.colony.ColonyManager.lambda$onWorldTick$62(ColonyManager.java:419) ~[ColonyManager.class:?]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_101]
        at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1620) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_101]
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_101]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_101]
        at com.minecolonies.colony.ColonyManager.onWorldTick(ColonyManager.java:419) ~[ColonyManager.class:?]
        at com.minecolonies.event.FMLEventHandler.onWorldTick(FMLEventHandler.java:46) ~[FMLEventHandler.class:?]
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_42_FMLEventHandler_onWorldTick_WorldTickEvent.invoke(.dynamic) ~[?:?]
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:49) ~[ASMEventHandler.class:?]
        at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140) ~[EventBus.class:?]
        at net.minecraftforge.fml.common.FMLCommonHandler.onPreWorldTick(FMLCommonHandler.java:274) ~[FMLCommonHandler.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:686) ~[MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:344) ~[ko.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:605) ~[MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:481) [MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
[20:11:42] [Server thread/ERROR]: This crash report has been saved to: /home/marvin/Minecraft/MineColonies/MinecolonyMain/./crash-reports/crash-2016-08-31_20.11.42-server.txt

Fixing this and enhancing the MineColonies Achievements as this:

  • Colony achievements mainly trigger on the owner!
  • Then each achievement taken by the owner will be triggered on each player in the permission list
  • If a new player joins the colony, the achievements taken by the owner will be triggered on him to sync the colony state

Add Scarecrow Model

Attached are both halves of the scarecrow model + the alternate texture.

Note: there are two separate models, not just one due to the size.

Time cap for lumberjack not working

I set up the lumberjack hut. She chopped one tree. No saplings fell. There's supposed to be a cap for how long she waits for a sapling before just going on to the next tree, but she waited for over an hour in my game. I was busy with the miner and didn't notice she'd been just standing there the whole time.

I was told to throw a sapling at her to get her moving again. That worked. But the time cap needs to be fixed.

1.8.9-0.2.113 - Builder Chest

Ok, When a builder needs an item.. If it is in his chest he will take it and use it.. If it is not in his chest, he will stand by the chest. Give the item/block directly to the Builder (throw it at him, or manually place in his inventory) and he will use it. Put it in his chest.... and he can't see it !!

I can replicate test this by making him build something and when he needs say Oak Planks.. put a stack in his chest and he ignores.. Then give him 1 or 2 blocks manually.. he will go and use those 2 blocks, then come back to his chest to collect the rest..

So I guess there is no period re-check of the builders chest contents after an initial check as soon as he needs something. This needs to be fixed as he currently wouldn't see any deliveries to his chest by the delivery man.

Builder crash

Minecolonies version

develop branch

Expected behavior

Builder will build a building.

Actual behaviour

Server crash (only on remote)


net.minecraft.util.ReportedException: Ticking entity
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:707) ~[MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:344) ~[ko.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:605) ~[MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:481) [MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
Caused by: java.lang.NoSuchMethodError: net.minecraft.block.Block.func_149648_K()Z
        at com.minecolonies.util.BlockUtils.getItemStackFromBlockState(BlockUtils.java:130) ~[BlockUtils.class:?]
        at com.minecolonies.entity.ai.citizen.builder.EntityAIStructureBuilder.placeBlock(EntityAIStructureBuilder.java:721) ~[EntityAIStructureBuilder.class:?]
        at com.minecolonies.entity.ai.citizen.builder.EntityAIStructureBuilder.placeBlockAt(EntityAIStructureBuilder.java:580) ~[EntityAIStructureBuilder.class:?]
        at com.minecolonies.entity.ai.citizen.builder.EntityAIStructureBuilder.structureStep(EntityAIStructureBuilder.java:507) ~[EntityAIStructureBuilder.class:?]
        at com.minecolonies.entity.ai.util.AITarget.apply(AITarget.java:122) ~[AITarget.class:?]
        at com.minecolonies.entity.ai.basic.AbstractAISkeleton.applyTarget(AbstractAISkeleton.java:188) ~[AbstractAISkeleton.class:?]
        at com.minecolonies.entity.ai.basic.AbstractAISkeleton.checkOnTarget(AbstractAISkeleton.java:171) ~[AbstractAISkeleton.class:?]
        at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) ~[?:1.8.0_101]
        at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1351) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_101]
        at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) ~[?:1.8.0_101]
        at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) ~[?:1.8.0_101]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_101]
        at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:449) ~[?:1.8.0_101]
        at com.minecolonies.entity.ai.basic.AbstractAISkeleton.func_75246_d(AbstractAISkeleton.java:138) ~[AbstractAISkeleton.class:?]
        at net.minecraft.entity.ai.EntityAITasks.func_75774_a(SourceFile:102) ~[re.class:?]
        at net.minecraft.entity.EntityLiving.func_70626_be(EntityLiving.java:559) ~[ps.class:?]
        at net.minecraft.entity.EntityLivingBase.func_70636_d(EntityLivingBase.java:1775) ~[pr.class:?]
        at net.minecraft.entity.EntityLiving.func_70636_d(EntityLiving.java:382) ~[ps.class:?]
        at net.minecraft.entity.EntityAgeable.func_70636_d(EntityAgeable.java:146) ~[ph.class:?]
        at com.minecolonies.entity.EntityCitizen.func_70636_d(EntityCitizen.java:482) ~[EntityCitizen.class:?]
        at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1614) ~[pr.class:?]
        at net.minecraft.entity.EntityLiving.func_70071_h_(EntityLiving.java:228) ~[ps.class:?]
        at net.minecraft.world.World.func_72866_a(World.java:1862) ~[adm.class:?]
        at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:700) ~[le.class:?]
        at net.minecraft.world.World.func_72870_g(World.java:1831) ~[adm.class:?]
        at net.minecraft.world.World.func_72939_s(World.java:1663) ~[adm.class:?]
        at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:545) ~[le.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:701) ~[MinecraftServer.class:?]
        ... 4 more

Steps to reproduce the problem

Play the game on a server and let the builder build

@cltnschlosser can we please fix this 😆

Add Crafter Models

Just like the male crafter, there are two textures – one for crafting, one for idle.

If the male crafter has no issues being implemented, this one shouldn't either (only one block used the potentially sketchy technique).


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Using Ore Dictionary in crafting recipes

So, what about adding support for ore dictionary in our crafting recipes.
Could result in better mod compatibility and in less code for creating the crafting
recipes.

Should be checked if this is possible for our use with wooden planks.

Citizen Huts and Worker Levels

Can we add a new system that limits a workers level (0-50) based on the level of the citizen hut. This gives a reason/need to upgrade the citizen huts as currently there is no reason to at all.

Therefore at citizen hut level 1, a worker should max out at Level 10
2 = 20
3 = 30 etc..

If we have 5 levels that lets us get up to the 50 mark :)

workers living in the TH should go from the TH level until they move to a Citizen Hut (so need to think how to handle a level 30 worker moving to a level 1 citizen hut.

Fix callBack button of the townhall.

Minecolonies version

Any version.

Expected behavior

CallBack button of the townHall should call back the citizens I guess.

Actual behaviour

It actually does nothing.

Steps to reproduce the problem

Press the button of the Townhall.

Anti-Griefing System

We need to have colonies protected from Griefing - I do not want people to have to rely on a 3rd party world protection system.

In tandem with the permissions system, if someone is Neutral or lower to a colony, they should not be able to place or break any blocks within someone else's colony boundary... This could be as simple as effectively setting them to Adventure Mode when they cross the boundary for now.. but we also need to consider the following.

  • How to stop Static TNT or TNT from Cannons damaging the colony within the boundary
  • How to stop flowing water or Lava entering and damaging/affecting the colony
  • How to stop fire propagation across a boundary

Subtasks:

  • Handle permissions for general colony interactions (Opening GUIs and inventories)
  • Handle block and fluid placement inside the colony.
  • Handle picking up blocks or opening normal chests inside the colony.
  • Handle attacking entities inside or from outside the colony (Arrow, sword)
  • Handle explosions from inside/outside (tnt cannons, nukes, creepers)
  • Toggle warefare (allow certain war interactions in certain cases)
  • Colony should be protected from y = 0 until y = 250?
  • Control messages, client messages must be checked (Most of them are)
  • Players maybe should even be unable to drop stuff (Fill citizen inventory to block him)
  • Mod interactions, magical placement, computer craft placement etc?

1.8.9-0.2.113 - Citizen Spawns

1.8.9-0.2.113 - Playtest Feedback

Citizens can spawn in the ground, when the town hall chest is placed near a hill.. Had A citizen suffocate to death, and another take significant damage before they wandered out of the block.

Builder needs the prefetch materials

Dman should not pick up food in worker's chest
Dman should gather broken tools.
Dman pre fetch items builder needs before he needs them.
Dman should always send food to houses even if not hungry.

Players can kill citizens if pvp=false

Minecolonies version

I guess any.

Expected behavior

Citizens can't be killed when PVP is turned off.

Actual behaviour

Players can still kill Citizens.

Steps to reproduce the problem

Kill a Citizen if pvp=off on server

API

Something to remember for later. Let other mods integrate over an API with our mod.

Crash when switching schematics with builders wand

I was trying to place the mine using what I think is the latest build. I right clicked to open the builders wand's GUI then clicked the button to show different levels of the mine building. when it tried to show the level 4 mine building it crashed. When I reloaded and tried the same thing again It happened again. The second and first crash logs are almost identical.

Let me know if I can help clear up questions!
Thanks, good work so far!

Here is the first crash log:

---- Minecraft Crash Report ----
// Why is it breaking :(

Time: 8/18/16 5:02 PM
Description: Updating screen events

java.lang.IllegalStateException: Could not load stream!
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:143)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:105)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:93)
    at com.minecolonies.client.gui.WindowBuildTool.changeSchematic(WindowBuildTool.java:327)
    at com.minecolonies.client.gui.WindowBuildTool.levelClicked(WindowBuildTool.java:443)
    at com.minecolonies.client.gui.WindowBuildTool$$Lambda$17/261784236.accept(Unknown Source)
    at com.minecolonies.client.gui.AbstractWindowSkeleton.onButtonClicked(AbstractWindowSkeleton.java:53)
    at com.blockout.controls.Button.handleClick(Button.java:110)
    at com.blockout.Pane.click(Pane.java:444)
    at com.blockout.View.click(View.java:223)
    at com.blockout.Screen.func_73864_a(Screen.java:80)
    at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:555)
    at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:524)
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1674)
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1024)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:349)
    at net.minecraft.client.main.Main.main(SourceFile:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.io.FileNotFoundException: minecolonies:schematics/classic/Miner4.schematic
    at net.minecraft.client.resources.FallbackResourceManager.func_110536_a(FallbackResourceManager.java:67)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110536_a(SimpleReloadableResourceManager.java:64)
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:134)
    ... 22 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:143)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:105)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:93)
    at com.minecolonies.client.gui.WindowBuildTool.changeSchematic(WindowBuildTool.java:327)
    at com.minecolonies.client.gui.WindowBuildTool.levelClicked(WindowBuildTool.java:443)
    at com.minecolonies.client.gui.WindowBuildTool$$Lambda$17/261784236.accept(Unknown Source)
    at com.minecolonies.client.gui.AbstractWindowSkeleton.onButtonClicked(AbstractWindowSkeleton.java:53)
    at com.blockout.controls.Button.handleClick(Button.java:110)
    at com.blockout.Pane.click(Pane.java:444)
    at com.blockout.View.click(View.java:223)
    at com.blockout.Screen.func_73864_a(Screen.java:80)
    at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:555)
    at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:524)

-- Affected screen --
Details:
    Screen name: com.blockout.Screen

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['qhenckel'/322, l='MpServer', x=-117.12, y=64.05, z=430.99]]
    Chunk stats: MultiplayerChunkCache: 625, 625
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: 
    Level spawn location: 8.00,64.00,252.00 - World: (8,64,252), Chunk: (at 8,4,12 in 0,15; contains blocks 0,0,240 to 15,255,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    Level time: 9820 game time, 9820 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 120 total; [EntityCreeper['Creeper'/67586, l='MpServer', x=-83.50, y=22.00, z=448.50], EntityCreeper['Creeper'/67595, l='MpServer', x=-96.50, y=21.00, z=409.50], EntityZombie['Zombie'/65548, l='MpServer', x=-114.47, y=15.00, z=392.75], EntityCitizen['Charles I. Brown'/63508, l='MpServer', x=-156.00, y=64.00, z=406.50], EntitySquid['Squid'/63526, l='MpServer', x=-172.19, y=57.41, z=406.94], EntityZombie['Zombie'/67624, l='MpServer', x=-112.50, y=34.00, z=437.50], EntityZombie['Zombie'/65591, l='MpServer', x=-116.50, y=16.00, z=383.50], EntityZombie['Zombie'/67644, l='MpServer', x=-46.16, y=51.00, z=381.44], EntityCreeper['Creeper'/67646, l='MpServer', x=-138.50, y=19.00, z=435.50], EntityCreeper['Creeper'/65611, l='MpServer', x=-114.50, y=55.00, z=448.50], EntityRabbit['Rabbit'/49294, l='MpServer', x=-45.00, y=64.00, z=410.00], EntityCreeper['Creeper'/65681, l='MpServer', x=-62.50, y=17.00, z=386.50], EntityZombie['Zombie'/61591, l='MpServer', x=-113.38, y=15.00, z=430.06], EntityBat['Bat'/67759, l='MpServer', x=-77.75, y=22.04, z=377.54], EntitySkeleton['Skeleton'/67763, l='MpServer', x=-90.50, y=16.00, z=433.50], EntityZombie['Zombie'/67765, l='MpServer', x=-199.50, y=47.00, z=489.50], EntitySkeleton['Skeleton'/63681, l='MpServer', x=-140.13, y=49.00, z=422.66], EntityZombie['Zombie'/65777, l='MpServer', x=-59.50, y=28.00, z=443.50], EntityBat['Bat'/63731, l='MpServer', x=-93.91, y=14.09, z=412.63], EntityBat['Bat'/59641, l='MpServer', x=-195.25, y=19.43, z=481.74], EntityZombie['Zombie'/65790, l='MpServer', x=-97.50, y=45.00, z=466.50], EntitySpider['Spider'/65799, l='MpServer', x=-64.72, y=20.09, z=373.69], EntityCitizen['Susan N. Clark'/61718, l='MpServer', x=-170.91, y=64.00, z=408.50], EntitySkeleton['Skeleton'/61738, l='MpServer', x=-79.50, y=15.00, z=422.50], EntityPlayerSP['qhenckel'/322, l='MpServer', x=-117.12, y=64.05, z=430.99], EntityItem['item.item.bone'/57684, l='MpServer', x=-96.41, y=10.00, z=419.75], EntityCreeper['Creeper'/65925, l='MpServer', x=-88.50, y=20.00, z=435.50], EntityBat['Bat'/59806, l='MpServer', x=-187.44, y=45.10, z=499.41], EntityZombie['Zombie'/65984, l='MpServer', x=-69.50, y=12.00, z=356.50], EntityZombie['Zombie'/66003, l='MpServer', x=-115.66, y=45.00, z=509.34], EntityRabbit['Rabbit'/51756, l='MpServer', x=-91.28, y=70.00, z=403.50], EntityRabbit['Rabbit'/49748, l='MpServer', x=-101.91, y=72.00, z=394.50], EntityRabbit['Rabbit'/49749, l='MpServer', x=-113.75, y=72.00, z=400.50], EntityZombie['Zombie'/66135, l='MpServer', x=-102.50, y=18.00, z=414.50], EntitySkeleton['Skeleton'/59993, l='MpServer', x=-118.50, y=15.00, z=399.50], EntityCreeper['Creeper'/60043, l='MpServer', x=-169.50, y=35.00, z=501.50], EntityCreeper['Creeper'/66234, l='MpServer', x=-138.50, y=16.00, z=431.50], EntityCow['Cow'/51951, l='MpServer', x=-197.78, y=68.00, z=403.81], EntityCow['Cow'/51952, l='MpServer', x=-181.13, y=65.00, z=418.00], EntityCreeper['Creeper'/58166, l='MpServer', x=-97.50, y=22.00, z=445.50], EntityBat['Bat'/66400, l='MpServer', x=-106.75, y=21.36, z=457.14], EntityBat['Bat'/66408, l='MpServer', x=-88.34, y=20.35, z=444.61], EntitySkeleton['Skeleton'/64375, l='MpServer', x=-110.50, y=15.00, z=399.50], EntitySkeleton['Skeleton'/64419, l='MpServer', x=-101.50, y=18.00, z=422.50], EntityZombie['Zombie'/66550, l='MpServer', x=-92.50, y=14.00, z=399.50], EntityZombie['Zombie'/58369, l='MpServer', x=-97.50, y=20.00, z=415.50], EntityCreeper['Creeper'/66589, l='MpServer', x=-142.50, y=17.00, z=363.50], EntityCreeper['Creeper'/62533, l='MpServer', x=-97.50, y=20.00, z=405.50], EntitySkeleton['Skeleton'/64594, l='MpServer', x=-103.09, y=19.00, z=411.44], EntitySkeleton['Skeleton'/62569, l='MpServer', x=-175.63, y=59.00, z=407.50], EntityCitizen['Rory X. Brown'/58475, l='MpServer', x=-178.25, y=66.00, z=440.66], EntityEnderman['Enderman'/56470, l='MpServer', x=-137.50, y=45.00, z=450.50], EntitySkeleton['Skeleton'/54468, l='MpServer', x=-173.31, y=58.16, z=414.69], EntityCreeper['Creeper'/66775, l='MpServer', x=-111.50, y=13.00, z=420.50], EntityBat['Bat'/62702, l='MpServer', x=-89.25, y=50.10, z=476.25], EntitySquid['Squid'/66798, l='MpServer', x=-173.00, y=58.41, z=405.22], EntityBat['Bat'/62705, l='MpServer', x=-182.47, y=25.06, z=471.59], EntityZombie['Zombie'/58645, l='MpServer', x=-128.48, y=46.18, z=446.31], EntitySquid['Squid'/58667, l='MpServer', x=-170.50, y=58.00, z=403.47], EntityZombie['Zombie'/66864, l='MpServer', x=-93.50, y=48.00, z=471.50], EntityCreeper['Creeper'/66899, l='MpServer', x=-96.44, y=24.00, z=432.03], EntitySkeleton['Skeleton'/66898, l='MpServer', x=-47.50, y=26.00, z=378.50], EntitySkeleton['Skeleton'/66973, l='MpServer', x=-120.81, y=16.00, z=410.47], EntitySkeleton['Skeleton'/62883, l='MpServer', x=-111.50, y=46.00, z=455.50], EntityCreeper['Creeper'/58788, l='MpServer', x=-117.50, y=16.00, z=420.50], EntityBat['Bat'/66981, l='MpServer', x=-89.48, y=16.98, z=429.02], EntityPig['Pig'/48621, l='MpServer', x=-92.50, y=65.00, z=433.50], EntityBat['Bat'/67107, l='MpServer', x=-100.20, y=25.06, z=464.71], EntityRabbit['Rabbit'/48686, l='MpServer', x=-104.84, y=66.00, z=437.63], EntityRabbit['Rabbit'/48687, l='MpServer', x=-103.56, y=66.00, z=437.47], EntityCreeper['Creeper'/60983, l='MpServer', x=-107.16, y=13.00, z=428.34], EntityZombie['Zombie'/67166, l='MpServer', x=-109.50, y=19.00, z=428.50], EntityCreeper['Creeper'/63102, l='MpServer', x=-136.50, y=28.00, z=466.50], EntityZombie['Zombie'/63103, l='MpServer', x=-135.50, y=46.00, z=446.50], EntityPig['Pig'/48806, l='MpServer', x=-83.84, y=64.00, z=432.22], EntityPig['Pig'/48807, l='MpServer', x=-84.56, y=65.00, z=421.28], EntityCreeper['Creeper'/67250, l='MpServer', x=-99.59, y=18.00, z=436.50], EntityCow['Cow'/52953, l='MpServer', x=-137.47, y=68.00, z=459.69], EntityBat['Bat'/63221, l='MpServer', x=-148.75, y=16.32, z=404.57], EntitySkeleton['Skeleton'/59129, l='MpServer', x=-92.50, y=24.00, z=430.50], EntitySkeleton['Skeleton'/67324, l='MpServer', x=-118.50, y=12.00, z=437.50], EntityZombie['Zombie'/67330, l='MpServer', x=-53.66, y=26.00, z=436.34], EntityBat['Bat'/65295, l='MpServer', x=-153.56, y=17.47, z=413.97], EntityBat['Bat'/65296, l='MpServer', x=-80.25, y=22.10, z=371.69], EntityCreeper['Creeper'/67365, l='MpServer', x=-129.50, y=18.00, z=373.50], EntityCow['Cow'/53048, l='MpServer', x=-132.50, y=70.00, z=468.50], EntityCow['Cow'/53049, l='MpServer', x=-134.50, y=67.03, z=465.50], EntityCow['Cow'/53050, l='MpServer', x=-130.22, y=70.00, z=465.50], EntityCow['Cow'/53051, l='MpServer', x=-131.84, y=70.00, z=465.50], EntityRabbit['Rabbit'/53053, l='MpServer', x=-114.50, y=76.00, z=477.50], EntityRabbit['Rabbit'/53054, l='MpServer', x=-116.03, y=76.00, z=478.00], EntityCow['Cow'/53055, l='MpServer', x=-147.22, y=68.00, z=469.44], EntityCow['Cow'/53056, l='MpServer', x=-150.81, y=68.00, z=465.50], EntityCow['Cow'/53057, l='MpServer', x=-147.50, y=68.00, z=471.50], EntityPig['Pig'/53058, l='MpServer', x=-144.66, y=68.00, z=467.22], EntityPig['Pig'/53059, l='MpServer', x=-158.00, y=66.00, z=477.16], EntityPig['Pig'/53060, l='MpServer', x=-147.06, y=68.00, z=464.66], EntityPig['Pig'/53061, l='MpServer', x=-162.81, y=66.00, z=482.31], EntitySkeleton['Skeleton'/65374, l='MpServer', x=-108.50, y=46.00, z=457.50], EntitySquid['Squid'/61315, l='MpServer', x=-173.56, y=57.78, z=411.66], EntityZombie['Zombie'/65423, l='MpServer', x=-183.50, y=18.00, z=370.50], EntityRabbit['Rabbit'/53143, l='MpServer', x=-120.78, y=78.00, z=483.41], EntityCow['Cow'/53155, l='MpServer', x=-181.78, y=76.00, z=503.53], EntityCow['Cow'/53156, l='MpServer', x=-184.88, y=75.00, z=505.06], EntityCow['Cow'/53157, l='MpServer', x=-175.25, y=79.00, z=503.75], EntityCow['Cow'/53158, l='MpServer', x=-173.06, y=79.00, z=503.88], EntityZombie['Zombie'/65448, l='MpServer', x=-116.50, y=55.00, z=449.50], EntityCow['Cow'/53160, l='MpServer', x=-171.72, y=78.00, z=509.69], EntitySkeleton['Skeleton'/67496, l='MpServer', x=-95.50, y=21.00, z=441.50], EntityPig['Pig'/53162, l='MpServer', x=-167.63, y=79.00, z=506.94], EntityPig['Pig'/53164, l='MpServer', x=-171.50, y=79.00, z=508.16], EntityCow['Cow'/53165, l='MpServer', x=-166.91, y=79.00, z=508.88], EntityCow['Cow'/53166, l='MpServer', x=-168.78, y=84.00, z=503.47], EntityRabbit['Rabbit'/53167, l='MpServer', x=-119.50, y=78.00, z=498.50], EntityRabbit['Rabbit'/53168, l='MpServer', x=-129.59, y=76.00, z=498.47], EntityRabbit['Rabbit'/53169, l='MpServer', x=-117.50, y=77.00, z=501.50], EntityCitizen['Richard B. Wallgreen'/67534, l='MpServer', x=-164.00, y=64.00, z=411.00], EntityCreeper['Creeper'/67540, l='MpServer', x=-52.50, y=47.00, z=378.50], EntityPig['Pig'/49112, l='MpServer', x=-78.56, y=65.00, z=418.28], EntityRabbit['Rabbit'/49143, l='MpServer', x=-101.41, y=65.00, z=428.56]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.func_72914_a(WorldClient.java:347)
    at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2536)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:370)
    at net.minecraft.client.main.Main.main(SourceFile:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

-- System Details --
Details:
    Minecraft Version: 1.8.9
    Operating System: Windows 7 (amd64) version 6.1
    Java Version: 1.8.0_05, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 241514960 bytes (230 MB) / 733646848 bytes (699 MB) up to 1060372480 bytes (1011 MB)
    JVM Flags: 6 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx1G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
    IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
    FML: MCP 9.19 Powered by Forge 11.15.1.1902 4 mods loaded, 4 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHIJAAAA   mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAAAA   FML{8.0.99.99} [Forge Mod Loader] (forge-1.8.9-11.15.1.1902-1.8.9.jar) 
    UCHIJAAAA   Forge{11.15.1.1902} [Minecraft Forge] (forge-1.8.9-11.15.1.1902-1.8.9.jar) 
    UCHIJAAAA   minecolonies{1.8.9-0.2.126} [MineColonies] (minecolonies-universal-1.8.9-0.2.126.jar) 
    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'Intel' Version: '3.1.0 - Build 9.17.10.3347' Renderer: 'Intel(R) HD Graphics 2000'
    Launched Version: 1.8.9-forge1.8.9-11.15.1.1902-1.8.9
    LWJGL: 2.9.4
    OpenGL: Intel(R) HD Graphics 2000 GL version 3.1.0 - Build 9.17.10.3347, Intel
    GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

    Using VBOs: No
    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: 
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 4x Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz

Second crash log:

---- Minecraft Crash Report ----
// I feel sad now :(

Time: 8/18/16 5:10 PM
Description: Updating screen events

java.lang.IllegalStateException: Could not load stream!
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:143)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:105)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:93)
    at com.minecolonies.client.gui.WindowBuildTool.changeSchematic(WindowBuildTool.java:327)
    at com.minecolonies.client.gui.WindowBuildTool.levelClicked(WindowBuildTool.java:443)
    at com.minecolonies.client.gui.WindowBuildTool$$Lambda$104/370717946.accept(Unknown Source)
    at com.minecolonies.client.gui.AbstractWindowSkeleton.onButtonClicked(AbstractWindowSkeleton.java:53)
    at com.blockout.controls.Button.handleClick(Button.java:110)
    at com.blockout.Pane.click(Pane.java:444)
    at com.blockout.View.click(View.java:223)
    at com.blockout.Screen.func_73864_a(Screen.java:80)
    at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:555)
    at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:524)
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1674)
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1024)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:349)
    at net.minecraft.client.main.Main.main(SourceFile:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.io.FileNotFoundException: minecolonies:schematics/classic/Miner4.schematic
    at net.minecraft.client.resources.FallbackResourceManager.func_110536_a(FallbackResourceManager.java:67)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110536_a(SimpleReloadableResourceManager.java:64)
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:134)
    ... 22 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at com.minecolonies.util.SchematicWrapper.getStream(SchematicWrapper.java:143)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:105)
    at com.minecolonies.util.SchematicWrapper.<init>(SchematicWrapper.java:93)
    at com.minecolonies.client.gui.WindowBuildTool.changeSchematic(WindowBuildTool.java:327)
    at com.minecolonies.client.gui.WindowBuildTool.levelClicked(WindowBuildTool.java:443)
    at com.minecolonies.client.gui.WindowBuildTool$$Lambda$104/370717946.accept(Unknown Source)
    at com.minecolonies.client.gui.AbstractWindowSkeleton.onButtonClicked(AbstractWindowSkeleton.java:53)
    at com.blockout.controls.Button.handleClick(Button.java:110)
    at com.blockout.Pane.click(Pane.java:444)
    at com.blockout.View.click(View.java:223)
    at com.blockout.Screen.func_73864_a(Screen.java:80)
    at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:555)
    at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:524)

-- Affected screen --
Details:
    Screen name: com.blockout.Screen

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['qhenckel'/330, l='MpServer', x=-117.12, y=64.05, z=430.99]]
    Chunk stats: MultiplayerChunkCache: 625, 625
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: 
    Level spawn location: 8.00,64.00,252.00 - World: (8,64,252), Chunk: (at 8,4,12 in 0,15; contains blocks 0,0,240 to 15,255,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    Level time: 9961 game time, 9961 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 121 total; [EntityZombie['Zombie'/1, l='MpServer', x=-183.50, y=18.00, z=370.50], EntityCow['Cow'/2, l='MpServer', x=-181.13, y=65.00, z=418.00], EntityCitizen['Rory X. Brown'/3, l='MpServer', x=-178.25, y=66.00, z=440.66], EntitySkeleton['Skeleton'/9, l='MpServer', x=-173.31, y=58.30, z=414.69], EntitySquid['Squid'/10, l='MpServer', x=-170.19, y=58.53, z=408.28], EntitySquid['Squid'/11, l='MpServer', x=-173.44, y=58.25, z=413.50], EntitySkeleton['Skeleton'/12, l='MpServer', x=-175.63, y=59.00, z=407.50], EntitySquid['Squid'/13, l='MpServer', x=-171.53, y=57.00, z=405.44], EntitySquid['Squid'/14, l='MpServer', x=-170.50, y=57.15, z=405.67], EntityCitizen['Susan N. Clark'/15, l='MpServer', x=-171.00, y=64.00, z=408.50], EntityCitizen['Richard B. Wallgreen'/16, l='MpServer', x=-162.65, y=65.00, z=411.40], EntityBat['Bat'/21, l='MpServer', x=-153.50, y=18.94, z=413.51], EntityBat['Bat'/22, l='MpServer', x=-147.32, y=16.16, z=402.84], EntityCitizen['Charles I. Brown'/23, l='MpServer', x=-156.00, y=64.00, z=406.50], EntityCreeper['Creeper'/24, l='MpServer', x=-142.50, y=17.00, z=363.50], EntityCreeper['Creeper'/25, l='MpServer', x=-129.50, y=18.00, z=373.50], EntityCreeper['Creeper'/26, l='MpServer', x=-138.50, y=16.00, z=431.50], EntitySkeleton['Skeleton'/27, l='MpServer', x=-137.09, y=45.00, z=423.78], EntityCreeper['Creeper'/28, l='MpServer', x=-138.50, y=19.00, z=435.50], EntityZombie['Zombie'/29, l='MpServer', x=-128.66, y=46.00, z=446.03], EntityZombie['Zombie'/30, l='MpServer', x=-127.31, y=47.91, z=444.47], EntityZombie['Zombie'/32, l='MpServer', x=-115.72, y=16.00, z=381.88], EntitySkeleton['Skeleton'/33, l='MpServer', x=-118.50, y=15.00, z=399.50], EntityZombie['Zombie'/34, l='MpServer', x=-114.47, y=15.00, z=392.75], EntitySkeleton['Skeleton'/35, l='MpServer', x=-120.81, y=16.00, z=410.47], EntityRabbit['Rabbit'/36, l='MpServer', x=-113.75, y=72.00, z=400.50], EntityZombie['Zombie'/37, l='MpServer', x=-113.38, y=15.00, z=430.06], EntityCreeper['Creeper'/38, l='MpServer', x=-117.50, y=16.00, z=420.50], EntitySkeleton['Skeleton'/39, l='MpServer', x=-124.19, y=11.00, z=436.56], EntityZombie['Zombie'/40, l='MpServer', x=-112.58, y=33.00, z=440.55], EntitySkeleton['Skeleton'/42, l='MpServer', x=-110.50, y=15.00, z=399.50], EntityRabbit['Rabbit'/43, l='MpServer', x=-101.91, y=72.00, z=394.50], EntityZombie['Zombie'/44, l='MpServer', x=-97.50, y=20.00, z=415.50], EntityCreeper['Creeper'/45, l='MpServer', x=-97.50, y=20.00, z=405.50], EntitySkeleton['Skeleton'/46, l='MpServer', x=-100.43, y=20.00, z=418.99], EntityZombie['Zombie'/47, l='MpServer', x=-102.78, y=18.00, z=414.94], EntityCreeper['Creeper'/48, l='MpServer', x=-96.50, y=21.00, z=409.50], EntityItem['item.item.bone'/49, l='MpServer', x=-96.41, y=10.00, z=419.75], EntityCreeper['Creeper'/50, l='MpServer', x=-107.59, y=13.15, z=427.15], EntityCreeper['Creeper'/51, l='MpServer', x=-111.50, y=13.00, z=420.50], EntitySkeleton['Skeleton'/52, l='MpServer', x=-101.50, y=18.00, z=422.50], EntityZombie['Zombie'/53, l='MpServer', x=-109.50, y=19.00, z=428.50], EntityRabbit['Rabbit'/54, l='MpServer', x=-101.41, y=65.00, z=428.56], EntityCreeper['Creeper'/55, l='MpServer', x=-97.50, y=22.00, z=445.50], EntityCreeper['Creeper'/56, l='MpServer', x=-96.44, y=24.00, z=432.03], EntityCreeper['Creeper'/57, l='MpServer', x=-99.56, y=18.00, z=436.16], EntityRabbit['Rabbit'/58, l='MpServer', x=-101.80, y=66.24, z=438.34], EntityRabbit['Rabbit'/59, l='MpServer', x=-103.06, y=66.00, z=437.25], EntityBat['Bat'/66, l='MpServer', x=-80.25, y=22.10, z=371.69], EntityZombie['Zombie'/67, l='MpServer', x=-92.50, y=14.00, z=399.50], EntityBat['Bat'/68, l='MpServer', x=-90.10, y=14.31, z=416.61], EntityRabbit['Rabbit'/69, l='MpServer', x=-91.28, y=70.00, z=403.50], EntitySkeleton['Skeleton'/70, l='MpServer', x=-92.50, y=24.00, z=430.50], EntityBat['Bat'/71, l='MpServer', x=-85.63, y=12.81, z=423.09], EntityPig['Pig'/72, l='MpServer', x=-84.56, y=65.00, z=421.28], EntityCreeper['Creeper'/73, l='MpServer', x=-88.50, y=20.00, z=435.50], EntitySkeleton['Skeleton'/74, l='MpServer', x=-95.50, y=21.00, z=441.50], EntityZombie['Zombie'/331, l='MpServer', x=-117.24, y=55.00, z=449.16], EntityBat['Bat'/75, l='MpServer', x=-91.76, y=22.67, z=441.56], EntityCreeper['Creeper'/332, l='MpServer', x=-119.15, y=54.00, z=445.62], EntitySkeleton['Skeleton'/76, l='MpServer', x=-90.50, y=16.00, z=433.50], EntityPlayerSP['qhenckel'/330, l='MpServer', x=-117.12, y=64.05, z=430.99], EntityPig['Pig'/77, l='MpServer', x=-92.50, y=65.00, z=433.50], EntityEnderman['Enderman'/334, l='MpServer', x=-137.50, y=45.00, z=450.50], EntityPig['Pig'/78, l='MpServer', x=-83.84, y=64.00, z=432.22], EntityCow['Cow'/335, l='MpServer', x=-137.47, y=69.16, z=459.66], EntityBat['Bat'/336, l='MpServer', x=-107.91, y=21.33, z=455.49], EntitySkeleton['Skeleton'/337, l='MpServer', x=-119.03, y=47.00, z=452.56], EntitySkeleton['Skeleton'/81, l='MpServer', x=-64.88, y=13.00, z=353.41], EntitySkeleton['Skeleton'/338, l='MpServer', x=-108.50, y=46.00, z=457.50], EntityCreeper['Creeper'/339, l='MpServer', x=-90.19, y=18.84, z=447.67], EntityRabbit['Rabbit'/340, l='MpServer', x=-114.00, y=76.00, z=477.53], EntityRabbit['Rabbit'/341, l='MpServer', x=-113.06, y=76.17, z=476.51], EntityCreeper['Creeper'/342, l='MpServer', x=-133.86, y=27.00, z=465.27], EntityCow['Cow'/343, l='MpServer', x=-132.50, y=70.00, z=468.50], EntityZombie['Zombie'/87, l='MpServer', x=-69.50, y=12.00, z=356.50], EntityCow['Cow'/344, l='MpServer', x=-134.53, y=67.13, z=465.88], EntitySpider['Spider'/88, l='MpServer', x=-64.72, y=18.00, z=373.69], EntityCow['Cow'/345, l='MpServer', x=-130.22, y=70.00, z=465.50], EntityBat['Bat'/89, l='MpServer', x=-77.75, y=22.09, z=377.75], EntityCow['Cow'/346, l='MpServer', x=-131.84, y=70.00, z=465.50], EntitySkeleton['Skeleton'/90, l='MpServer', x=-81.53, y=16.00, z=418.88], EntityBat['Bat'/347, l='MpServer', x=-99.17, y=25.88, z=463.96], EntityPig['Pig'/91, l='MpServer', x=-78.56, y=65.00, z=418.28], EntityZombie['Zombie'/348, l='MpServer', x=-97.50, y=45.00, z=466.50], EntityCow['Cow'/349, l='MpServer', x=-146.72, y=68.00, z=468.47], EntityCow['Cow'/350, l='MpServer', x=-150.81, y=68.00, z=465.50], EntityCreeper['Creeper'/94, l='MpServer', x=-52.50, y=47.00, z=378.50], EntityCow['Cow'/351, l='MpServer', x=-147.87, y=68.00, z=469.38], EntityCreeper['Creeper'/95, l='MpServer', x=-62.50, y=17.00, z=386.50], EntityPig['Pig'/352, l='MpServer', x=-147.03, y=68.00, z=473.23], EntityZombie['Zombie'/96, l='MpServer', x=-59.50, y=28.00, z=443.50], EntityPig['Pig'/353, l='MpServer', x=-160.94, y=65.00, z=475.00], EntityZombie['Zombie'/97, l='MpServer', x=-53.66, y=26.00, z=436.34], EntityPig['Pig'/354, l='MpServer', x=-147.06, y=68.00, z=464.66], EntityBat['Bat'/355, l='MpServer', x=-89.25, y=50.10, z=476.25], EntityZombie['Zombie'/356, l='MpServer', x=-93.50, y=48.00, z=471.50], EntityRabbit['Rabbit'/357, l='MpServer', x=-120.78, y=78.00, z=483.41], EntityPig['Pig'/358, l='MpServer', x=-162.81, y=66.00, z=482.31], EntityBat['Bat'/359, l='MpServer', x=-189.96, y=25.12, z=481.48], EntitySkeleton['Skeleton'/106, l='MpServer', x=-47.50, y=26.00, z=378.50], EntityZombie['Zombie'/363, l='MpServer', x=-115.66, y=45.00, z=509.34], EntityZombie['Zombie'/107, l='MpServer', x=-46.16, y=51.00, z=381.44], EntityRabbit['Rabbit'/364, l='MpServer', x=-118.46, y=78.20, z=496.90], EntityRabbit['Rabbit'/365, l='MpServer', x=-117.50, y=77.00, z=501.50], EntityRabbit['Rabbit'/366, l='MpServer', x=-129.59, y=76.00, z=498.47], EntityRabbit['Rabbit'/110, l='MpServer', x=-45.00, y=64.00, z=410.00], EntityCow['Cow'/368, l='MpServer', x=-197.78, y=68.00, z=403.81], EntityBat['Bat'/377, l='MpServer', x=-187.44, y=45.10, z=499.41], EntityCreeper['Creeper'/378, l='MpServer', x=-189.16, y=45.00, z=510.78], EntityCow['Cow'/379, l='MpServer', x=-181.78, y=76.00, z=503.53], EntityCow['Cow'/380, l='MpServer', x=-183.92, y=74.00, z=499.95], EntityZombie['Zombie'/383, l='MpServer', x=-181.50, y=44.00, z=505.50], EntityCreeper['Creeper'/433, l='MpServer', x=-169.50, y=35.00, z=501.50], EntityCow['Cow'/434, l='MpServer', x=-175.25, y=79.00, z=503.75], EntityCow['Cow'/435, l='MpServer', x=-173.06, y=79.00, z=503.88], EntityCow['Cow'/436, l='MpServer', x=-171.72, y=78.00, z=509.69], EntityPig['Pig'/437, l='MpServer', x=-167.63, y=79.00, z=506.94], EntityPig['Pig'/438, l='MpServer', x=-162.16, y=79.00, z=508.38], EntityCow['Cow'/439, l='MpServer', x=-160.23, y=78.19, z=508.32], EntityCow['Cow'/440, l='MpServer', x=-167.15, y=84.00, z=503.50]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.func_72914_a(WorldClient.java:347)
    at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2536)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:370)
    at net.minecraft.client.main.Main.main(SourceFile:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

-- System Details --
Details:
    Minecraft Version: 1.8.9
    Operating System: Windows 7 (amd64) version 6.1
    Java Version: 1.8.0_05, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 275372144 bytes (262 MB) / 658018304 bytes (627 MB) up to 1060372480 bytes (1011 MB)
    JVM Flags: 6 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx1G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
    IntCache: cache: 0, tcache: 63, allocated: 13, tallocated: 95
    FML: MCP 9.19 Powered by Forge 11.15.1.1902 4 mods loaded, 4 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHIJAAAA   mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAAAA   FML{8.0.99.99} [Forge Mod Loader] (forge-1.8.9-11.15.1.1902-1.8.9.jar) 
    UCHIJAAAA   Forge{11.15.1.1902} [Minecraft Forge] (forge-1.8.9-11.15.1.1902-1.8.9.jar) 
    UCHIJAAAA   minecolonies{1.8.9-0.2.126} [MineColonies] (minecolonies-universal-1.8.9-0.2.126.jar) 
    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'Intel' Version: '3.1.0 - Build 9.17.10.3347' Renderer: 'Intel(R) HD Graphics 2000'
    Launched Version: 1.8.9-forge1.8.9-11.15.1.1902-1.8.9
    LWJGL: 2.9.4
    OpenGL: Intel(R) HD Graphics 2000 GL version 3.1.0 - Build 9.17.10.3347, Intel
    GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

    Using VBOs: No
    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: 
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 4x Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz

Notification System based on achievement system

Minecolonies version

Any new

Expected behavior

Show notifications instead of plain chat texts

Actual behaviour

Chat is spammed by workers.

Steps to reproduce the problem

Make a worker have needs.

Related to

#79

Reference

http://jabelarminecraft.blogspot.de/p/minecraft-forge-creating-custom.html

In reference to the link and the issue, I create a notification API on the client side to not trigger achievements for the purpose of notifications.
The persistence of those notifications will be handled later (Blackboard at each worker hut(signs)?)


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Hire/Fire should update UI

Was watching Peter's video and he made a note about the UI not updating when you fire a worker. This is something we can improve.

Miner does not build shafts on SMP

Minecolonies version

0.3.472

Expected behavior

He should build shafts.

Actual behaviour

image
He builds tunnels but no shafts

Steps to reproduce the problem

Try it on the main server

[Feature] Knowledge System for autocrafting

As discussed with @Kostronor

New Hut

The librarien.

New achievement

  • Aquire knowledge (build librarien to lv 1)
  • A true master of wisdom (maxed out librarien)

New game & colony mechanic

  • In terms of auto crafting, every citizen has a list of default capabilities(based on profession).
  • These are limited to very basic items, aka wood tools, turn logs to planks, torches. Tier 1, a few tier 2 craftings.
  • Tiered crafting system. Depending on the levels of craftings, the item is classified into a tier.
  • To gain more craftings, knowledge must be aquired. This is the job of of the librarien. The activity involved comes later, making a diagram.
  • Leveling the hut & the librarien itself unlocks new capabilities to the librarien, the citizens and the crafting system

Knowledge persistence

Creating

  • The librarien has a (hut GUI or a new block specialised for it) system to generate craftings.
  • This involved "guessing" the recipe.
    • You have tabs representing each crafting grid( 2x2, 3x3, mods can add new one)
    • Putting things into the crafting grid provided checks for the outcome.
    • This will be validated to the item tier, the librarien level (& maybe the hut level, but used definitly somewhere else).

Persisting

  • Each (working) citizen has a some knowledge (lets say its a book)
  • Giving a citizen a knowledge page(=a crafting information) lets him store it into his own storage(=in his book)
  • This slots can increase by:
    • Leveling the citizen
    • Leveling the worker hut
    • leveling the librarien hut
    • Leveling the citizens hut (where they live in)
  • Each citizen class has a base number of slots(a blacksmith will craft more then a lumberjack)

Tiered crafting

  • The number of layers to craft an item equals the tier
  • Needs to be defined more.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Translation And Bugs

Minecolonies version

MineColonies 1.8.9 0.3.472

Expected behavior

  1. Translated Achievements Menu (Turkish)
  2. Some Alerts Should Translated
  3. POEditor Should Have All Words in MineColonies (like WorkOrders)
  4. Builder Shouldn't Be Stuck

Actual behaviour

  1. Untranslated Achievements Menu (English Achievements but Game Is Turkish)
  2. Some Alerts Just Pops Out Code-Like Words (While in Turkish)
  3. POEditor Hasn't Got WorkOrders word for translation.
  4. Builder Stucks A While When He/She Builds His/Hers Hut.

Steps to reproduce the problem

Just Look At This Pictures: http://imgur.com/a/7vQEs

Permissions Problems

Minecolonies version v472

Expected behavior

Clicking on a hut from an external colony should not allow me to do anything.

Actual behaviour

I can open the gui and recall the worker.

I cannot open the inventory though.

Steps to reproduce the problem

Play on the server and try other players colonies

Crash when terminating running workOrder

Minecolonies version

The newest release

Expected behavior

No crash

Actual behaviour

Crash

Steps to reproduce the problem

Terminate build workOrder which is running atm.

Build tool sometimes places huts facing into the wrong direction.

Minecolonies version

Newest

Expected behavior

Rotate and place the hut facing the wanted direction.

Actual behaviour

Sometimes faces opposite direction.

Steps to reproduce the problem

Place a hut using the build tool, probably citizen hut at east or west will work.

Multithread AI

Plan to migrate all AI code to a multi-threaded system with targets/goals.

This means that all code running in the server thread will be split up into small easily maintainable chunks.

We also have to make more error checks and so it will solve many problems we currently experience with workers shut down/ fired while performing a critical task.

With a multi-threaded system we can migrate the path-finding to it and clean up some of that messy code. Also we can introduce sub-goals that will help a lot with path-finding as we can somewhat enforce a certain path over others.

Overall we will increase stability as the coder has to think more in terms of actions and less in terms of 50 global variables with 100 edge cases.

[Feature] Market & Trading

Minecolonies version

Future release

Planned Features

  • Having a probably expanding hut that is allowed to have MarketStands in its range.
  • The MarketHut does nothing rather than provide space where Market Stands are allowed to be placed in.
  • The Market Stand provided 2 use cases:
    • The owner is allowed to put stuff to sell into it and apply 1 or more items + amount to it.
    • The non-owner sees a list of wanted items and the giving items (Should be defined more to give a clear relation of what is wanted and what is needed)
    • Placing wanted items in results in showing a list of giving items. A bit comparable to the Villagers trading system.

Addition notes

This system can be used as a basis to define the #5 Anti-Grief more. I would definitly focus on this system to have a more overlook of what our Anti-Grief will need.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Builders Tool too low

The builders tool starts one block too low when you click on the ground.

We should raise it by one, if the building block would be in the ground.

Torque system

Minecolonies version

Any new

Expected behavior

Give some kind of torque by using water/wind mills.
This energy can e.g. run a mill stone or other machines

Actual behaviour

Not added yet.

Steps to reproduce the problem

Not added yet.

[Feature] [$5] Colony Specialisations [$5]

Each colony should be able to have one specialisation that affects the whole colony.

Ideally it should give a bonus and a negative effect (with the bonus being more than the negative.)

Settable by the player in the TH GUI.

Example - "Mining Specialisation" - +10% Bonus to Mining -5% to Woodcutting (every 10th block harvested by a miner has a chance to give double resources, every 20th by the LJ is lost??

We should start with 3 or 4 specialisations and add more as new workers come on board.

So suggested Specialisms (as examples)

"Mining Colony" + Mining - LJ (will be beneficial to people going after a stone colony)
"Forestry Colony" + LJ - Mining (opposite of mining for people going for a wooden colony)
"Farming Colony" + 10% to Arable Farmer, -5% to Animal Farmers
"Rancher Colony" +10% to Animal Farmer Workers, -5% to Arable Farmers
"Defensive Outpost" +20% to guard Health/Damage, -5% Happiness to the Colony
"Metropolis" +10% to Colony Boundary range, -5% to resource generation (all workers)
"Cultural Centre" +10% to Happiness, -10% to Guards Health/Damage

Bountysource


There is a $5 open bounty on this issue. Add to the bounty at Bountysource.

1.8.9-0.2.113 - Builder Things

Ok,

    • Please can we have a confirmation on Firing a worker.. I fired my builder half way through building the builders hut accidentally. Hired the same citizen back as the builder, who then proceeded to ask for an axe, and then demolished the whole builders hut that was built to start the level 1 hut again 📦

Achievements

Achievements and Achievement page for tracing the progress

1.8.9.0.2.117 - Lumberjack

Doesnt chop trees.

See's them, goes and stands next to them.. but doesnt chop them.

Title over lumberjack says "[LUMBERJCAK_CHOP_TREE] but he isn't

Crash on Server after Building place

[B#347]  [15:52:30] [Client thread/INFO]: [CHAT] <Kostronor> we are all in non creative :)
[B#347]  [15:52:34] [Netty Client IO #1/ERROR] [FML]: SimpleChannelHandlerWrapper exception
[B#347]  java.lang.IndexOutOfBoundsException: readerIndex(16) + length(4) exceeds writerIndex(16): SlicedByteBuf(ridx: 16, widx: 16, cap: 16/16, unwrapped: UnpooledHeapByteBuf(ridx: 0, widx: 17, cap: 17))
[B#347]     at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1175) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at io.netty.buffer.AbstractByteBuf.readInt(AbstractByteBuf.java:619) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at com.minecolonies.colony.buildings.AbstractBuilding.createBuildingView(AbstractBuilding.java:710) ~[AbstractBuilding.class:?]
[B#347]     at com.minecolonies.colony.ColonyView.handleColonyBuildingViewMessage(ColonyView.java:348) ~[ColonyView.class:?]
[B#347]     at com.minecolonies.colony.ColonyManager.handleColonyBuildingViewMessage(ColonyManager.java:718) ~[ColonyManager.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:55) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:16) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
[B#347]     at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
[B#347]     at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:81) [FMLProxyPacket.class:?]
[B#347]     at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:151) [ek.class:?]
[B#347]     at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:54) [ek.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:386) [NetworkDispatcher.class:?]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:252) [NetworkDispatcher.class:?]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:53) [NetworkDispatcher.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:150) [ReadTimeoutHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130) [AbstractNioByteChannel$NioByteUnsafe.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final]
[B#347]     at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
[B#347]  [15:52:34] [Netty Client IO #1/ERROR] [FML]: SimpleChannelHandlerWrapper exception
[B#347]  java.lang.IndexOutOfBoundsException: readerIndex(16) + length(4) exceeds writerIndex(16): SlicedByteBuf(ridx: 16, widx: 16, cap: 16/16, unwrapped: UnpooledHeapByteBuf(ridx: 0, widx: 17, cap: 17))
[B#347]     at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1175) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at io.netty.buffer.AbstractByteBuf.readInt(AbstractByteBuf.java:619) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at com.minecolonies.colony.buildings.AbstractBuilding.createBuildingView(AbstractBuilding.java:710) ~[AbstractBuilding.class:?]
[B#347]     at com.minecolonies.colony.ColonyView.handleColonyBuildingViewMessage(ColonyView.java:348) ~[ColonyView.class:?]
[B#347]     at com.minecolonies.colony.ColonyManager.handleColonyBuildingViewMessage(ColonyManager.java:718) ~[ColonyManager.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:55) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:16) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
[B#347]     at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
[B#347]     at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:81) [FMLProxyPacket.class:?]
[B#347]     at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:151) [ek.class:?]
[B#347]     at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:54) [ek.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:386) [NetworkDispatcher.class:?]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:252) [NetworkDispatcher.class:?]
[B#347]     at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:53) [NetworkDispatcher.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:150) [ReadTimeoutHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130) [AbstractNioByteChannel$NioByteUnsafe.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [NioEventLoop.class:4.0.23.Final]
[B#347]     at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final]
[B#347]     at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
[B#347]  [15:52:34] [Netty Client IO #1/ERROR] [FML]: SimpleChannelHandlerWrapper exception
[B#347]  java.lang.IndexOutOfBoundsException: readerIndex(16) + length(4) exceeds writerIndex(16): SlicedByteBuf(ridx: 16, widx: 16, cap: 16/16, unwrapped: UnpooledHeapByteBuf(ridx: 0, widx: 17, cap: 17))
[B#347]     at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1175) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at io.netty.buffer.AbstractByteBuf.readInt(AbstractByteBuf.java:619) ~[AbstractByteBuf.class:4.0.23.Final]
[B#347]     at com.minecolonies.colony.buildings.AbstractBuilding.createBuildingView(AbstractBuilding.java:710) ~[AbstractBuilding.class:?]
[B#347]     at com.minecolonies.colony.ColonyView.handleColonyBuildingViewMessage(ColonyView.java:348) ~[ColonyView.class:?]
[B#347]     at com.minecolonies.colony.ColonyManager.handleColonyBuildingViewMessage(ColonyManager.java:718) ~[ColonyManager.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:55) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at com.minecolonies.network.messages.ColonyViewBuildingViewMessage.onMessage(ColonyViewBuildingViewMessage.java:16) ~[ColonyViewBuildingViewMessage.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:37) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:17) ~[SimpleChannelHandlerWrapper.class:?]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) [SimpleChannelInboundHandler.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:4.0.23.Final]
[B#347]     at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
[B#347]     at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]

com.minecolonies.colony.buildings.AbstractBuilding.createBuildingView(AbstractBuilding.java:710) seems relevant

Clean up old code

Since some areas of the code are at least subpar, we should go over them and clean that up.

Currently worked on by @Isfirs in discussion with @Kostronor

Composter [$5 awarded]

A new worker who will take biologic material and converts it into compost. Compost can be used like bonemeal (but with less effect) and can be used by the farmer for example.

We need: A barrel (custom block), compost (custom item) and the composter (citizen, building and ai)

Bountysource


The $5 bounty on this issue has been claimed at Bountysource.

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.