Jump to content

JAKJ's "Fair Trade" (discontinued)


jakj

Recommended Posts

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

Getting my stuff built up without using EE is taking longer than thought so I still haven't managed to test how the liquid stuff works. Though I did find a somewhat funny bug/feature with the explosion change.

Basically I had a steam engine overheat on me and it just sat there exploding endlessly as fast as it could like a firecracker. I bet it would be even funnier with nuclear plant going supercritical :)

Link to comment
Share on other sites

  • Replies 108
  • Created
  • Last Reply

Top Posters In This Topic

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

Glad to hear it. I'm trying to recapture some of the best elements in a form that eliminates the passivity of it all, bringing the "mine" back to "Minecraft" with EE installed.

Right now I'm working on a new way to chop trees besides Treecapitator: Put your axe in a sort of long-handled clipper thing, then hold right-click on a tree and it chops the leaves and logs one at a time at regular speed. Also a similar device for ore veins, that can mine a whole vein if you put a divining rod in it (like radar) or just the visible blocks otherwise. And left-click will just use the tool normally.

I feel this is balanced while letting you have neat EE tools the first night.

Link to comment
Share on other sites

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

Glad to hear it. I'm trying to recapture some of the best elements in a form that eliminates the passivity of it all, bringing the "mine" back to "Minecraft" with EE installed.

Right now I'm working on a new way to chop trees besides Treecapitator: Put your axe in a sort of long-handled clipper thing, then hold right-click on a tree and it chops the leaves and logs one at a time at regular speed. Also a similar device for ore veins, that can mine a whole vein if you put a divining rod in it (like radar) or just the visible blocks otherwise. And left-click will just use the tool normally.

I feel this is balanced while letting you have neat EE tools the first night.

so you're making a better than better than wolves?

Link to comment
Share on other sites

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

I'd love to see that kind of tree-chopping/mining changes. Will those work with all trees, including redpower gigantic rubber ones and thaumcraft stuff (meaning is it easy to make it work with them, treecapitator doesn't seem to work)? Will the mining stuff work with non-ores as well (target cobble -> mine a ton of it without moving)? I guess the mining thing could be made into a configuration option :)

Also, I finally got around to testing the liquid stuff and it works awesomely. Just RP2 pumps seem to have a tiny bit of problems depositing it as waterline isn't always spreading as far as it should and I'm getting just 1-2 blocks sometimes instead of 8 that it should spread. Quite definitely it has nothing to do with your mod though.

Link to comment
Share on other sites

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

Yes it will work with those trees because it doesn't require overriding the log objects. Also have an idea for a treetap extender.

The hard part is the logic for separating trees that are joined at the leaves. Will probably have to detect trunks and take average distance betwen.

Link to comment
Share on other sites

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

By the way, sorry about this, but I don't see anything about the IC2 fuel being able to be used in combustion engines. Steam engines can't be cooled. If not I'll just have to use a tc generator or something.

Link to comment
Share on other sites

Re: [MC 1.1/SSP 6.0.7] JAKJ's "Fair Trade" 0.1.0.0 (Apr. 8, 2012)

Hello, I downloaded the mod and did the following:

pasted the zip in the mods folder, pasted the cfg file in the config folder and dragged and dropped the .class files inside the modpack.jar file.

And when I try to start the launcher the only thing that happens is it stays at a white screen and never loads.

Any ideas why this might be ?

I attached the way it stays when i try to start it.

P.S. I am using the stable not the dev version.

Link to comment
Share on other sites

I have discontinued this almost-was-a-mini-mod-of-mods-updated-once-a-month-because-I'm-easily-distracted. If you care about why, you may read the modified OP.

Thank you, and have a good day.

Link to comment
Share on other sites

I have decided to abandon this effort at a public mod. (Few would probably care anyway, since I'm so slow to do anything with this in the first place, but if you're interested in my reasoning, feel free to keep reading.) Also, if a moderator could move this into open discussion or off-topic (or even the whale box, if that's deemed appropriate, or else leave it here if you think it should stay), I'd appreciate it.

I've been peripherally involved with Minecraft modding for only a few months, but in those few months I've gone all the way up and all the way down the emotional ladder. I would like to point out to everyone concerned that we are working with a closed-source computer game that still, at this very moment, has a ToS that actually prohibits almost every single current mod from existing. This is germane to my following point.

I have become tired of the attitude that many (not all...but many) modders seem to have. Let me lay out the steps that go into these mods:

1) Break Minecraft's ToS by decompiling it.

2) Break Minecraft's ToS again by altering, recompiling, and distributing entire class files out of it (rarely ever using binary patches instead).

3) Break Minecraft's ToS yet again by publicly providing the source code of the changes made. (It is possible to view the entire decompiled source code of multiple Minecraft versions using nothing but Google.)

Now, I happen to think all of this is fine, because I feel that Notch's anti-modding effort mixed with his mod-tolerant stance of not actually enforcing the ToS is rather ridiculous. But you know what further is ridiculous? When modders turn around and get a hypocritical attitude that actually goes against the process they just went through to create their mod in the first place.

I'm not even going to mention or link to the mod and author I'm talking about here, because my purpose is not to stir up a shitpot. But just today I read a message that a mod author posted, expressing their displeasure that someone had altered their mod (which is an alteration of Minecraft) and was breaking their ToS (as they broke Minecraft's ToS), and that they would not stand for it.

I was, frankly, disgusted. This is supposed to be a community of fans of Minecraft who like to mod the game in creative and interesting ways and make it do fun things most people would never have imagined. And then, when someone finds a way to tweak or improve your creation, and does so, all of a sudden it's an ethical crime?

So, I've lost interest in bothering with trying to pussyfoot around a community that has bad eggs in it like that. I am sorry to the one or two of you who actually cared about this little thing I had going, and if you have any questions about modding that I can answer, especially to do with creative uses of Reflection, class merging, decompilation, and recompilation, particularly for the purpose of adjusting the behavior of mods or base Minecraft, feel free to PM me, and if I know, I'll share my knowledge. (Perhaps you could create a thread in the new Modding discussion section, and PM me a link to it, so I see it and post my knowledge publicly.)

I do want to thank the people in this forum who have been supportive, both by providing knowlege and by providing interest in what I'd done. I'm going to keep posting on these forums and sharing what I know or continue to discover, and I'm going to continue enjoying playing the Technic Pack and watching it evolve as Minecraft evolves, but I'm going to keep my programming activities limited to my own personal copy (amusingly enough, that being what the ToS -does- allow, modding for personal non-distributed use).

As Direwolf says, take it easy.

Complete agreement with you on this Jakj. I don't/can't mod, but I find it silly how mod makers get to protective over thier mods.....

Link to comment
Share on other sites

Glad to hear you'll still stick around. The new modding section could use more people helping others learn to mod. I can for sure share your sentiments. Technic wouldn't have existed if not for the poor anti-community attitude of a lot of people. Have you considered doing a mod from scratch and refusing to put copyrights and things like that? It would be nice if a trend started of people making mods and not caring what people did with them as long as everyone was enjoying them.

Link to comment
Share on other sites

Glad to hear you'll still stick around. The new modding section could use more people helping others learn to mod.

Yes, I'm trying to remember to check into that forum. It would be really great if the forum software supported "subscribing" to a board, so I could check for newly-created threads as easily as I check for new replies in threads in which I've posted. Suppose I could just make a row of bookmarks in my browser at home, but my phone would take a few more clicks. (First-world problems, yeah, I know. :P)

I can for sure share your sentiments. Technic wouldn't have existed if not for the poor anti-community attitude of a lot of people. Have you considered doing a mod from scratch and refusing to put copyrights and things like that? It would be nice if a trend started of people making mods and not caring what people did with them as long as everyone was enjoying them.

Talking about copyrights specifically, I tend to prefer the GPL license, because it's proven to be upheld in a court of law in my country (US) even against DMCA, and I take comfort in the viral nature which expresses itself as "you will use my code to help the community as I have helped it or you will kindly fuck off". (I don't have any objection to simple public-domain release; It's just that I prefer the extra coating of "my way or the highway" to people who want to use my stuff to make other stuff that is restrictive.)

As to a mod from scratch...well, what would I do? Every good mod idea I've ever thought of is already being done (which I actually think is good, because that means I have lots of good mods to play with). The only ideas that aren't implemented are for inter-mod operability, like getting Finite Water to be recognized by Buildcraft, getting EE's covalence dust to work with Forestry items, creating a multi-tool to contain the masses of screwdrivers and wrenches and saws we have right now...

I do have a very small number of ideas for single interesting items, like a tool handle-arm that you could put an axe into, and it would work like treecapitator except not all at once: You would hold it against the tree, and it would chop from the outside in, using normal durability. I'm rather disheartened, though, considering I wouldn't even be using what I already made because that is based on EE.

I'm not worried, of course; I don't fear legal reprisal. I already have the code on my machine to do foolproof binary patching, meaning the absolute worst I could ever be charged with would be violation of Minecraft's ToS, which is a civil issue, not criminal, and Notch doesn't enforce that anyway.

It's just...why bother? Not for the mod authors: They don't want my ideas. Not for the average Minecraft player: "+1diamondlolol", no. The only people I respect are the ones here, and has already been shown, we can't even have mod-altering content on here without risk of mod authors coming in and trying to rain down holy fire.

Maybe I'll try again some time in the future; I don't know. If more mod authors manage to pull the sticks out of their asses, it might be worth trying.

Link to comment
Share on other sites

Yes, I'm trying to remember to check into that forum. It would be really great if the forum software supported "subscribing" to a board, so I could check for newly-created threads as easily as I check for new replies in threads in which I've posted. Suppose I could just make a row of bookmarks in my browser at home, but my phone would take a few more clicks. (First-world problems, yeah, I know. :P)

If you click the orange "New" button next to a boards title it shows you only threads with new posts. Closest thing we have to what you want I'm afraid.

It's just that I prefer the extra coating of "my way or the highway" to people who want to use my stuff to make other stuff that is restrictive.)

Isn't that what you've been mad about though? While it's not the same since what you'd like to enforce is more positive then usual, it's still down to "Use this how I say or don't" in either situation. In the end it's still people breaking MC's TOS making free mods forcing others to use them the way they dictate without any real legal grounds to do so. It just seems like drawing a line in some really grey mud.

Link to comment
Share on other sites

Isn't that what you've been mad about though? While it's not the same since what you'd like to enforce is more positive then usual, it's still down to "Use this how I say or don't" in either situation. In the end it's still people breaking MC's TOS making free mods forcing others to use them the way they dictate without any real legal grounds to do so. It just seems like drawing a line in some really grey mud.

The intention of the GPL (so far as I understand it) is that it is trying to effect actual social change, not just to be a license for people to use; That's sort of why people call it "viral" as a disparagement. In the strictest sense, you are correct, but just as restricting peoples' freedoms is damaging, so is not restricting them: A despotic attitude leads to people being ground into nothingness by an external force, but an anarchic attitude leads to people grinding each other into nothingness.

Hyperbole aside, the point of using the GPL is to try to spread the usage of the GPL, increasing awareness of the issue, trying to educate people as to why there are many situations where something is closed source just because that's what's usual or expected and not because it's actually better.

Releasing something as public domain serves the immediate purpose: Let people use it however they want. But there the author's influence ends: Cool that they made something neat, and cool that people like it, but...that's it.

Something like the GPL makes a statement: "I have made something, and I want you to use it; I want you to tell your friends about it, and I want your friends to tell others about it. I want my creation to have an impact, because people who want to modify it, to include it in their own work, need to think for just a moment about what the GPL really means and how it affects what they want to do. I want them to understand the GPL, and I want to convince them that constructive sharing is better than closed-minded restrictiveness."

So yeah, it's putting an onus on people who want to mess with my stuff just as the mod authors are putting onuses on us when we try to mess with their stuff. However, my motive is different, and I personally feel that removing someone's right to remove someone else's right is actually the proper thing to do.

(And obviously, yes, all of this discussion relates to only those portions of the code which are not directly tied to the Minecraft or a mod's source, so the lesser part of any mod, but it's a point still.)

Link to comment
Share on other sites

"Fair Enough" - Notch, 2011

Was interested to see if you were aware of the irony in your standpoint but you were! And your stance is "Fuck it, for the good of the people!" which I can get behind. Sometimes you have to brute force positive change. It's what we did, and people are finally starting to get it.

Link to comment
Share on other sites

Yes, I'm trying to remember to check into that forum. It would be really great if the forum software supported "subscribing" to a board, so I could check for newly-created threads as easily as I check for new replies in threads in which I've posted.

...

Try the "Notify" button on the top of the board, rather than thetop of the thread. It'll tell you when there is a new thread posted.

...creating a multi-tool to contain the masses of screwdrivers and wrenches and saws we have right now...

With a little work I think I may have this done. If not, I'll have to import a few long tons of dependencies and then do it.

Link to comment
Share on other sites

With a little work I think I may have this done. If not, I'll have to import a few long tons of dependencies and then do it.

The easiest way to do it is to create a simple item with NBT inventory that holds the tools (so it can contain wrenches, screwdrivers, whatever; You can use reflection to get the item references or IDs with loaded mods (and you can prevent crashes due to missing classes by simply checking for exceptions when doing the reflection).

When someone right-clicks on a block using your multitool, the hackish way would be to just issue the right-click call with every object the multi-tool contains, but the better way would be to figure out which tool is appropriate based on the block ID (redpower block, IC2 machine, logistics pipe, etc.) and then check the multi-tool to see if it contains that item, issuing the right-click call if it does.

Link to comment
Share on other sites

Actually I was just going to have a shapeless recipe that spat out a multitool. This is the first mod I've even started, so it wasn't going to be great, to say the least. Overpowered? Most likely, yes. I just don't want to have to import the railcraft, IC2, BC, whatever else there is stuff to make a one-item mod.

Link to comment
Share on other sites

Actually I was just going to have a shapeless recipe that spat out a multitool. This is the first mod I've even started, so it wasn't going to be great, to say the least. Overpowered? Most likely, yes. I just don't want to have to import the railcraft, IC2, BC, whatever else there is stuff to make a one-item mod.

You don't have to import anything. All you do is look at the mod's source to see what the names of the classes and members are, and import them. I'll attach my Reflection utility code so you can see.

public class EquivalentExchange

{

	public static class CovalenceDust

	{

		public static boolean Available ;



		public static final String ClassName = "ee.EEItem" ;

		public static final String FieldName = "covalenceDust" ;



		public static Item Item ;



		public static void Load ( )

		{

			Item = ( Item ) Reflection . GetFieldContents ( ClassName , FieldName , true ) ;



			if ( Item != null )

			{

				Available = true ;

			}

		}



		public static final int LowIndex = 0 ;

		public static final int MidIndex = 1 ;

		public static final int HighIndex = 2 ;



		public static boolean StackIs ( ItemStack Stack )

		{

			return ( StackUtil . StackIs ( Stack , Item ) ) ;

		}



		public static boolean StackIs ( ItemStack Stack , int Tier )

		{

			return ( StackUtil . StackIs ( Stack , Item , Tier ) ) ;

		}



		public static boolean StackIsLow ( ItemStack Stack )

		{

			return ( StackIs ( Stack , LowIndex ) ) ;

		}



		public static boolean StackIsMid ( ItemStack Stack )

		{

			return ( StackIs ( Stack , MidIndex ) ) ;

		}



		public static boolean StackIsHigh ( ItemStack Stack )

		{

			return ( StackIs ( Stack , HighIndex ) ) ;

		}



		public static ItemStack Stack ( int Quantity , int Tier )

		{

			return ( new ItemStack ( Item , Quantity , Tier ) ) ;

		}



		public static ItemStack LowStack ( int Quantity )

		{

			return ( Stack ( Quantity , LowIndex ) ) ;

		}



		public static ItemStack MidStack ( int Quantity )

		{

			return ( Stack ( Quantity , MidIndex ) ) ;

		}



		public static ItemStack HighStack ( int Quantity )

		{

			return ( Stack ( Quantity , HighIndex ) ) ;

		}

	}



	public static void Load ( )

	{

		CovalenceDust . Load ( ) ;

	}

}





package Jakj . FairTrade ;



import java . lang . reflect . Constructor ;

import java . lang . reflect . Field ;

import java . lang . reflect . Method ;



public class Reflection

{

	public static Class GetClass ( String ClassName )

	{

		try

		{

			return ( Class . forName ( ClassName ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Constructor GetConstructor ( String ClassName , Class ... ConstructorParameters )

	{

		return ( GetConstructor ( GetClass ( ClassName ) , ConstructorParameters ) ) ;

	}



	public static Constructor GetConstructor ( Class Class , Class ... ConstructorParameters )

	{

		try

		{

			return ( Class . getConstructor ( ConstructorParameters ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Object InvokeConstructor ( Class Class )

	{

		try

		{

			return ( Class . newInstance ( ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Object InvokeConstructor ( Constructor Constructor , Object ... ConstructorArguments )

	{

		try

		{

			return ( Constructor . newInstance ( ConstructorArguments ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Field GetField ( String ClassName , String FieldName , boolean Accessible )

	{

		return ( GetField ( GetClass ( ClassName ) , FieldName , Accessible ) ) ;

	}



	public static Field GetField ( Class Class , String FieldName , boolean Accessible )

	{

		try

		{

			if ( Accessible )

			{

				return ( Class . getField ( FieldName ) ) ;

			}

			else

			{

				Field Field = Class . getDeclaredField ( FieldName ) ;



				Field . setAccessible ( true ) ;



				return ( Field ) ;

			}

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Object GetFieldContents ( Field Field )

	{

		return ( GetFieldContents ( Field , null ) ) ;

	}



	public static Object GetFieldContents ( Field Field , Object ClassInstance )

	{

		try

		{

			return ( Field . get ( ClassInstance ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Method GetMethod ( String ClassName , String MethodName , Class ... MethodParameters )

	{

		return ( GetMethod ( GetClass ( ClassName ) , MethodName , MethodParameters ) ) ;

	}



	public static Method GetMethod ( Class Class , String MethodName , Class ... MethodParameters )

	{

		try

		{

			return ( Class . getMethod ( MethodName , MethodParameters ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}



	public static Object InvokeStaticMethod ( Method Method , Object ... MethodArguments )

	{

		return ( InvokeMethod ( Method , null , MethodArguments ) ) ;

	}



	public static Object InvokeMethod ( Method Method , Object ClassInstance , Object ... MethodArguments )

	{

		try

		{

			return ( Method . invoke ( ClassInstance , MethodArguments ) ) ;

		}

		catch ( Exception Exception )

		{

			Log . Write ( Exception ) ;



			return ( null ) ;

		}

	}

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Announcements

  • Anything claiming to be official Technic servers are not allowed here, for obvious reasons



×
×
  • Create New...