Jump to content

Some web services and downloads are currently unavailable due to internal restructuring. In the meantime you can probably find what you're looking for in our Discord chat server. For more information, check the newsfeed or ask in Discord.

United Kingdom Tinytimrob

Robert James Dennington
Programming Staff
  • Content Count

  • Joined

  • Last visited

  • Days Won


Tinytimrob last won the day on May 20 2018

Tinytimrob had the most liked content!

Community Reputation

218 Excellent

About Tinytimrob

  • Rank
    Executive Director & Lead Programmer
  • Birthday 09/11/1991

Personal Information

  • Location
  • Gender

Recent Profile Visitors

4720 profile views
  1. Resolved in 27 DEV9.4
  2. A new update is now available for Robbit (version 27.0.0-DEV9.4, revision 5106). Patch notes for this version follow. Robbit "Fondant Fancy" Patch 27, Development Preview 9.4 (15 February 2019) Bug Fixes and General Changes Fixed a possible crash which might occur when being shot at by Strays in the Frost biome. Reporting Bugs If you find any bugs, please report them on the Robbit issue tracker. This will help us to weed out and fix bugs faster and more efficiently. Thank you.
  3. I wrapped the arrowHit function so that it only executes on server side (netsync should sync the potion effect to client) and only if potion!=null. Should fix the problem
  4. Early investigation indicates the NPE was thrown when calling hasTagCompound on ItemStack which was passed into getEffects function of ItemPotion (see here lines 56-62) /** * Returns a list of potion effects for the specified itemstack. */ public List getEffects(ItemStack p_77832_1_) { if (p_77832_1_.hasTagCompound() && p_77832_1_.getTagCompound().hasKey("CustomPotionEffects", 9)) { from the arrowHit function of EntityTippedArrow (see lines 158-163) @Override protected void arrowHit(EntityLivingBase living) { super.arrowHit(living); List effects = Items.potionitem.getEffects(potion); This would indicate the potion variable was null. This should be impossible, since the potion variable is never replaced with null, and it is initialized to a valid stack in the entityInit function: @Override protected void entityInit() { super.entityInit(); this.potion = new ItemStack(Items.potionitem, 1, 0); The potion variable is never sync'd to the client, as it has no need for the data. Therefore, the only way it could be null from what I could see is if entityInit was never called, which seems unlikely, given that it's called by the constructor. The alternative is that the tag compound is null and the NPE is being thrown by calling hasKey, but hasTagCompound only returns true if it ISN'T null, so that would seem impossible too. Consequently, I'm not sure at all right now what would trigger this crash.
  5. Had this sent to me by Tyler Bisso: java.lang.NullPointerException: Ticking entity at net.minecraft.item.ItemPotion.func_77832_l(ItemPotion.java:61) at robbit.backcraft.entity.projectile.EntityTippedArrow.arrowHit(EntityTippedArrow.java:163) at net.minecraft.entity.projectile.EntityArrow.func_70071_h_(EntityArrow.java:360) at robbit.backcraft.entity.projectile.EntityTippedArrow.func_70071_h_(EntityTippedArrow.java:78) at net.minecraft.world.World.func_72866_a(World.java:2341) at net.minecraft.world.World.func_72870_g(World.java:2294) at net.minecraft.world.World.func_72939_s(World.java:2132) at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:2147) at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1062) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:985) at net.minecraft.client.main.Main.main(Main.java:194) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
  6. A new update is now available for Robbit (version 27.0.0-DEV9.3, revision 5103). Patch notes for this version follow. Robbit "Fondant Fancy" Patch 27, Development Preview 9.3 (11 February 2019) Bug Fixes and General Changes Fixed a crash when trying to place FMP covers on AE2 cables. Reporting Bugs If you find any bugs, please report them on the Robbit issue tracker. This will help us to weed out and fix bugs faster and more efficiently. Thank you.
  7. Tinytimrob

    Crash placing FMP cover on AE2 cable

    Fixed in r5102
  8. Tinytimrob

    Crash placing FMP cover on AE2 cable

    Looks like this crash is caused by a typo. @Override public TileEntity getTile() { return this.getCableBus().getTile(); } should be @Override public TileEntity getTile() { return this.tile(); } The original line is a compile fix added in appliedenergistics subrepo revision 59 (dev-mu1 changeset 3f800b1efcec) dated 2017-05-03 14:41:52 +0100. Main robbit source revision introducing the bug is dev-mu1 r4531 (00f865b3192b) [Update Applied Energistics 2 to version rv3-beta-6] merged into fondant as r4565 (1b32f7a69b87). First version of Robbit to have this crash is 27.0.0-DEV5 released on 4th June 2017.
  9. Tinytimrob

    Crash placing FMP cover on AE2 cable

    Confirmed issue
  10. As per title. It gets stuck in a loop. ---- Robbit Mod Pack Crash Report ---- // This crash definitely wasn't Rob's fault... Time: 2/10/19 11:52 PM Description: Exception in server tick loop java.lang.StackOverflowError: Exception in server tick loop at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) at appeng.parts.CableBusContainer.getTile(CableBusContainer.java:364) at appeng.fmp.CableBusPart.getTile(CableBusPart.java:706) <snip> A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.7.10 Robbit Version: Fondant Fancy 27.0.0-DEV9.2 (fondant-r5100) Operating System: Windows Server 2016 (amd64) version 10.0 Java Version: 1.8.0_191, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 15640479472 bytes (14915 MB) / 17110138880 bytes (16317 MB) up to 17110138880 bytes (16317 MB) JVM Flags: 14 total; -Xms16G -Xmx16G -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:MaxGCPauseMillis=50 -XX:+DisableExplicitGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseBiasedLocking -XX:TargetSurvivorRatio=90 -XX:+UseLargePages AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 14, tallocated: 94 FML: ~~ERROR~~ NoClassDefFoundError: org/lwjgl/Sys AE2 Version: beta rv3-beta-6 for Forge AE2 Integration: IC2:ON, RotaryCraft:OFF, RC:ON, BuildCraftCore:ON, BuildCraftTransport:ON, BuildCraftBuilder:ON, RF:ON, RFItem:ON, MFR:OFF, DSU:ON, FZ:OFF, FMP:ON, RB:OFF, CLApi:OFF, Waila:ON, Mekanism:OFF, ImmibisMicroblocks:OFF, BetterStorage:OFF, OpenComputers:OFF, PneumaticCraft:OFF Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 1 / 64; [EntityPlayerMP['Tinytimrob'/420, l='dimensions', x=901.34, y=67.00, z=1313.31]] Is Modded: Definitely; Server brand changed to 'robbit' Type: Dedicated Server (map_server.txt) Workaround for now is not to place covers on AE2 cables.
  11. The development of GIF is proceeding at full pace. It's been around 6 months since the last blog post, so I figured I'd get everyone up to speed with the state of the game's development. Level design I'm pleased to report that we have now completed the design and development of all levels. The final level to be completed, Suspension, was submitted by Paul on 26th January. To the best of my knowledge, the game should now be completely playable from start to finish without any major issues! As a result, we are now working on polishing Several of the newer levels have been designed by Braydon who was previously focusing on music and sound. He turned out to be a really versatile and multi-talented guy and I think we're very lucky to have him on the team. In the last blog post, I talked about how we hadn't yet decided on what to call the "classic" zone. The name we ended up choosing was the cave zone. To go along with this, many of the levels have been thematically restyled in order to have a more cave-like feel to them - Braydon did a lot of work in this area. We've also added the previously promised parallax backgrounds to provide a really visually stunning appearance to the game. Here you can see a before-and-after comparison of the level "Twists and Turns" which was shown off in the last blog post: As you can see, the new version of the level has a sort of darker and more cave-like feel to it. This is something we have worked hard to push for, and it really shows - many of the levels have been greatly improved as a result of the work. The ice zone has received similar treatment, and the new background helps to really emphasise the icy feel with layered spikes jutting out from the ceiling and floor: Finally, the factory zone background features pipes and metal lattice: If you compare to the original backgrounds, you can really see how much better these look, especially once you get in-game and see the parallax effect. Trevor has done an amazing job here and the effort has definitely paid off. Of the 75 levels, 49 of them currently have medal times set, and both the cave and ice zones have had their levels ordered appropriately in order to make the difficulty increase gradual. The remaining 26 levels without medal times set (1 ice zone level and all factory zone levels) are currently being worked on to figure out what medal times are appropriate, and the factory zone level ordering will follow shortly afterwards. This is a process I expect to take a few more weeks. New menus We are currently in the process of working on replacing the placeholder menus with ones that look more professional. You can see some of the new menus here: Main Menu Pause Menu Settings Menu Most importantly, the settings menu can now be opened from either the main menu screen OR the in-game pause screen. As a result, it is now possible to edit things such as audio volume or screen resolution without having to abandon play. Improved help signs The help sign system has been significantly improved. When the player walks over a help sign, the bottom of the screen now shows a little tooltip showing you which key or button to press to read the help sign: If you press the relevant button, you're presented with the help information and the game timer pauses to allow you to read it: This works much better than the previous methods of either forcing the annoying popup to be displayed (like the original) or displaying it in an obtrusive fashion over the top of the level (like the remaster previously used to do). Improved level select and statistics The level select screen is currently the area undergoing new work. The PC/console version of this screen hasn't been skinned yet, but there are a couple of improvements to show. Firstly, the medal sprite has been updated and looks way more polished. Secondly, the leaderboard now has the best times colour-coded by medal type, with the medal being shown next to the time, and the timing numbers have been properly aligned to avoid visual discomfort. Thirdly, this screen now shows you how many attempts you've made on each level, how many times you completed it, and your overall success rate. You might also notice the new "statistics" button, which sends you to a display showing you how many times you were killed by each type of thing so far: These screens are still a work-in-progress, and, as I said, they haven't been skinned yet. You can therefore expect them to look way better once the skinning is done. For mobile, we are hopefully going to design a completely new level select screen which features swiping to select levels. This hasn't been implemented yet though. Medal shown on level complete screen The level complete screen has been modified to show the medal you obtained, complete with a little lanyard: This screen is, again, not skinned yet. You can expect to see some significant visual improvements here once the skinning is done. Other improvements In addition to visual polish, the game has had a number of important performance improvements applied to it recently. The biggest area of work has been in collisions, with inaccessible blocks no longer having any collision mesh, and with the remaining blocks having caching groups applied in order to further reduce the number of collision calls. This has almost doubled the fps of the game on some phones, as well as helping to smooth out lag spikes, which is obviously really important for the mobile release. I am going to continue to look for areas where the performance can be improved over the coming weeks as we eek closer to the release deadline. I've also taken the time to improve the USB controller code. The game can now be played using the analog stick in addition to the d-pad thanks to a new subroutine which divides the analog stick into 8 equal segments in order to reliably determine which direction you intended to move in. It works really well - controlling the player is really consistent. There is also now a new setting which allows you to jump using the stick rather than using the jump button if you so wish (although IMO it makes the game significantly harder to play - serious players are likely to avoid it). The mobile touch controls have been improved in a similar way, and can now be resized so that you can set a comfortable control size for your device. The superjump button will now also disappear by default when not required (but if you dislike that behaviour, you can disable it in the settings menu). The medal system has been slightly adjusted too. You will now receive a "rusty" medal in the event that you complete a level but don't get a time worthy of the bronze rank (although we expect that most players will be able to hit bronze rank without too much difficulty). The rusty medal will not be worth any points towards unlocking the next zone, although the zone unlock restrictions are going to be relaxed a little. The idea is that you will be able to unlock the next zone either by A) getting enough points, or B) completing every level in the previous zone. This means that you can get 25 rusty medals and you will still advance to the following area. For this reason, the first play-through can be focused on just completing each level if you prefer, rather than worrying about how good a time you achieved. Final remarks I hope this update has given a little insight into the state of the game right now, along with what you can expect going forward I can also pretty confidently say that we are really close to release now that all the game design work is essentially finished. Once the rest of the polishing is completed, I can see us handing the game over to the various publishing stores pretty promptly. We are also likely to start work on the trailer and advertising materials soon. If you're interested in this game, please check out the Discord server to keep up to date with the latest news and to hear promptly about any upcoming release announcements.
  12. I'm pleased to report that the HG repository service (hg.ginever.net) is now tentatively reopen. The newly updated service is powered by the latest version of Kallithea SCM. As part of the update, Kallithea has been patched to support 2FA codes during the login process, along with push and pull by using SSH/pageant. These two changes were required in order to support GineverAccount 5.1 and are effectively tied together, because the 2FA codes break the username/password authentication typically provided over https, meaning that people with 2FA enabled are effectively forced to use SSH instead. Because these patches are experimental, they are not very well tested, and may end up causing minor problems. As a result of this, the new service will be shadowing the Bitbucket repositories until I'm happy that it is decently stable, and may be subject to arbitrary patches and bug fixes. Any issues you discover should be reported to me directly. Please note that if you wish to use the service, you will have to head over there and (if needed) input your SSH public keys into the control panel in the exact same way you previously did at Bitbucket. Please contact me if you think you need help with this. Thanks all.