- package com.malkierian.redstonechips.ClockDisplay;
- import org.bukkit.command.CommandSender;
- import org.tal.redstonechips.circuit.Circuit;
- public class dclock extends Circuit {
- private enum chipMode {
- hour,
- minute_double
- }
- private chipMode mode;
- @Override
- protected boolean init(CommandSender sender, String[] args) {
- if(inputs.length < 7 && (inputs.length != 5 && inputs.length != 6))
- {
- error(sender, "Not enough inputs! Hours = 5, minutes = 6.");
- return false;
- }
- else if(inputs.length >= 7)
- {
- error(sender, "Too many inputs! Hours = 5, minutes = 6.");
- return false;
- }
- if(args.length > 0)
- {
- error(sender, "ClockDisplay does not take any arguments.");
- return false;
- }
- if(inputs.length == 5)
- {
- if(outputs.length != 8)
- {
- error(sender, "Missing outputs for hour mode. Needs 8.");
- return false;
- }
- mode = chipMode.hour;
- }
- return true;
- }
- private boolean bits[];
- private int halfday = 12;
- @Override
- public void inputChange(int inIdx, boolean state) {
- if(mode == chipMode.hour)
- {
- outputBits.clear();
- for(int i = 0; i < 5; i++)
- {
- bits[i] = inputBits.get(i);
- }
- if(bits[4])
- {
- if(bits[3])
- {
- sendInt(0, outputs.length, hourIndex[0]);
- return;
- }
- else if(bits[2])
- {
- if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[6]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[5]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[4]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[3]);
- }
- }
- else if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[2]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[1]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[12]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[11+halfday]);
- }
- }
- else if(bits[3])
- {
- if(bits[2])
- {
- if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[10+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[9+halfday]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[8+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[7+halfday]);
- }
- }
- else if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[6+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[5+halfday]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[4+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[3+halfday]);
- }
- }
- else if(bits[2])
- {
- if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[2+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[1+halfday]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[12+halfday]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[11]);
- }
- }
- else if(bits[1])
- {
- if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[10]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[9]);
- }
- }
- else if(bits[0])
- {
- sendInt(0, outputs.length, hourIndex[8]);
- }
- else
- {
- sendInt(0, outputs.length, hourIndex[7]);
- }
- }
- }
- private int hourIndex[] = {
- 0,
- 1,
- 2,
- 4,
- 8,
- 16,
- 32,
- 64+1,
- 64+2,
- 64+4,
- 64+8,
- 64+16,
- 64+32,
- 128+1,
- 128+2,
- 128+4,
- 128+8,
- 128+16,
- 128+32,
- 128+64+1,
- 128+64+2,
- 128+64+4,
- 128+64+8,
- 128+64+16,
- 128+64+32
- };
- }