Jump to content
  • Home
  • Files
  • Docs
  • Merch
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • MinecraftForge Chroma Mod [move to mods]
1.13 Update Notes for Mod Creators
Sign in to follow this  
Followers 0
LoganJohnG

MinecraftForge Chroma Mod [move to mods]

By LoganJohnG, August 18 in Modder Support

  • Reply to this topic
  • Start new topic
  • Prev
  • 1
  • 2
  • Next
  • Page 2 of 2  

Recommended Posts

Animefan8888    677

Animefan8888

Animefan8888    677

  • Reality Controller
  • Animefan8888
  • Forge Modder
  • 677
  • 5746 posts
Posted August 27
4 minutes ago, LoganJohnG said:

 Okay this works great to detect open and close chest events.

If you need both the open and close events you should subscribe to them separately.

 

5 minutes ago, LoganJohnG said:

Sure I played some MC. Not an extensive amount though. I'd have to ask my kids how it works when they get home.

This makes a lot more sense. I understand why you would want to play the game to figure out the events. Because you dont know much about the game from playing it already.

  • Quote

Share this post


Link to post
Share on other sites

LoganJohnG    0

LoganJohnG

LoganJohnG    0

  • Tree Puncher
  • LoganJohnG
  • Members
  • 0
  • 7 posts
Posted August 27

The Type Hierarchy is definitely useful to find the events.

 

image.png.40a32706c75452cb06e49493c502cb02.png

 

 

I added a delay when checking if a door is open for the case for the iron door might not open. Also when you open a door it's closed when initially right-clicking it.

 

	@SubscribeEvent
	public void handleRightClickBlock(RightClickBlock event) {
		final BlockPos pos = event.getPos();
		final World world = event.getWorld();
		new java.util.Timer().schedule( 
		        new java.util.TimerTask() {
		            @Override
		            public void run() {
		            	IBlockState blockState = world.getBlockState(pos);
		        		if (null != blockState) {
		        			StateImplementation state = (StateImplementation) blockState;
		        			Block block = state.getBlock();
		        			switch (block.getRegistryName().toString()) {
		        			case "minecraft:acacia_door":
		        			case "minecraft:birch_door":
		        			case "minecraft:dark_oak_door":
		        			case "minecraft:iron_door":
		        			case "minecraft:jungle_door":
		        			case "minecraft:spruce_door":
		        			case "minecraft:wooden_door":
		        				for (IProperty<?> p : state.getPropertyKeys()) {
		        					if (p.getName().equals("open")) {
		        						if ((boolean) state.getValue(p)) {
		        							System.out.println("Door is open");
		        						} else {
		        							System.out.println("Door is closed");
		        						}
		        						break;
		        					}
		        				}
		        				break;
		        			default:
		        				System.out.println("RightClickBlock name: " + block.getRegistryName() + "class " + block.getClass());
		        				break;
		        			}
		        		}
		            }
		        }, 
		        250 //ms 
		);		
	}

 

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2093

Draco18s

Draco18s    2093

  • Reality Controller
  • Draco18s
  • Members
  • 2093
  • 14026 posts
Posted August 27 (edited)
7 minutes ago, LoganJohnG said:

Block block = state.getBlock();

switch (block.getRegistryName().toString()) {

Oh jesus christ. There are like five better ways to do this.

 

Just two I can think of

 

block instanceof DoorBlock && block.getMaterial() == Material.WOOD

block == Blocks.ACACIA_DOOR || <the rest>

 

Just because something can be expressed as a string doesn't mean you should.

Edited August 27 by Draco18s
  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted August 27

Thanks cleaned up the strings.

 

	@SubscribeEvent
	public void handleRightClickBlock(RightClickBlock event) {
		final BlockPos pos = event.getPos();
		final World world = event.getWorld();
		new java.util.Timer().schedule(new java.util.TimerTask() {
			@Override
			public void run() {
				IBlockState blockState = world.getBlockState(pos);
				if (null != blockState) {
					StateImplementation state = (StateImplementation) blockState;
					Block block = state.getBlock();
					if (block == Blocks.ACACIA_DOOR || block == Blocks.BIRCH_DOOR || block == Blocks.DARK_OAK_DOOR
							|| block == Blocks.IRON_DOOR || block == Blocks.JUNGLE_DOOR || block == Blocks.SPRUCE_DOOR
							|| block == Blocks.OAK_DOOR) {
						for (IProperty<?> p : state.getPropertyKeys()) {
							if (p.getName().equals("open")) {
								if ((boolean) state.getValue(p)) {
									System.out.println("Door is open");
								} else {
									System.out.println("Door is closed");
								}
								break;
							}
						}

					}
				}
			}
		}, 250 // ms
		);
	}

 

  • Quote

Share this post


Link to post
Share on other sites

Animefan8888    677

Animefan8888

Animefan8888    677

  • Reality Controller
  • Animefan8888
  • Forge Modder
  • 677
  • 5746 posts
Posted August 27
7 minutes ago, Tim Graupmann said:

for (IProperty<?> p : state.getPropertyKeys()) { if (p.getName().equals("open")) {

And instead of this you could do state.getValue(BlockStateProperties.OPEN) if you are in 1.14.4

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted August 27 (edited)

I'm running MC 1.11.2 which was part of a modding course. It's worth upgrading for the easy syntax.

 

image.png.8e9449a191950d45e65c28c75c2e3670.png

Edited August 27 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

DaemonUmbra    358

DaemonUmbra

DaemonUmbra    358

  • Reality Controller
  • DaemonUmbra
  • Forum Team
  • 358
  • 6417 posts
Posted August 27

Congrats, you're learning things about outdated versions of both Minecraft and Forge

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2093

Draco18s

Draco18s    2093

  • Reality Controller
  • Draco18s
  • Members
  • 2093
  • 14026 posts
Posted August 27

And an oddball outdated version none the less.

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted August 27

I'm headed to PAX West Seattle on Friday and I have to get Razer things ready for the rest of the week. I'll get back on this next week and upgrade my version. If you are at PAX, check out the Razer booth.

 

https://west.paxsite.com/

 

  • Quote

Share this post


Link to post
Share on other sites

loordgek    163

loordgek

loordgek    163

  • World Shaper
  • loordgek
  • Members
  • 163
  • 1606 posts
Posted August 27

can you put the mod on github ??

why are there 2 users, Tim Graupmann and LoganJohnG doing the same thing ?? team ?

 

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted August 27 (edited)

Ah Logan is my kid's computer that I used when doing homework with the kids. :)

 

And yes, I'll put the mod on github when I'm done.  That's the plan.

 

I'll probably have my sandbox version here - https://github.com/tgraupmann

 

And the official version here - https://github.com/RazerOfficial/

Edited August 27 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 3 (edited)

Okay here's the first part. I checked into a public repository.

https://github.com/tgraupmann/MinecraftChromaMod

 

Currently it's just doing some print logging when events happen. I have another Chroma RGB to integrate once I have the events in place.

 

I'll see about upgrading Minecraft Forge next...

 

This is where the interesting code is.

https://github.com/tgraupmann/MinecraftChromaMod/blob/master/src/main/java/com/example/examplemod/MyForgeEventHandler.java

 

Grabbing the sample source and upgrading gradle, running the setup/etc.

https://mcforge.readthedocs.io/en/latest/gettingstarted/

 

Edited September 3 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 3 (edited)

Okay it seems like the Minecraft Forge has trouble building with Oracle's JAVA.

 

C:\Users\timot\Downloads\forge-1.12.2-14.23.5.2844-mdk>gradlew.bat setupDecompWorkspace
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.14/userguide/gradle_daemon.html.
This mapping 'snapshot_20171003' was designed for MC 1.12! Use at your own peril.
#################################################
         ForgeGradle 2.3-SNAPSHOT-7764e3e
  https://github.com/MinecraftForge/ForgeGradle
#################################################
                 Powered by MCP
             http://modcoderpack.com
     by: Searge, ProfMobius, R4wk, ZeuX
     Fesh0r, IngisKahn, bspkrs, LexManos
#################################################
:deobfCompileDummyTask
:deobfProvidedDummyTask
:getVersionJson
:extractUserdev UP-TO-DATE
:extractDependencyATs SKIPPED
:extractMcpData SKIPPED
:extractMcpMappings SKIPPED
:genSrgs SKIPPED
:downloadClient SKIPPED
:downloadServer SKIPPED
:splitServerJar SKIPPED
:mergeJars SKIPPED
:deobfMcSRG SKIPPED
:decompileMc SKIPPED
:fixMcSources
:applySourcePatches
Patching failed: cp/MethodsReturnNonnullByDefault.java Cannot find hunk target
  1: Cannot find hunk target @ 0
  1/1 failed
:applySourcePatches FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':applySourcePatches'.
> com.cloudbees.diff.PatchException: Cannot find hunk target

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 32.666 secs

 

I upgraded gradle to the latest 5.6.1.

gradlew wrapper --gradle-version=5.6.1
gradlew -v

 

I had those same build errors for the latest MCF stable version, so I went right for the latest.

https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.14.4.html

 

gradlew eclipse

 

This runs for a while...

Edited September 3 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 3
gradlew runClient

 

It runs!

 

image.png.4b03c3ed20138fe3c5dcb61792fca23d.png

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 4

I have Chroma effects playing with some temporary API calls from JChroma.

https://github.com/tgraupmann/JChroma

 

I need to expose the C++ API to JAVA.

https://github.com/razerofficial/CChromaEditor

 

I just need to expose the basics like setting the idle animation, playing an animation with/without looping, and copy/add/subtract layers.

 

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 9

And it's working with the upgraded Chroma library.

 

First there's a C++ DLL and I have a tool that parses the C++ header to get all the nice helper functions and comments.

https://github.com/tgraupmann/ChromaAPISync/blob/master/bin/Debug/stdafx.h

 

And then the DLL interface library is generated.

https://github.com/tgraupmann/ChromaAPISync/blob/master/bin/Debug/JChromaLib.java

 

And then the wrapper Java is generated.

https://github.com/tgraupmann/ChromaAPISync/blob/master/bin/Debug/JChromaSDK.java

 

This gets copied over to the Java Chroma library.

https://github.com/tgraupmann/JChroma

 

And then it's ready for the Minecraft mod.

https://github.com/tgraupmann/MinecraftChromaMod/blob/master/src/main/java/com/example/examplemod/MyForgeEventHandler.java

 

This exposes the nice API from the guide to Java.

http://chroma.razer.com/ChromaGuide/

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 9 (edited)

Here's a video where you can see it working.

 

 

Source code: https://github.com/tgraupmann/MinecraftChromaMod/blob/master/src/main/java/com/example/examplemod/MyForgeEventHandler.java

 

I'll add more Chroma effects for the various events as I figure things out...

 

Things to figure out:

* Attack with a sword

* Place a block

* Ride in a cart

* Crafting

* Destroy a block
* Climb a ladder

* Get hurt by a creeper

* Kill a pig

* Drink a potion

* Stand near a chicken

* Walk through a portal

* Place a fish

* Swim through bubbles

* Weather snow

* Weather rain

 

Edited September 10 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

Animefan8888    677

Animefan8888

Animefan8888    677

  • Reality Controller
  • Animefan8888
  • Forge Modder
  • 677
  • 5746 posts
Posted September 10
10 minutes ago, Tim Graupmann said:

Place a block

BlockEvent.EntityPlaceEvent

12 minutes ago, Tim Graupmann said:

Crafting

PlayerEvent.ItemCraftedEvent

 

13 minutes ago, Tim Graupmann said:

Destroy a block

BlockEvent.Break

13 minutes ago, Tim Graupmann said:

Get hurt by a creeper

LivingDamageEvent and check if the LivingDamageEvent#getSource().getTrueSource() is an instance of CreeperEntity

 

15 minutes ago, Tim Graupmann said:

Kill a pig

LivingDeathEvent and check if the LivingDeathEvent#getEntityLiving() is an instance of PigEntity and also check LivingDeathEvent#getSource().getTrueSource() is an instanceof PlayerEntity.

18 minutes ago, Tim Graupmann said:

Stand near a chicken

You would have to use the PlayerTickEvent and use World#getEntitiesWithinAABB to check for ChickenEntity

 

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 10

Thanks for the hints. I'm going to spend a day on those video Chroma widgets. It's hard to see on the side and I'll make it so they appear on top of the game so they can be bigger and easier to see the lighting patterns.

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 10 (edited)

I integrated some scalable SVG widgets that I can show on top of the video. I have to work out some SVG content document issues on the streaming platforms before I can use it on a live stream. ugh...

 

https://github.com/tgraupmann/Mixer-Sample-SVG

 

image.png.610ad7864ec82c1c7914abc2898842ae.png

Edited September 11 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 11 (edited)

I found a workaround by embedding the SVG content on the HTML page. Okay now I can make some better video.

 

image.png.4734c837f3e2dbd005a364088a56688d.png

Edited September 11 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites

DaemonUmbra    358

DaemonUmbra

DaemonUmbra    358

  • Reality Controller
  • DaemonUmbra
  • Forum Team
  • 358
  • 6417 posts
Posted September 11

This is starting to go from "Support and Bug Reports" to "Mods" if you want to make a thread that advertises your mod please do so in the correct subforum instead of your support thread.

  • Quote

Share this post


Link to post
Share on other sites

Tim Graupmann    0

Tim Graupmann

Tim Graupmann    0

  • Tree Puncher
  • Tim Graupmann
  • Members
  • 0
  • 24 posts
Posted September 12 (edited)

I can't actually move the thread. Can a moderator move it? I renamed the topic...

 

 

Edited September 12 by Tim Graupmann
  • Quote

Share this post


Link to post
Share on other sites
  • Prev
  • 1
  • 2
  • Next
  • Page 2 of 2  

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 0
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • vMystic
      [1.12.2] plugin with id 'net.minecraftforge.gradle.forge' not found

      By vMystic · Posted 11 minutes ago

      Ive tried googling for a long time and i cant find anything on this, Whenever I try to run gradlew setupDecompWorkspace I get the error plugin with id 'net.minecraftforge.gradle.forge' not found ive talked with someone and they said the people here can help me with this issue. Any suggestions?
    • Yanny7
      [1.14.4] Stone Age mod

      By Yanny7 · Posted 53 minutes ago

      v1.0.1 - added mammoth tusk item - added Mammoth entity - moved tools to mod group - integrated TheOneProbe - drying rack improved add/remove item - fixed Aquaduct connecting vertically
    • salvestrom
      [1.14.4] How to get Minecraft Horse model/texture to make a custom unicorn?

      By salvestrom · Posted 1 hour ago

      I did not say at any point that your model should extend model entity.   This requires three classes. Your entity class should extend HorseEntity giving you access to all of the GUI, saddling and taming. Your render class should be adjusted to not be using the superfluous classy created, as I previously mentioned. Your model class needs to extend HorseModel – this is how you will inherit the animations and bulk of the model.   Note that AbstractHorseEntity does not have all of the code for horses, only the shared code between the various horse entities.
    • RyanGV95
      Forge Can't Install

      By RyanGV95 · Posted 2 hours ago

      I’ll give that a shot after I get off. Thanks so much!
    • solitone
      Distinguish singleplayer vs. multiplayer

      By solitone · Posted 2 hours ago

      So I would have ServerScriptItem and ClientScriptItem, both inheriting from ScriptItem, and I would register a ServerScriptItem object on the dedicated server and a ClientScriptItem object on the client?
  • Topics

    • vMystic
      0
      [1.12.2] plugin with id 'net.minecraftforge.gradle.forge' not found

      By vMystic
      Started 11 minutes ago

    • Yanny7
      1
      [1.14.4] Stone Age mod

      By Yanny7
      Started 4 hours ago

    • DragonITA
      27
      [1.14.4] How to get Minecraft Horse model/texture to make a custom unicorn?

      By DragonITA
      Started Monday at 10:06 AM

    • RyanGV95
      3
      Forge Can't Install

      By RyanGV95
      Started 4 hours ago

    • solitone
      14
      Distinguish singleplayer vs. multiplayer

      By solitone
      Started December 5

  • Who's Online (See full list)

    • finley243
    • vMystic
    • ExitCore
    • diesieben07
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • MinecraftForge Chroma Mod [move to mods]
  • Theme
  • Contact Us
  • Discord

Copyright © 2019 ForgeDevelopment LLC · Ads by Curse Powered by Invision Community