generated from nea89o/Forge1.8.9Template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
restructured for inheritance, implemented elementa for features, added clock feature
- Loading branch information
Showing
20 changed files
with
6,969 additions
and
43 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,55 +1,68 @@ | ||
@file:SuppressWarnings("unused") | ||
package com.github.shmoe6.melody | ||
|
||
import com.github.shmoe6.melody.command.MelodyCommand | ||
import com.github.shmoe6.melody.command.SimulateCommand | ||
import com.github.shmoe6.melody.command.TestCommand | ||
import com.github.shmoe6.melody.features.* | ||
import com.github.shmoe6.melody.features.combat.DisplayArrowCount | ||
import com.github.shmoe6.melody.features.farming.GardenVisitorDisplay | ||
import com.github.shmoe6.melody.features.general.SilenceSkyBlockNotifications | ||
import com.github.shmoe6.melody.features.inventory.HideEffectsHud | ||
import com.github.shmoe6.melody.features.inventory.LockSlots | ||
import com.github.shmoe6.melody.features.inventory.MissingMaxEnchantments | ||
import com.github.shmoe6.melody.features.mining.WormCooldownTimer | ||
import com.github.shmoe6.melody.features.overlay.Clock | ||
import com.github.shmoe6.melody.handlers.* | ||
import net.minecraft.client.Minecraft | ||
import net.minecraft.client.gui.GuiScreen | ||
import net.minecraft.init.Blocks | ||
import net.minecraft.util.StringUtils | ||
import net.minecraftforge.client.ClientCommandHandler | ||
import net.minecraftforge.common.MinecraftForge | ||
import net.minecraftforge.fml.common.Mod | ||
import net.minecraftforge.fml.common.event.FMLInitializationEvent | ||
|
||
@Mod(modid = "melody", useMetadata = true) | ||
class Melody { | ||
fun String.stripControlCodes(): String = StringUtils.stripControlCodes(this) | ||
|
||
@Mod.EventHandler | ||
fun init(event: FMLInitializationEvent) { | ||
try { | ||
val resource: net.minecraft.client.resources.IResource = Minecraft.getMinecraft().getResourceManager() | ||
val resource: net.minecraft.client.resources.IResource = Minecraft.getMinecraft().resourceManager | ||
.getResource(net.minecraft.util.ResourceLocation("test:test.txt")) | ||
org.apache.commons.io.IOUtils.copy(resource.getInputStream(), java.lang.System.out) | ||
org.apache.commons.io.IOUtils.copy(resource.inputStream, java.lang.System.out) | ||
} catch (e: java.io.IOException) { | ||
throw java.lang.RuntimeException(e) | ||
} | ||
|
||
println("Dirt: ${Blocks.dirt.unlocalizedName}") | ||
|
||
// register general event handlers | ||
MinecraftForge.EVENT_BUS.register(overlayHandler) | ||
MinecraftForge.EVENT_BUS.register(TickHandler) | ||
|
||
// register feature-specific event handlers | ||
MinecraftForge.EVENT_BUS.register(Clock) | ||
MinecraftForge.EVENT_BUS.register(DisplayArrowCount) | ||
MinecraftForge.EVENT_BUS.register(GardenVisitorDisplay) | ||
MinecraftForge.EVENT_BUS.register(HideEffectsHud) | ||
MinecraftForge.EVENT_BUS.register(LockSlots) | ||
MinecraftForge.EVENT_BUS.register(MissingMaxEnchantments) | ||
MinecraftForge.EVENT_BUS.register(SilenceSkyBlockNotifications) | ||
MinecraftForge.EVENT_BUS.register(WormCooldownTimer) | ||
|
||
// register other event handlers | ||
MinecraftForge.EVENT_BUS.register(TickHandler) | ||
|
||
// register commands | ||
ClientCommandHandler.instance.registerCommand(MelodyCommand) | ||
ClientCommandHandler.instance.registerCommand(SimulateCommand) | ||
ClientCommandHandler.instance.registerCommand(TestCommand) | ||
|
||
doneLoading = true | ||
} | ||
|
||
companion object { | ||
const val MODID = "MELODY" | ||
var doneLoading = false | ||
var currentWorld: String? = null | ||
var currentGui: GuiScreen? = null | ||
val overlayHandler = OverlayHandler | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 0 additions & 21 deletions
21
src/main/kotlin/com/github/shmoe6/melody/features/DisplayArrowCount.kt
This file was deleted.
Oops, something went wrong.
6 changes: 6 additions & 0 deletions
6
src/main/kotlin/com/github/shmoe6/melody/features/MelodyFeature.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.github.shmoe6.melody.features | ||
|
||
interface MelodyFeature { | ||
|
||
fun isFeatureEnabled(): Boolean | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/kotlin/com/github/shmoe6/melody/features/MelodyFeatureRenderable.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.github.shmoe6.melody.features | ||
|
||
import gg.essential.elementa.UIComponent | ||
import gg.essential.elementa.components.UIText | ||
|
||
interface MelodyFeatureRenderable : MelodyFeature { | ||
|
||
var xPos: Int | ||
var yPos: Int | ||
var mainUiComponent: UIText | ||
} |
50 changes: 50 additions & 0 deletions
50
src/main/kotlin/com/github/shmoe6/melody/features/combat/DisplayArrowCount.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package com.github.shmoe6.melody.features.combat | ||
|
||
import com.github.shmoe6.melody.Melody | ||
import com.github.shmoe6.melody.core.MelodyConfig | ||
import com.github.shmoe6.melody.features.MelodyFeatureRenderable | ||
import gg.essential.elementa.components.UIText | ||
import gg.essential.elementa.dsl.constrain | ||
import gg.essential.elementa.dsl.pixels | ||
import net.minecraft.client.Minecraft | ||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent | ||
import net.minecraftforge.fml.common.gameevent.TickEvent | ||
import scala.swing.Applet.UI | ||
|
||
object DisplayArrowCount : MelodyFeatureRenderable { | ||
|
||
override var xPos: Int = 550 | ||
override var yPos: Int = 450 | ||
override var mainUiComponent: UIText = UIText().constrain { | ||
x = xPos.pixels | ||
y = yPos.pixels | ||
} | ||
|
||
init { | ||
|
||
Melody.overlayHandler.overlay.addToScreen(this) | ||
} | ||
|
||
@SubscribeEvent | ||
fun onTick(event: TickEvent) { | ||
val player = Minecraft.getMinecraft().thePlayer | ||
|
||
if (!isFeatureEnabled() || player?.inventory?.mainInventory?.get(8)?.displayName?.contains("Quiver") == false) { | ||
clearText() | ||
return | ||
} | ||
|
||
val numArrows = player?.inventory?.mainInventory?.get(8)?.getTooltip(player, false)?.get(5) | ||
(this.mainUiComponent as UIText).setText("$numArrows") | ||
} | ||
|
||
private fun clearText() { | ||
if ((this.mainUiComponent as UIText).getText() != "") { | ||
(this.mainUiComponent as UIText).setText("") | ||
} | ||
} | ||
|
||
override fun isFeatureEnabled(): Boolean { | ||
return MelodyConfig.displayArrowCountEnabled | ||
} | ||
} |
2 changes: 1 addition & 1 deletion
2
...6/melody/features/GardenVisitorDisplay.kt → .../features/farming/GardenVisitorDisplay.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 1 addition & 3 deletions
4
.../features/SilenceSkyBlockNotifications.kt → ...s/general/SilenceSkyBlockNotifications.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
66 changes: 66 additions & 0 deletions
66
src/main/kotlin/com/github/shmoe6/melody/features/inventory/LockSlots.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package com.github.shmoe6.melody.features.inventory | ||
|
||
import com.github.shmoe6.melody.core.MelodyConfig | ||
import com.github.shmoe6.melody.mixin.IsMouseOverSlotAccessor | ||
import net.minecraft.client.Minecraft | ||
import net.minecraft.client.gui.inventory.GuiInventory | ||
import net.minecraft.inventory.Slot | ||
import net.minecraftforge.client.event.GuiOpenEvent | ||
import net.minecraftforge.client.event.GuiScreenEvent | ||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent | ||
import org.lwjgl.input.Keyboard | ||
import org.lwjgl.input.Mouse | ||
|
||
object LockSlots { | ||
|
||
private var allowSlotLockEditing: Boolean = false | ||
|
||
@SubscribeEvent | ||
fun onGuiOpen(event: GuiOpenEvent) { | ||
if (!MelodyConfig.lockSlotsEnabled) return | ||
|
||
allowSlotLockEditing = (event.gui is GuiInventory) | ||
} | ||
|
||
@SubscribeEvent | ||
fun onKeyInput(event: GuiScreenEvent) { | ||
|
||
//println("Event triggered. L pressed: ${Keyboard.isKeyDown(Keyboard.KEY_L)}, editing enabled: ${this.allowSlotLockEditing}") | ||
if (!MelodyConfig.lockSlotsEnabled || !allowSlotLockEditing || !Keyboard.isKeyDown(Keyboard.KEY_L)) return | ||
|
||
//println("Condition passed") | ||
val inventory = Minecraft.getMinecraft().thePlayer.inventory | ||
val guiWidth = event.gui.width | ||
val guiHeight = event.gui.height | ||
val mouseX = Mouse.getEventX() * guiWidth / Minecraft.getMinecraft().displayWidth | ||
val mouseY = guiHeight - Mouse.getEventY() * guiHeight / Minecraft.getMinecraft().displayHeight | ||
|
||
fun isMouseOverSlot(slotIn: Slot, mouseX: Int, mouseY: Int) = (event.gui as IsMouseOverSlotAccessor).isMouseOverSlot_melody(slotIn, mouseX, mouseY) | ||
|
||
var hoveredItemIndex: Int? = null | ||
inventory.mainInventory.indices.forEach { | ||
val slotToCheck = Minecraft.getMinecraft().thePlayer.openContainer.inventorySlots[it] as Slot | ||
|
||
if (isMouseOverSlot(slotToCheck, mouseX, mouseY)) { | ||
hoveredItemIndex = it | ||
println("Mouse over slot!") | ||
|
||
val currentLockedSlots = HashSet<String>() | ||
MelodyConfig.lockedSlots.removePrefix("[").removeSuffix("]").split(",").forEach { slotIndex -> | ||
if (currentLockedSlots.contains(slotIndex)) { | ||
currentLockedSlots.remove(slotIndex) | ||
println("Slot $slotIndex unlocked!") | ||
} else { | ||
currentLockedSlots.add(slotIndex) | ||
println("Slot $slotIndex locked!") | ||
} | ||
|
||
println(currentLockedSlots) | ||
MelodyConfig.lockedSlots = currentLockedSlots.toString() | ||
} | ||
} | ||
} | ||
|
||
// println("Event handling finished. Hovered slot: $hoveredItemIndex") | ||
} | ||
} |
2 changes: 1 addition & 1 deletion
2
...melody/features/MissingMaxEnchantments.kt → ...tures/inventory/MissingMaxEnchantments.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.