ShetiPhian
Members-
Posts
198 -
Joined
-
Last visited
Converted
-
Gender
Male
-
URL
http://tomkinsbros.wikispaces.com/
-
Location
Canada
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
ShetiPhian's Achievements
Creeper Killer (4/8)
49
Reputation
-
I don't know if this is a Forge issue or something that needs to be updated mod side. If you have a mod that uses the Forge javascript asm, and one that uses Mixin to change methods in the same class, prior to 33.0.40 the two could coexist but afterwards Mixin crashes. Up to 33.0.34; works 33.0.35; Crashed: ClassCastException (this looks to be unrelated) 33.0.36 and 33.0.37; works 33.0.40; Crashed: MixinInitialisationError 33.0.41 and up; Crashed: ReEntrantTransformerError: Re-entrance error org.spongepowered.asm.mixin.transformer.throwables.ReEntrantTransformerError: Re-entrance error. at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:278) at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:206) at org.spongepowered.asm.mixin.transformer.MixinTransformationHandler.processClass(MixinTransformationHandler.java:109) at org.spongepowered.asm.launch.MixinLaunchPlugin.processClass(MixinLaunchPlugin.java:135) at cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:154) at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) Mod using JavaScript: https://www.curseforge.com/minecraft/mc-mods/shetiphiancore/files/3054955 Mod using Mixin: https://www.curseforge.com/minecraft/mc-mods/botania/files/3049237 - Dependencies: -- https://www.curseforge.com/minecraft/mc-mods/patchouli/files/3037298 -- https://www.curseforge.com/minecraft/mc-mods/curios/files/3042479
-
Damn, Kinda what I figured but was hoping I was wrong. Thank you.
-
It is possible to define a conditional dependency? I keep getting bug reports about some of my models being broken, but the issues is due to Optifine. Optifine by itself breaks mod added model loaders, OptiForge fixes this. I would like to say if Optifine exists require OptiForge I've thought maybe adding lines to my toml that makes Optifine dependent on OptiForge, but I feel that is not something I should do as neither mod is mine and it might break something later.
-
I'm only using sign and blocks but all appear to be available: paintings, mob_effects, particles, blocks, signs, banner_patterns, shield_patterns, chest, beds, shulker_boxes In my main files class constructor I have final IEventBus MOD_EVENT_BUS = FMLJavaModLoadingContext.get().getModEventBus(); DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> { MOD_EVENT_BUS.addListener(this::onTextureStitchedEvent); }); and the method its pointing to @OnlyIn(Dist.CLIENT) private void onTextureStitchedEvent(TextureStitchEvent.Pre event) { AtlasTexture atlas = event.getMap(); }
-
[SOLVED][1.15] What replaces IModel.retexture ?
ShetiPhian replied to ShetiPhian's topic in Modder Support
Ran into this issue again, The wrapper works perfectly with json models, but it doesn't work on obj models. Is there a way to retexture an obj model that I'm just not seeing? Ignore; for anyone wondering, I forgot to add the # in front of the texture name in the mtl file. -
If i'm recalling correctly, Minecraft passes a dummy when setting up its solid block cache, and then uses that cache when checking if it needs to push an entity out of a block. Glad it worked, its no fun getting stuck on something. A few days ago I spend hours running circles on some 1.15 rendering code (not what I posted here), finding the fix was only one line was both a relief and devastating due to the wasted time.
-
On my conditionally solid block I'm checking if the context is a dummy, but its been so long I can't remember why. (I know it was due to in issue, but that's it) if (context == ISelectionContext.dummy() || context.getEntity() instanceof PlayerEntity) { return VoxelShapes.empty(); } return VoxelShapes.fullCube(); or if you don't need the if block for other code you can make it one line. return (context == ISelectionContext.dummy() || context.getEntity() instanceof PlayerEntity) ? VoxelShapes.empty() : VoxelShapes.fullCube();
-
I'm updating a few multipart blocks that use the texture of the blocks they where crafted with, but have gotten stuck on how to retexture the models. While the sub models are combining and rendering correctly (minus textures) I figure listing what I've done may help. Switched from IModelLoader to IModelLoader, and redirected the json files. Had to switch to IModelGeometry from IUnbakedModel, and with the loss of getDependencies the extra models are now loaded via ModelLoader.addSpecialModel during FMLClientSetupEvent. I'm still using a IBakedModel just called from IModelGeometry.bake now. In the getQuads method I'm pulling the a list of submodels and textures from the IModelData (which is set in the tileentity) The needed submodels are looped over getting each IUnbakedModel via ModelLoader.instance().getModelOrMissing (was using ModelLoaderRegistry.getModel before) At this point I retextured the model via IModel.retexture then baked the submodel, but currently am only baking the model. Finally adding all the quads and returning the list The only thing I haven't found the replacement for is retexture. I have the model's resource location, and a Map of keys(string) and textures(resource location in string form) Edit: I have a working solution, don't believe its the best one, but its something for now. Just created a wrapper around BlockModel that overrides resolveTextureName.
-
Thank you, that was just the jump start my brain needed. While carefully looking over your linked files, and comparing to my test ones, I noticed the dumb mistake in my test work space. a typo in the path Knowing without a doubt it does work, I started looking over my main work space, and remembered an issue I had early in 1.12. (resource changes stopped building) So just like before I deleted the build folder. Now tags added to the forge domain work.
-
At first I thought maybe I was using too old of a Forge build so updated it to 1.14.4-28.2.3 Then I figured maybe something was off in my environment, so I tested with a clean 'examplemod' How does one register a new global tag? The docs just mention using the forge domain but that doesn't seem to be enough. I can add to existing tags in the minecraft and forge domains, and I can add new tags to the mods domain, but any new tags outside of the mods domain is unusable in recipes, loot tables and code. Tag "test.json" { "replace": false, "values": [ "minecraft:dead_bush", "minecraft:fern" ] } Recipe: { "type": "minecraft:crafting_shapeless", "ingredients": [ { "tag": "examplemod:test" } ], "result": { "item": "minecraft:dirt" } } With the tag located at "data.examplemod.tags.items" the recipe works. Moving it to "data.forge.tags.items" and changing the recipe to "forge:test" results in the error "com.google.gson.JsonSyntaxException: Unknown item tag 'forge:test'", and the recipe does not work. Trying again with the tag at "data.minecraft.tags.items" and updating the recipe causes a similar error "com.google.gson.JsonSyntaxException: Unknown item tag 'minecraft:test'" and again the recipe fails. Even gave "global", "common" and "c" a try but same issue. So it looks like adding the new json file is only part of the requirements. (and is the only requirement when within your own domain) Do I need to create and register a TagProvider? - If so, what happens when more the one mod registers a provider for the same file? (as that would be the case for all mod added provided global tags at multiple mods access) - If not, what am I missing? or is this ore dictionary feature not yet implemented for tags?
-
While updating my blocks I've found some issues with rotate, so I'm sharing my thoughts and proving a suggested fix. Starting with the parameters. The addition of 'Rotation' is quite helpful as now tools can indicate direction, but the removal of EnumFacing(Direction) hurts the usability as you can no longer rotate based on the face clicked (eg. axis rotation) Therefore I'm suggesting re-adding Direction, and while we're at it there is no harm in adding Entity as well Now for the bigger issue, the return type changing from boolean to BlockState. This should be reverted. Prior to 1.13 the boolean return was simple, true if the block rotated and false if not. Therefore blocks handled their own rotation and tools handled their durability based on the boolean. 1.13 and beyond returns a BlockState, and looking at the vanilla blocks indicates the tool is now responsible for rotating the block to the value returned. This works fine for single blocks that only rotate, but causes issues with blocks that need to update connected blocks. (even the vanilla beds don't rotate correctly) If the block updates it's connected blocks, then the tool doesn't update the originals state, the multi block is broken. You could just use the neighbor changed method to update connected blocks, but that requires additional checks etc, and fails if the tool didn't have the state change flag set to notify. Here is the proposed reworked method: default boolean rotate(BlockState state, IWorld world, BlockPos pos, Rotation rotation, Direction direction, Entity entity) { Block block = state.getBlock(); if (!(block instanceof BedBlock) && !(block instanceof PistonHeadBlock)) { BlockState result = state.rotate(rotation); if (result != world.getBlockState(pos)) { return world.setBlockState(pos, state, 3); } } return false; } If others agree, anyone is free to take the code and create a pull request.
-
Your examples have a character after the players name, but the regex isn't looking for it. This may work for you (its basically what you had but shortened and captures the character at the end): "\\w+ [ |\\w]+ (by|of|to|for) " + Minecraft.getMinecraft().thePlayer.getName() + "." Or this one if you want to use capture groups to grab the name to keep track of how often a player is killed "(\\w+) [ |\\w]+ (by|of|to|for) " + Minecraft.getMinecraft().thePlayer.getName() + "." I use this url when working with regex: https://regex101.com If that still doesn't work you'll want to verify the messages received are in the format you expect.
-
[1.13.2]Network warning/error and GuiConatiner problem
ShetiPhian replied to WOTBLITZ's topic in Modder Support
I know this topic is a bit old, but I just had the same issue and a Google search points here. If your packet is working correctly, and its just the warning in the log, you've likely made the same mistake as me. Inside the "messageConsumer" you provided when registering your packet, you need to set the packet handled flag to true. "context.get().setPacketHandled(true);" If it isn't set to true, NetworkHooks.onCustomPayload will return false, and ClientPlayNetHandler.handleCustomPayload will post the warning -
Is there a new way to outline individual sub blocks? What about setting the subHit variable on a RayTraceResult? I haven't yet had much free time to look 1.14 over, so may have missed it, and figured it was better to ask here then possibly make an unneeded pull request updating this one to 1.14: https://github.com/MinecraftForge/MinecraftForge/pull/5354 Looks like the new hook would be in "IBlockReader.func_217296_a" changing the first return into a variable update, and make the other return the result of the method added in the 1.13 PR
-
With "The Flattening" in 1.13 many of my TileEntities can be removed. A way to get the NBT data of any in the save file that are not registered would be very helpful for world porting, as the data within would be used to set the BlockState. 1.13 may already have a way to do this, as it has a a way to remap BlockStates, or a Forge developer has already though of this, but I figured mention it now so it doesn't get overlooked